实验九-实验十 在Windows下搭建入侵检测平台
实验目的:掌握在Windows中搭建基于snort的入侵检测系统(IDS),熟悉简单的配置方法,能够使用IDS检测并分析网络中的数据流。
Snort是一个强大的基于误用检测的轻量级网络入侵检测系统,它具有实时数据流量分析和日志IP网络数据包的能力,能够进行协议分析,对内容进行搜索/匹配。它能够检测各种不同的攻击方式,对攻击进行实时警报。
实验环境:windows
实验步骤:
- 安装所需软件:
- WinPcap(WinPcap_4_1_2.exe):windows下的捕获网络数据包的驱动程序库
- Snort(Snort_2_9_2_2_Installer.zip):将其捕获的数据发送至数据库,可在官网一并下载snort规则库
- PHPStudy:PHPStudy集成了apache、php、MySQL环境,不需要单独装这三个软件
- Acid(acid-0.9.6b23.tar.gz):是基于php的入侵检测数据库分析控制台。通过adodb从mssql.snort数据库中读取数据,将分析结果显示在网页上,并使用jpgraph组件对其进行图形化分析
- Adodb(adodb465.zip):php数据库的连接组件
- Jpgraph(jpgraph-3.0.7.tar.gz):Object-Oriented图形链接库For PHP
- Snortrules(snortrules-snapshot-2923.tar.gz):Snort检测规则库
具体步骤如下:
1. 安装phpstudy
安装成功启动后页面如下:
(127.0.0.1可以打开即可,内容不一定是hello world)
用PHP study的话可以替换掉最开始麻烦的apache、php、mysql等的安装,后续在配置时稍微修改下就可以。
2. 安装winpcap
双击WinPcap_4_1_2.exe,按照向导提示安装即可。
3. 安装snort
解压缩Snort_2_9_2_2_Installer.zip,默认安装即可,安装完成后使用下面命令测试是否安装成功:
c:\snort\bin> snort -W (W为大写)
使用命令时记得进入到自己的所安装的snort的bin目录下,比如我的是F:\snort\bin
当你看到左上角有个可爱的小猪,说明你安装成功了。
4. 安装和配置mysql
因为我选择用之前安装好的phpstudy进行实验,所以需要在phpstudy中进行相关的配置。
刚安装的同学可以先配置mysql的环境变量,后续可以直接在cmd中打开mysql,教程 ctrl+鼠标点击教程跳转
配置成功后,类似效果如下:
在MySQL的dos控制台中建立snort库和snort_archive库。
mysql> create database snort;
mysql> create database snort_archive;
mysql> use snort
mysql> source create_mysql(create_mysql文件在.\Snort\schemas\下,复制到MySQL下的bin目录中,才可以使用
mysql> show tables;
mysql> use snort_archive
mysql> source create_mysql
mysql> show tables;
为mysql建立snort和acid账号,使idscenter或acid能访问mysql中与snort有关的数据库文件
使用语句:
mysql> grant usage on . to “acid”@“localhost” identified by “acidtest”;
mysql> grant usage on . to “snort”@“localhost” identified by “snorttest”;
再为snort和acid账户分配相关权限,语句:
mysql> grant select,insert,update,delete,create,alter on snort .* to “snort”@“localhost”;
mysql> grant select,insert,update,delete,create,alter on snort .* to “acid”@“localhost”;
mysql> grant select,insert,update,delete,create,alter on snort_archive .* to “snort”@“localhost”;
mysql> grant select,insert,update,delete,create,alter on snort_archive .* to “acid”@“localhost”;
为acid用户和snort用户设置密码
mysql>set password for “snort”@“localhost” = password(“your password”);
mysql>set password for “acid”@“localhost” = password(“your password”);
5. 安装adodb
解压缩adodb465.tgz到D:\phpStudy\PHPTutorial\php\php-5.2.17目录下
因为原实验文档中所选择的php版本较低,使用高版本php会报错,故选择PHP study中最低版本的php
可在这里切换,切换后重启
6. 安装jpgraph
解压缩jpgraph-x.x.x.tar.gz到D:\phpStudy\PHPTutorial\php\php-5.2.17
⑨ 安装acid
解压缩acid-0.9.6b23.tar.gz到D:\phpStudy\PHPTutorial\WWW\acid目录下。
在开启PHP study后可以通过浏览器访问到acid,类似如下:
修改acid_conf.php为下列格式,(用写字板打开)。
$DBlib_path = “D:\phpStudy\PHPTutorial\php\php-5.2.17\adodb465\adodb”;
$DBtype = “mysql”
$alert_dbname = “snort”;
$alert_host = “localhost”;
$alert_port = “”;
$alert_user = “snort”;
$alert_password = “your password”;
$archive_dbname = “snort_archive”;
$archive_host = “localhost”;
$archive_port = “”;
$archive_user =“acid”;
$archive_password = “your password”;
$ChartLib_path = “D:\phpStudy\PHPTutorial\php\php-5.2.17\jpgraph-2.3.3”;
具体的路径信息根据个人的安装路径差别略有不同,仅供参考
重启apache服务。
浏览器打开http://主机IP地址/acid/acid_db_setup.php建立acid运行必须的数据库。鼠标点击create ACID AG
7. 配置snort
针对snort文件夹中没有的文件,可以在资料包中的另外两个snort文件中找到,直接复制过来就可以
Snort安装好后,需要配置etc里面的snort.conf文件。
windows下snort.conf文件必须修改的几处:
原: var RULE_PATH …/rules
改为: var RULE_PATH F:\Snort\rules
原: #dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/
改为:dynamicpreprocessor directory F:\Snort\lib\snort_dynamicpreprocessor(后面一定不要有/)
原: #dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so
改为:dynamicengine F:\Snort\lib\snort_dynamicengine\sf_engine.dll
原:#dynamicdetection directory /usr/local/lib/snort_dynamicrules
改为:dynamicdetection directory F:\Snort\lib\snort_dynamicrules
然后将F:\Snort\so_rules\precompiled\FC-12\i386\2.9.0.1里的所有文件拷贝到F:\Snort\lib\snort_dynamicrules //上面的FC-12不一定对,可以先试一下。看各自的系统都不一样。
原: include classification.config 改为: include F:\Snort\etc\classification.config
原: include reference.config 改为: include F:\Snort\etc\reference.config
原: # include threshold.conf 改为: include F:\Snort\etc\threshold.conf
原:# Does nothing in IDS mode
#preprocessor normalize_ip4
#preprocessor normalize_tcp: ips ecn stream
#preprocessor normalize_icmp4
#preprocessor normalize_ip6
#preprocessor normalize_icmp6
在之前加上#,注释掉。
原:preprocessor http_inspect: global iis_unicode_map unicode.map 1252 compress_depth 65535 decompress_depth 65535
改为:preprocessor http_inspect: global iis_unicode_map C:\Snort\etc\unicode.map 1252 compress_depth 65535 decompress_depth 65535
因为在windows下unicode.map这个文件在etc文件夹下。
修改配置文件时需要自行配置数据库,实验文档没写
在#database下修改,并取消注释,比如:
output database: log, mysql, user=snort password=snort dbname=snort host=127.0.0.1 port=3306
output database: alert, mysql, user=snort password=snort dbname=snort host=127.0.0.1 port=3306
配置好后,保存。
下载并导入规则库
windows下安装好snort后默认是没有规则库,需要自己下载。导入规则文件库,解压下载下来的snort-2.9.0.3.tar.zip,得到四个文件夹。将文件夹下的文件复制到snort安装目录下对应的文件中。
设置预处理器(非必要)
在snort.conf里面可以直接设置某些检测的预处理器,比如:
设置端口扫描的预处理器,把第二行的注释取消,并在最后加上log的保存文件。
# Portscan detection. For more information, see README.sfportscan
# preprocessor sfportscan: proto { all } memcap { 10000000 } sense_level { low }logfile { postscan.log }
设置arp欺骗的预处理器,同样取消注释,把IP和MAC改为你的IP和MAC值。
# preprocessor arpspoof
# preprocessor arpspoof_detect_host: 192.168.1.76 BC:AE:C5:81:BE:95
其他预处理器设置类似。
设置输出
在这下面设置你的输出,需要输出什么就注释掉对应的行。
###################################################
# Step #6: Configure output plugins
# For more information, see Snort Manual, Configuring Snort - Output Modules
###################################################
比如:
# syslog
# output alert_syslog: LOG_AUTH LOG_ALERT
# pcap
# output log_tcpdump: tcpdump.log
插入output alert_fast: alert.ids(输出fast模式的报警日志)
选择网卡:
进入命令行,在snort.exe文件所在目录用snort -W查看系统可用网络接口。记住需要监视的网卡的编号,比如为2,那么在以后的使用中,用-i 2就可以选择对应的网卡。
将snort安装为系统服务:(非必要
C:\Snort\bin>snort /SERVICE /INSTALL -c …/etc/snort.conf -i 2 -l …/snort/log -de
[SNORT_SERVICE] Successfully added the Snort service to the Services database. 如果看到上面的提示说明是成功的。
在测试之前,你要在local.rules文档里加入下面的语句:
alert ip any any -> any any (msg: “IP Packet detected”;sid:1000000;)
完成后通过命令启动IDS模式的snort
snort -i2 -de -l …/log -c …/etc/snort.conf。
命令执行后的DOS界面如图:
出现Commencing packet processing时就可以成功监听,运行不成功可能是权限不够,win+x以管理员身份打开powershell
此时浏览器输入http://127.0.0.1/acid/acid-0.9.6b23/acid/acid_main.php会出现类似如下入侵检测数据库分析控制台界面:
有任何问题可以评论区交流~