在安装snort的过程中遇到了一点困难,但还是完成。下文将依据http://blog.solrex.org/articles/implement-snort-ids-on-ubuntu-710.html的一篇博文,提出自己安装过程出现的问题和解决办法。由于以上博文是在ubuntu7.10环境中进行,本文在10.10中进行。
1 第一点区别:我之前已经安装过LAMP和pcap、phpMyAdmin(用php编写的可以用来管理mysql的web工具)。
2 安装Snort:
准备工作:通过ubuntu的apt-get方式得到的snort是2.8.4版本的,而官方http://www.snort.org/已出到2.9版本。但考虑到安装简单化,直接
sudo apt-get install snort安装。此步骤没有什么意外情况。
3 为了确保pcap的安装与否,可以通过dpkg -l libpcap0.8 查看 libpcap是否安装或者通过新立得查看。如果没有,则需安装。
4 在 MySQL 数据库中为 Snort 建立数据库:
和上面的博文基本没有区别,这里引用:
***********************************************************
Ubuntu 软件仓库中有一个默认的软件包 snort-mysql 提供辅助功能,用软件包管理器下载安装这个软件包。
$ sudo apt-get install snort-mysql
安装好之后查看帮助文档:
$ less /usr/share/doc/snort-mysql/README-database.Debian
(下面建库建表的步骤其实README-database.Debian 中就有)
根据帮助文档中的指令,在 MySQL 中建立 Snort 的数据库用户和数据库。所使用的命令如下:
$ mysql –u root –p
在提示符处输入上面设置的口令 (这个是你mysql的管理员口令,一般manual中会让用户设置为test,不过最好设置一个自己常用的,否则容易在这么多密码中混淆】
【注意$ mysql –u root –p后如果口令正确,你应该就进入了mysql的操作台,会出现mysql>提示符,然后你就可以创建数据库,以及用户和密码、权限等】
mysql> CREATE DATABASE snort;
mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort@localhost;
mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort;
mysql> SET PASSWORD FOR snort@localhost=PASSWORD('snort-db'); //此处snort-db为密码
mysql> exit
以上命令的功能是在 MySQL 数据库中建立一个 snort 数据库,并建立一个 snort 用户来管理这个数据库,设置 snort 用户的口令为 snort-db。
然后根据 README-database.Debian 中的指示建立 snort 数据库的结构。
$ cd /usr/share/doc/snort-mysql
$ zcat create_mysql.gz | mysql -u snort -D snort -psnort-db (这里的-psnort-db连在一起,没有空格,我也没搞清楚,主观上认为应该是-p snort-db但是,这样反而不行,照做即可)
这样就为 snort 在 MySQL 中建立了数据库的结构,其中包括各个 snort 需要使用的表。(此时,你就可以通过PHPMyAdmin查看了)
[设置 snort 把 log 文件输出到 MySQL 数据库中]
修改 Snort 的配置文件:/etc/snort/snort.conf
$ 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 异常退出,就需要查明以上配置的正确性了。
*****************************************************************************************
5 保证你的apache2和mysql,php可用,下一步将[安装和配置 acid-base]
首先声明,这一步如果完全按照引用的博文来做,可能会出现问题,下面将会提到。
$ sudo apt-get install acidbase
这一步的安装过程中会选择db:mysql,然后输入口令:
【一定要注意,尽管这里没有指定让你使用那个用户登录,直接输入口令,但是其实它是默认snort用户的,所以你不能输入mysql的root口令,而需要输入snort用户的口令,根据上文就应该是snort-db,作者在这里耗费了2个多小时,后来一直连不通,就是这个原因。eg: 如果你输入root口令,在后来按照引用博文中提到的浏览器验证acidbase时就会出现:
************
Check the DB connection variables in base_conf.php
= $alert_dbname : MySQL database name where the alerts are stored
= $alert_host : host where the database is stored
= $alert_port : port where the database is stored
= $alert_user : username into the database
= $alert_password : password for the username
Database ERROR:Access denied for user 'snort'@'localhost' (using password: YES)
**********
(小记:在解决此问题的艰辛历程中,作者google了snort的maillists还有国外bbs的多篇帖子,都没有给出根本原因。并发现:在当前版本中将安装acidbase后的/usr/share/acidbase目录中内容cp -r到/var/www下,在浏览器中输入localhost/acidbase,此时web server访问的并不是www下的acidbase目录,而是/usr/share/acidbase,各位可以自己试试,试试在显示的首页acid_main.php中添加PHP输出代码,如echo "me";等确定。作者也针对上述浏览器提到的检查base_conf.php方法来解决,并将里面的alert_dbname等信息全部手动赋值,发现根本没有效果。而引用博文中将此文件删除并新建的方法,browser会直接报错。补充一点:这个acid_base.conf的真实位置是在/etc/acidbase下面。
后来,作者不妨重装acidbase来试图找出问题原因,(你还别说,还真找到了),现象是你通过apt-get remove acidbase无法彻底删除,首先是手动删除了/etc/acidbase下面的东东,之后发现安装时还提示已经有conf配置文件,这就怪了,我/usr和/etc下都删了,怎么还有conf?后来通过仔细看提示,原来隐匿在/etc/dbconfig-common下面还有一个acidbase.conf配置文件,注意此时的acid和base之间没有下划线连接,在这里配置文件中定义了我们首次设置的数据库连接情况,
****
dbc_dbtype='mysql'
# dbc_dbuser: database user
# the name of the user who we will use to connect to the database.
dbc_dbuser='snort'
# dbc_dbpass: database user password
# the password to use with the above username when connecting
# to a database, if one is required
dbc_dbpass='test' (需要改为snort-db)
正是在这里作者发现了原因,用户名直接被设为了snort,而密码确是作者填写的root密码,作者将其改正后解决。so,就这样,作者将这个文件也删除了,(通过新立得可以将acidbase全部彻底删除)。然后重装,重新设定密码。world silence!)
至于引用博文中将/usr/share/acidbase的东东移到/var/www下的思想确实需要,这个要注意权限和链接的问题,过程自己解决吧。
这时,通过http://localhost/acidbase访问估计就不会出现什么问题了,它会手下提醒你增加数据表到snort库中,原来snort库中16个表,增加了6个acid相关的,后为22.
如图:
在phpmyadmin中看mysql中新建的表:
6 至于测试snort就是后面的事情了,just remember :/etc/init.d/snort start/stop/restart。
欢迎讨论,blog.csdn.net/jo_say.