1.资料:http://netsecurity.51cto.com/art/201009/224860.htm
2.简介:
snort系统组成:snort由三个重要的子系统构成:数据包解码器,检测引擎,日志与报警系统。
Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
3.实验:
(1 安装必备软件
longtop@longtop-desktop:~$ sudo apt-get install libpcap0.8-dev libmysqlclient-dev mysql-client mysql-server bison flex apache2 libapache2-mod-php5 php5-gd php5-mysql libphp-adodb php-pear pcregrep snort snort-rules-default
MySQL 数据库时弹出设置 MySQL 根用户口令的界面,临时设置其为“test”。
(2 在 MySQL 数据库中为 Snort 建立数据库
longtop@longtop-desktop:~$ sudo apt-get install snort-mysql
longtop@longtop-desktop:~$ mysql -u root -p
mysql> create database snort;
Query OK, 1 row affected (0.00 sec)
mysql> grant create,insert,select,update on snort.* to snort@localhost;
Query OK, 0 rows affected (0.01 sec)
mysql> grant create,insert,select,update on snort.* to snort;
Query OK, 0 rows affected (0.00 sec)
mysql> set password for snort@localhost=password('snort-db');
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
longtop@longtop-desktop:~$ cd /usr/share/doc/snort-mysql
longtop@longtop-desktop:/usr/share/doc/snort-mysql$ zcat create_mysql.gz|mysql -u snort -D snort -psnort-db
(3 设置 snort 把 log 文件输出到 MySQL 数据库中
longtop@longtop-desktop:/usr/share/doc/snort-mysql$ sudo vim /etc/snort/snort.conf
在配置文件中将 HOME_NET 有关项注释掉,然后将 HOME_NET 设置为本机 IP 所在网络,将 EXTERNAL_NET 相关项注释掉,设置其为非本机网络,如下所示:
#var HOME_NET any
var HOME_NET 192.168.0.0/16
#var EXTERNAL_NET any
var EXTERNAL_NET !$HOME_NET
将 output database 相关项注释掉,将日志输出设置到 MySQL 数据库中,如下所示:
output database: log, mysql, user=snort password=snort-db dbname=snort host=localhost
#output database: log, mysql
这样,snort 就不再向 /var/log/snort 目录下的文件写记录了,转而将记录存放在 MySQL 的snort数据库中。这时候可以测试一下 Snort 工作是否正常:
$ sudo snort -c /etc/snort/snort.conf
如果出现一个用 ASCII 字符画出的小猪,那么 Snort 工作就正常了,可以使用 Ctrl-C 退出;如果 Snort 异常退出,就需要查明以上配置的正确性了。
(4 测试 Web 服务器 Apache 和 PHP 是否工作正常
配置 apache 的 php 模块,添加 msql 和 gd 的扩展。
$ sudo vim /etc/php5/apache2/php.ini
extension=msql.so
extension=gd.so
重启apache
sudo /etc/init.d/apache2 restart
在/var/www/目录下新建一个文本文件test.php
$ sudo vim /var/www/test.php
输入内容:
<?php
phpinfo();
?>
然后在浏览器中输入 http://localhost/test.php,如果配置正确的话,就会出现 PHP INFO 的经典界面,就标志着 LAMP 工作正常。
(5 安装和配置 acid-base
$ sudo apt-get install acidbase
安装过程中需要输入 acidbase 选择使用的数据库,这里选 MySQL,根用户口令 test,和 acid-base 的口令(貌似也可以跳过不设置)。
将acidbase从安装目录中拷贝到www目录中,也可以直接在apache中建立一个虚拟目录指向安装目录,这里拷贝过来主要是为了安全性考虑。
sudo cp –R /usr/share/acidbase/ /var/www/
因为 acidbase 目录下的 base_conf.php 原本是一个符号链接指向 /etc/acidbase/ 下的base_conf.php,为了保证权限可控制,我们要删除这个链接并新建 base_conf.php 文件。
longtop@longtop-desktop:/var/www/acidbase$ sudo rm base_conf.php
longtop@longtop-desktop:/var/www/acidbase$ sudo touch base_conf.php
暂时将 /var/www/acidbase/ 目录权限改为所有人可写,主要是为了配置 acidbase 所用。
$ sudo chmod 757 acidbase/
现在就可以开始配置 acid-base 了,在浏览器地址栏中输入 http://localhost/acidbase,就会转入安装界面安装
这里需要将 acidbase 目录的权限改回去以确保安全性,然后在后台启动 snort,就表明 snort 入侵检测系统的安装完成并正常启动了:
$ sudo chmod 775 acidbase/
$ sudo snort -c /etc/snort/snort.conf -i eth0 –D
[检查入侵检测系统工作状况,更改入侵检测规则]
正常情况下在一个不安全的网络中,登录 acidbase 后一会儿就能发现网络攻击。如果没有发现网络攻击,可以添加更严格的规则使得正常的网络连接也可能被报攻击,以测试 Snort IDS 的工作正确性,比如在 /etc/snort/rules/web-misc.rules 的最后添加下面的话:
$ sudo vi /etc/snort/rules/web-misc.rules
alert tcp any :1024 -> $HTTP_SERVER 500:
这一行的意思是:对从任何地址小于 1024 端口向本机 500 以上端口发送的 tcp 数据包都报警。杀死 Snort 的后台进程并重新启动,就应该能检测到正常的包也被当作攻击了。
$ sudo kill `pgrep snort`
$ sudo snort –c /etc/snort/snort.conf –i eth0 -D
总结
使用Ubuntu安装Snort入侵检测系统和网页控制台是相当容易的,因为 Ubuntu 提供了很方便的软件包安装功能,只是有时候定制性能太差,需要用户手动去寻找软件包的安装位置。