企业除了需要具备系统和设备的监控功能外,还需要对其网络使用状况进行周密的监控、处理和优化,才能切实地保证企业信息安全。在企业级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密码。可以设置另外的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>