snort 简介
snort是一个基于libpcap的数据包嗅探并可以作为一个轻量级的网络入侵检测系统(NIDS)。所谓的轻量级是指在检测时尽可能低地影响网络的正常操作,一个优秀的轻量级的NIDS应该具备跨系统平台操作,对系统影响最小等特征并且管理员能够在短时间内通过修改配置进行实时的安全响应,更为重要的是能够成为整体安全结构的重要成员。
snort工作模式
snort 有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。
嗅探器模式仅仅是从网络上读取数据并作为连续不断的流显示在终端上;
数据包记录器模式把数据包记录到硬盘上;
网络入侵检测模式是最复杂的,而且是可配置的,我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
实验环境:
snort 主机: 192.168.101.90
模拟入侵主机:192.168.101.108
注:snort要与internet可以通信
一、snort 以及规则安装
yum install php php-gd php-pear php-mysql mysql-server httpd libpcap
yum localinstall --nogpgcheck snort-2.8.6.1 snort-mysql-2.8.0.1-1.RH5.i386.rpm
tar -zxvf snortrules-snapshot.... -C /etc/snort
修改环境变量
[root@readhat ~]# export PCAP_FRAMES=max
启用服务
[root@readhat html]# service httpd start && chkconfig httpd on
[root@readhat html]# service mysqld start && chkconfig mysqld on
二、mysql配置
[root@readhat html]# mysqladmin -u root password "123"
创建数据库
create database snort;
use snort;
source /usr/share/snort-2.8.0.1/schemas/create_mysql; 导入模版,生成数据表
三、adodb安装
[root@readhat html]# unzip adodb514.zip -d /var/www/html/
[root@readhat html]# cd /var/www/html/
[root@readhat html]# mv adodb5/ adodb
四、base安装配置
[root@readhat html]# tar -zxvf /root/base-1.4.5.tar.gz -C /var/www/html/
[root@readhat html]# cd /var/www/html/
[root@readhat html]# mv base-1.4.5/ base
pear install --force PEAR-1.8.1
pear upgrade pear
[root@readhat html]# pear install Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman Mail_Mime Mail
[root@readhat html]# cd /var/www/html/base
[root@readhat base]# cp world_map6.png world_map6.txt /usr/share/pear/Image/Graph/Images/Maps/
对base目录,添加可写属性,
[root@readhat html]# chmod o+w base
修改base内的符号链接
[root@readhat html]# ln -s /etc/snort/doc/signatures /var/www/html/base/signatures
访问 http://192.168.101.90/base
编辑php的配置文件
vim /etc/php.ini
error_reporting = E_ALL
改成
error_reporting = E_ALL & ~E_NOTICE
再次测试正常
五、base网页配置
选择语言格式,及adodb的存放目录,
设置数据库的相关属性,
创建管理员角色,
成功创建相关表、表选项,
base是从mysql中读取数据,而sort是怎样将信息输出到mysql数据库,并没有配置。
snort与mysql的关联配置
[root@readhat ~]# vim /etc/snort/snort.conf
[root@readhat ~]# snort -v -c /etc/snort/snort.conf &>/dev/null &
[1] 28542
[root@readhat html]# jobs
[1]+ Running snort -v -c /etc/snort/snort.conf >&/dev/null &
查看扫描状态
局域网内模拟攻击,进行端口扫描
再次查看状态
详细的数据格式
附录:
snort的工作模式及规则简单编写
1、嗅探器模式
所谓的嗅探器模式就是snort从网络上读出数据包然后显示在你的控制台上。首先,我们从最基本的用法入手。如果你只要把TCP/IP包头信息打印在屏幕上,只需要输入下面的命令:
#snort -v
使用这个命令将使snort只输出IP和TCP/UDP/ICMP的包头信息。如果你要看到应用层的数据,可以使用:
#snort -vd
这条命令使snort在输出包头信息的同时显示包的数据信息。如果你还要显示数据链路层的信息,就使用下面的命令:
#snort -vde
注意这些选项开关还可以分开写或者任意结合在一块。例如:下面的命令就和上面最后的一条命令等价:
#snort -d -v –e
2、数据包记录器:
如果要把所有的包记录到硬盘上,你需要指定一个日志目录,snort就会自动记录数据包:
snort -dev -l ./log
当然,./log目录必须存在,否则snort就会报告错误信息并退出。当snort在这种模式下运行,它会记录所有看到的包将其放到一个目录中,这个目录以数据包目的主机的IP地址命名,例如:192.168.10.1
如果你只指定了-l命令开关,而没有设置目录名,snort有时会使用远程主机的IP地址作为目录,有时会使用本地主机IP地址作为目录名。为了只对本地网络进行日志,你需要给出本地网络:
snort -dev -l ./log -h 192.168.1.0/24
这个命令告诉snort把进入C类网络192.168.1的所有包的数据链路、TCP/IP以及应用层的数据记录到目录./log中。
注意:生成的数据文件格式是tcpdump格式的,可使用”#snort -r 数据文件名”来查看
如果你的网络速度很快,或者你想使日志更加紧凑以便以后的分析,那么应该使用二进制的日志文件格式。所谓的二进制日志文件格式就是tcpdump程序使用的格式。使用下面的命令可以把所有的包记录到一个单一的二进制文件中:
snort -l ./log -b
3、入侵检测系统:
snort最重要的用途还是作为网络入侵检测系统(NIDS),使用下面命令行可以启动这种模式:
snort -dev -l ./log -h 192.168.1.0/24 -c /etc/snort/snort.conf
snort.conf是规则集文件。snort会对每个包和规则集进行匹配,发现这样的包就采取相应的行动。如果你不指定输出目录,snort就输出到/var/log/snort目录。
注意:如果你想长期使用snort作为自己的入侵检测系统,最好不要使用-v选项。因为使用这个选项,使snort向屏幕上输出一些信息,会大大降低snort的处理速度,从而在向显示器输出的过程中丢弃一些包。
此外,在绝大多数情况下,也没有必要记录数据链路层的包头,所以-e选项也可以不用:
snort -d -h 192.168.1.0/24 -l ./log -c /etc/snort/snort.conf
这是使用snort作为网络入侵检测系统最基本的形式,日志符合规则的包,以ASCII形式保存在有层次的目录结构中。
编写snort 规则
snort使用一种简单的,轻量级的规则描述语言,这种语言灵活而强大。在开发snort规则时要记住几个简单的原则。
第一,大多数snort规则都写在一个单行上,或者在多行之间的行尾用/分隔。Snort规则被分成两个逻辑部分:规则头和规则选项。规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的具体部分。
下面是一个规则范例:
alert tcp any any -> 192.168.1.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd access";)
规则动作协议源ip地址源端口号 ->目标ip地址目标端口号(规则选项)
第一个括号前的部分是规则头(rule header),包含的括号内的部分是规则选项(rule options)。规则选项部分中冒号前的单词称为选项关键字(option keywords)。注意,不是所有规则都必须包含规则选项部分,选项部分只是为了使对要收集或报警,或丢弃的包的定义更加严格。组成一个规则的所有元素对于指定的要采取的行动都必须是真的。当多个元素放在一起时,可以认为它们组成了一个逻辑与(AND)语句。同时,snort规则库文件中的不同规则可以认为组成了一个大的逻辑或(OR)语句。
规则动作:
规则的头包含了定义一个包的who,where和what信息,以及当满足规则定义的所有属性的包出现时要采取的行动。规则的第一项是"规则动作"(rule action),"规则动作"告诉snort在发现匹配规则的包时要干什么。在snort中有五种动作:alert、log、pass、activate和dynamic.
1、Alert-使用选择的报警方法生成一个警报,然后记录(log)这个包。
2、Log-记录这个包。
3、Pass-丢弃(忽略)这个包。
4、activate-报警并且激活另一条dynamic规则。
5、dynamic-保持空闲直到被一条activate规则激活,被激活后就作为一条log规则执行。