写这个的主要原因是按照别人的步骤部署了snort平台后,部署失败,后来发现其实是一些环境变量设置的问题,并且其中还有个别小错误,也一并进行了纠正。若有表达不清楚的或者错误的地方欢迎大家留言告知。虽然版本有些老,不过主要目的是了解snort平台的使用,至于新版的snort平台,找时间测试一下。
要准备的软件:
Snort: 版本snort-2.8.3.1.Installer.exe,csdn下载 http://download.csdn.net/download/leonits/12046240
Snort 规则库:rules文件夹,csdn下载 http://download.csdn.net/download/leonits/12046258
Winpcap:版本3.1-WinPcap.exe,csdn下载 http://download.csdn.net/download/leonits/12046247
AppServ: 版本appserv-win32-2.5.10.exe,AppServ软件的安装可以代替Apache、PHP、MySQL、phpMyAdmin 4种软件各自的安装过程。说实话,不如wamp或者phpstudy方便。CSDN下载地址:http://download.csdn.net/download/leonits/12046237
acid-0.9.6b23: 基于php的入侵检测数据库分析控制台,用于安装snort的基础软件。 基于php的入侵检测数据库分析控制台,用于安装snort的基础软件。http://download.csdn.net/download/leonits/12046274
adodb: Snort软件部署须要的一个软件 ADODB 是 Active Data Objects Data Base 的简称,它是一种 PHP 存取数据库的中间函式组件。 虽然 PHP 是建构 Web 系统强有力的工具,但是 PHP 存取数据库的功能,一直未能标准化,每一种数据库,都使用另一种不同且不兼容的应用程序接口(API)。为了填补这个缺憾,因此才有 ADODB 的出现。
JpGraph:解压缩jpgraph-2.3.4.tar.gz,jpgraph的类在src目录下,每次使用都要引用src/jpgraph.php,然后再引用具体的图表类型的类,例如要画折线图,就要引入src/jpgraph_line.php。官网:https://jpgraph.net/
下载:
下面开始安装:
1.安装snort:
运行snort-2.8.3.1.Installer.exe
Snort 安装完成后,“rule”文件夹中缺少文件,下载提供的规则库文件snortrules-snapshot-2.8.tar.rar,将其中的rules拷贝过来。
2.Winpcap
步骤简单,此处略
3.AppServ:
选择安装目录为:C:\AppServ
1)点击AppServ安装程序,根据提示一步一步操作下去即可。
2)选择AppServ的安装目录,选择你要安装的目录,以方便管理
3)全部选中,点击下一步,继续安装appseerv
4)配置Apache中的Server Name、Email以及HTTP服务的端口,Server Name一般设置为localhost或者127.0.0.1,默认端口为:80,如果80端口已有其他服务,需要修改HTTP的服务端口,比如8080
4)配置AppServ中的Mysql服务用户名和密码 MySql服务数据库的默认管理帐户为root,默认字符集为UTF-8,可根据需要自行修改相关的字符集编码,一般英文UTF-8比较通用。中文GBK比较常用
5)下一步后开始自动安装AppServ,最后点击Finish后,AppServ会自动启动APACHE和MYSQL服务, 建议开机时自动启动,我在测试时没有选择开机自动启动AppServ,导致时常AppServ无法运行,每次都需要手工启动。
6)测试appserv是否安装配置成功,在浏览器中输入http://localhost,即可看到下图,说明AppServ安装成功了。
注意事项:
(1)Administrator's Email Address:输入管理员的邮箱地址。本机如果已经安装了IIS并且启动了Web Server,则会因为IIS Web Server默认在TCP 80 端口监听,和Apache Web Server发生冲突。可以修改Apache Web Server在其他端口监听,当然也可以禁用或者卸载IIS。此处将监听端口设置为8080,然后"Next"
(2)安装完成后,要将C:\AppServ\php5目录下的php.ini-dist文件改名为php.ini,并启动Apache和MySQL
AppServ安装成功后,在浏览器输入http://localhost:8080/,出现如下界面:
7)在浏览器地址栏中输入:http://localhost/phpMyAdmin/index.php,出现如下界面:
用户名:root
密码:安装时你设定的密码
进入界面如下:
8)配置AppServ
(1)编辑Apache服务器配置文件
打开安装目录下Apache2.2\conf文件夹里的httpd.conf,检查
ServerName localhost:80
DocumentRoot "C:/AppServ/www"
(2)编辑phpMyAdmin中的关键文件
打开C:\AppServ\www\phpMyAdmin\libraries目录下的config.default.php文件,推荐以下修改:
(a)设置phpmyadmin的URL,$cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin/';这里假设phpMyAdmin在默认站点的根目录下
(b)设置root密码,$cfg['blowfish_secret'] = '******'; 其中******为你设置的root密码。
(c)$cfg['DefaultLang'] = 'zh-gb2312';
(d)$cfg['DefaultCharset'] = 'gb2312';
(e)$cfg['Servers'][$i]['auth_type'] = 'config';
(f)$cfg['Servers'][$i]['user'] = 'root'; //mysql管理员账户
(g)$cfg['Servers'][$i]['password'] = '******';
(3) 为安全起见,须删除MySQL安装后默认的any@%、any@localhost和root@%账号。
自己测试的话可以不做,若实际应用则必须做。
mysql>use mysql
mysql>delete from user where user=’’ and host=’%’
mysql>delete from db where user=’’ and host=’%’
mysql>delete from tables_priv where user=’’ and host=’%’
mysql>delete from columns_priv where user=’’ and host=’%’
mysql>delete from user where user=’’ and host=’localhost’
mysql>delete from db where user=’’ and host=’localhost’
mysql>delete from tables_priv where user=’’ and host=’localhost’
mysql>delete from columns_priv where user=’’ and host=’localhost’
mysql>delete from user where user=’root’ and host=’%’
mysql>delete from db where user=’root’ and host=’%’
mysql>delete from tables_priv where user=’root’ and host=’%’
mysql>delete from columns_priv where user=’root’ and host=’%’
注意,上面''是两个单引号!!这样,只允许root从localhost连接。
(4)配置PHP初始化文件php.ini
先修改C:\AppServ\php5\php.ini,然后复制到C:\WINDOWS\一份,
配置如下:
open_basedir=C:\AppServ\www //删除前面的;
magic_quotes_gpc=Off
file_uploads=Off
session.save_path="c:\windows\temp" //删除前面的;
将“;extension=php_mysql.dll”中的前面一个“;”去掉.
修改 extension_dir = 和PHP实际的ext目录(扩展php_mysql.dll 的路径)不一致。
extension_dir = "C:\AppServ\php5\ext"
说明:
该步骤没做,也成功了。但又其他用户提到,所以请注意。
把PHP目录和ext目录添加到环境变量中。方法是:桌面>我的电脑>右键属性>高级>环境变量>系统变量>新建 建立一个(名:如phprc)(值:即指定到磁盘路径:/php/ext目录下)
该步骤没做,也成功了。因为发现安装system32目录下已经有了。
在系统的 system32(C:\windows\system32) 目录下缺少 libmysql.dll文件,解决方法是找到php目录下的libmysql.dll,并将libmysql.dll复制到C:\windows\system32目录中,然后重新启动Web服务。
(5)针对mysql进行。首先,建立Snort运行必需的Snort库和Snort_archive库:
c:\>mysql -u root -p
mysql>create database snort;
mysql>create database snort_archive;
此版本不用修改C:\Snort\schemas下的create_mysql文件。
(6)使用C:\Snort\schemas目录下的create_mysql脚本建立Snort运行时必需的数据表:
C:\AppServ\MySQL\bin\mysql -D snort -u root -p < C:\Snort\schemas\create_mysql
C:\AppServ\MySQL\bin\mysql -D snort_archive -u root -p < C:\Snort\schemas\create_mysql
执行完create_mysql脚本后,用户可以通过在mysql提示符下运行sql语句show tables来验证配置的正确性。
(7)必需在Apache服务器主机(本贴为localhost)上建立acid和snort用户,并为它们分配相关权限和访问密码,使acid能正常访问后台数据库mysql中snort相关的数据文件(该步骤也可以通过http://localhost/phpmyadmin/index.php图形界面操作):
MySQL>grant usage on *.* to "acid"@"localhost" identified by "acidtest";
MySQL>grant usage on *.* to "snort"@"localhost" identified by "snorttest";
MySQL>grant select, insert, update, delete, create, alter on snort.* to "acid"@"localhost";
MySQL>grant select, insert on snort.* to "snort"@"localhost";
MySQL>grant select, insert, update, delete, create, alter on snort_archive.* to "acid"@"localhost";
MySQL>set password for "snort"@"localhost"=password('snorttest');
MySQL>set password for "acid"@"localhost"=password('acidtest');
4.安装Adodb、jpgraph和ACID
将adodb和jpgraph复制到C:\AppServ\php5目录下,分别生成C:\AppServ\php5\adodb和C:\AppServ\php5\jpgraph目录。将acid-0.9.6b23复制到C:\AppServ\www目录下生成C:\AppServ\www\acid。
注意:adodb、jpgraph、acid目录名一定要相同
接下来修改C:\AppServ\www\acid中的acid_conf.php文件,如下:
$DBlib_path = "C:\AppServ\php5\adodb";
$alert_dbname = "snort";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "acid";
$alert_password = "acidtest";
$archive_dbname = "snort_archive";
$archive_host = "localhost";
$archive_port = "";
$archive_user = "acid";
$archive_password = "acidetest";
$ChartLib_path="C:\AppServ\php5\jpgraph\src"
5.配置Snort
编辑C:\Snort\etc\snort.conf。修改引用路径:
var HOME_NET any //修改为本主机的网段 例如:var HOME_NET 10.0.0.0/24
portvar HTTP_PORTS 80 //若本主机web服务器为8080或者其他,则修改为相应的端口
var RULE_PATH C:\snort\rules
dynamicpreprocessor directory C:\Snort\lib\snort_dynamicpreprocessor
dynamicengine C:\Snort\lib\snort_dynamicengine\sf_engine.dll
dynamicdetection directory C:\snort\lib\snort_dynamicrule
并设置Snort输出alert到mysql server:
output database: alert, MySql, host=localhost user=snort password=snorttest dbname=snort encoding=hex detail=full
classification.config文件记录了关于snort规则分类的信息,reference.config文件中记录了一些关于报警信息的参考网站的URL,这些参考将在snort规则中引用。
snort.conf中的相对路径
include classification.config
include reference.config
改为绝对路径:
include C:\Snort\etc\classification.config
include C:\Snort\etc\reference.config
6.测试snort
命令行测试:
先打开Apache和MySql,打开cmd控制台
c:\snort\bin\>snort -c "C:\Snort\etc\snort.conf" -l "C:\Snort\log" -i 2
//若想在控制台显示捕获的数据,可以加上 -vde 参数即可
//-i 2 后面这个数字代表的是你的第几块网络适配器,可以使用c:\snort\bin\>snort -W 查看本地连接属于第几块适配器
启动后,打开IE浏览器,先输入http://localhost/acid/acid_db_setup.php,图中箭头提示创建acid表,点击该按钮,然后出现屏幕上方出现四个表成功创建的记录,箭头位置变成”DONE“,即可。
然后再打开一个IE窗口,地址栏输入 http://localhost/acid/acid_main.php,出现下面的界面则表示平台已经运行。
在C:\Snort\rules目录下的local.rules中,添加自己的规则并进行测试。
例如:alert ip any any <-> any any (msg:"IP Packet Detected";sid:10000;)
之后用其他电脑或本主机ping测试,就可以在上面的界面中看到预警信息了。
注意:启动过程中可能会提示某个rules加载错误,
我遇到的是include $RULE_PATH/netbios.rules错误,直接在snort.conf文件中找到改规则前加#注释掉即可。
本贴的主要内容参考了下面的资料:
https://www.cnblogs.com/leaveyourownlife/p/4245022.html
https://jingyan.baidu.com/article/91f5db1bf72ac01c7f05e3a7.html
https://www.ibm.com/developerworks/cn/web/wa-snort1/