應用開源工具監控企業局域網安全:原理及準備工作
企業除了需要具備系統和設備的監控功能外,還需要對其網絡使用狀況進行周密的監控、處理和優化,才能切實地保證企業信息安全。在企業級Linux操作系統中,提供了許多優秀的開源網絡監控工具輔助網絡管理人員和信息安全工作人員來進行網絡監控和管理。因此,本文將挑選一個企業應用最為廣泛和穩定的Cacti工具來進行介紹。
Cacti主要功能簡介
Cacti是一個隨著時間推移(時間序列數據)用圖表顯示系統和網絡信息的網絡監測工具,并提供一個全功能的Web界面,可以瀏覽和檢查網絡設備的實時性能。例如,可以配置Cacti來監控經過本地服務器上的網絡端口、本地網絡上的交換機和路由器端口的網絡流量。Cacti圖形提供網絡各個部分的流量級別信息。例如,當網絡速度很慢時,可以參考歷史圖表,查看是否發生了任何超出普通網絡流量的事情,Cacti可以收集CPU利用率、磁盤空間使用率、Web服務器上的頁面瀏覽量和本地網絡上的幾乎所有其它數據。
Cacti收集隨著時間推移的基線(典型值)數據??梢允褂眠@些信息來增加對系統和網絡實時行為的洞察力,并幫助解決問題。這些信息甚至可以預測未來可能發生的事情(例如,當磁盤很可能被占滿時)。當安裝并配置Cacti時,它會定期輪詢網絡設備以獲取所需數據,并把數據存儲在RRD文件,用于RRDtool(輪循數據庫工具)。Cacti Web界面允許瀏覽設備和圖形列表,并可看到隨著時間推移的設備的可視化表示。
Cacti是下一代監測工具的一部分。它是在從以往工具吸取教訓的基礎上構建的,如MRTG和Cricket工具。這些工具都具有以下功能:
定期輪詢跟蹤設備數據。收集這些數據最常用的工具是SNMP(簡單網絡管理協議; www.net- snmp.org)。
把數據存儲在一個RRD文件。
具有Web界面,可以檢查從存儲數據生成的圖表。這些圖表通常顯示每天、每周、每月和每年的信息。
Cacti的配置是通過其Web界面來實現的,而MRTG和Cricket的配置是通過編輯文本文件來實現。RRD文件和RRDtool是Cacti許多功能的關鍵。Cacti網站將Cacti描述為“完整的基于RRDtool的圖形解決方案。”RRD文件存儲有效的時間序列數據,通過使用聚合功能,更容易保存最近時間段的大量細節信息,但逐漸減少Cacti文件中時間較長的細節數據。RRDtool可以很容易地從RRD文件產生既簡單又復雜的圖形。
使用前準備
1. 配置SNMP
如果想監控本地系統上的數據源,首先在本地系統上安裝和運行SNMP守護進程。
2. 設置LAMP
Cacti是一個LAMP(Linux、Apache、MySQL和PHP)應用程序,在配置Cacti之前必須安裝和配置這些應用程序。本節說明如何在運行Cacti的系統上設置該軟件。默認情況下,Cacti設置本地系統來運行Cacti,并作為數據源。
設置LAMP時使用名為mysql和cacti的MySQL數據庫。安裝MySQL時Fedora/RHEL設置mysql數據庫。需要設置以下數據庫用戶。每個帳戶都應該有密碼:
為mysql數據庫設置root用戶。此用戶必須被命名為root。MySQL安裝腳本設置這個用戶。
為mysql數據庫設置cactiuser用戶。可以更改此用戶名,但Cacti安裝時,設置Cacti使用cactiuser。
為cacti數據庫設置Cacti管理用戶。正如安裝Cacti時的設置,此用戶具有admin用戶名和admin密碼??梢栽O置另外的Cacti用戶帳戶。
1)事先安裝軟件包
安裝以下軟件包:
cacti(僅Fedora; 從fedoraproject.org/wiki/EPEL下載RHEL的Cacti) mysql mysql-server php(和cacti一起安裝) httpd(Apache與cacti一起安裝) rrdtool(與cacti一起安裝) net-snmp(可選;只需要監視本地系統) net-snmp-utils(可選)
2)防火墻設置
snmpd守護程序運行在由Cacti監控的系統上,使用UDP端口161。如果監控系統運行著防火墻或在防火墻后面,則必須打開此端口。使用system-config-firewall,選擇“其它端口”選項卡,勾選User Defined復選框,并添加UDP端口161。如果想從沒有運行Cacti的系統上的瀏覽器中使用Cacti,則需要在運行Cacti的系統上打開TCP端口80。
3)SELinux設置
當設置SELinux使用目標策略時,httpd(系統上運行Cacti)和snmpd(在被監測的系統上)都由SELinux保護。如果有必要,可以禁用此保護。
4)配置MySQL
安裝MySQL,運行chkconfig,并啟動mysqld守護進程。一定要通過使用mysql_secure_installation或mysqladmin為MySQL的root用戶指定密碼。
5)創建cacti數據庫
下一步使用以下命令來創建cacti數據庫,創建mysql數據庫的cactiuser用戶,授予該用戶必要的權限,并給該用戶分配密碼。用你選擇的密碼替換以下例子中的cactipassword。盡管FLUSH PRIVILEGES語句不是必需的,但最好包含它。
# mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.5.10 MySQL Community Server (GPL) ... mysql> CREATE DATABASE cacti; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL ON cacti.* -> TO cactiuser@localhost -> IDENTIFIED BY 'cactipassword'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye
6)設置和移植cacti數據庫
使用下面的命令來設置和移植cacti數據庫。當MySQL提示輸入密碼,提供MySQL的root用戶密碼(不是MySQL的cactiuser用戶)。
# mysql -p cacti < /usr/share/doc/cacti*/cacti.sql Enter password:
如果有SQL語法錯誤,上述命令會失敗。要解決這個錯誤,編輯cacti.sql并刪除出現的所有字符串TYPE=MyISAM(即用空字符串替代每個TYPE=MyISAM字符串:s/TYPE=MyISAM//)。
在安裝時,/etc/cacti/db.php文件中的大多數信息都是正確的。編輯這個文件來更改賦予$database_password的值,從cactiuser更改為創建cacti數據庫時(MySQL 的cactiuser用戶的密碼)為cactipassword使用的相同值。不要更改賦予$database_username的值。
$database_type = "mysql"; $database_default = "cacti"; $database_hostname = "localhost"; $database_username = "cactiuser"; $database_password = "cactiuser"; $database_port = "3306";
7)配置 Apache
安裝Apache并運行chkconfig并使用service來啟動httpd守護進程。Cacti提供該內容。/etc/httpd/conf.d/cacti.conf文件控制Apache服務器上Cacti的位置和可訪問性。默認情況下,Cacti提供127.0.0.1/cacti(基于別名聲明),只有127.0.0.1上的用戶(非localhost;基于Allow from語句)可以訪問Cacti。默認的cacti.conf文件如下:
$ cat /etc/httpd/conf.d/cacti.conf # # Cacti: An rrd based graphing tool # Alias /cacti /usr/share/cacti < Directory /usr/share/cacti/> Order Deny,Allow Deny from all Allow from 127.0.0.1 < /Directory>
要遵循本節中的例子,立即在Allow from 127.0.0.1下面添加Allow from localhost行??梢蕴砑宇~外的行以允許從其它系統訪問。以下的容器允許從127.0.0.1、localhost以及位于172.16.192.150的遠程系統來訪問:
Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from localhost Allow from 172.16.192.150 < /Directory>