2.Snort简介网络入侵检测系统(NIDS,NetworkIntrusionDetectionSystem)可以监视网络计算机系统,而snort就是一个功能强大的轻量级的网络入侵检测系统,适用于大中小型网络,尤其适合一些无力承受大型商业入侵检测系统高昂费用的中小型公司使用。snort遵循通用公共许可证GPL,是一款优秀的免费软件,只要遵守GPL的任何组织和个人都可以自由使用。它具有如下的特征:snort是一个轻量级的入侵检测系统,代码极为简洁、短小。功能强大。snort具有实时的流量分析和日志IP网络数据包的能力,能够快速地检测网络攻击,及时发出警报,并且其警报机制非常丰富。10.5Linux网络服务安全10.5.3入侵检测IDS可移植性很好。snort具有极好的跨平台性能,目前支持snort的操作系统有Linux、Solaris、BSD、HP-UX和Windows等。能够进行协议分析,对协议数据内容进行搜索和匹配,检测各种不同的攻击方式,对攻击进行实时报警。snort能够分析的协议有TCP、UDP和ICMP等。扩展性好,能够使用插件增加其功能。具有很强的系统防护能力。通过使用FlexResp功能snort能够主动断开恶意连接。10.5Linux网络服务安全10.5.3入侵检测IDS3.snort的安装通常采用编译安装的方法定制符合需要的snort应用程序。定制一个snort入侵检测系统,至少需要如下软件包的支持。libcap-1.10-15.tar.gz:snort依赖的抓包库。pcre-7.6.tar.gz:正则式支持库文件。libnet-1.0.2a.tar.gz:libnet库文件。snort-2.8.3.1.tar.gz:入侵检测器。snortrules-snapshot-2.7.tar.gz:入侵检测规则。注意:libnet库必须只用指定版本的源代码。10.5Linux网络服务安全10.5.3入侵检测IDS1)安装抓包库libcap从网上下载libcap-1.10-15.tar.gz源程序包,复制到/tmp,然后在终端提示符下执行下列操作:[root@myhostroot]#cd/tmp[root@myhosttmp]#tarzxvflibcap-1.10-15.tar.gz←解压解归档源代码包[root@myhosttmp]#cdlibcap-1.10-15←进入生成的libcap-1.10-15目录[root@myhostlibcap-1.10-15]#./configure←配置编译的参数,生成Makefile文件[root@myhostlibcap-1.10-15]#.make←编译源代码[root@myhostlibcap-1.10-15]#.makeinstall←安装10.5Linux网络服务安全10.5.3入侵检测IDS2)安装正则式支持库文件pcre从网上下载pcre-7.6.tar.gz源程序包,复制到/tmp,然后在终端提示符下执行下列操作:[root@myhostlibcap-1.10-15]#cd/tmp[root@myhosttmp]#tarzxvfpcre-7.6.tar.gz[root@myhosttmp]#cdpcre-7.6[root@myhostpcre-7.6]#./configure[root@myhostpcre-7.6]#make[root@myhostpcre-7.6]#makeinstall10.5Linux网络服务安全10.5.3入侵检测IDS3)安装libnet库从网上下载snort-2.8.3.1.tar.gz源程序包,复制到/tmp,然后在终端提示符下执行下列操作:[root@myhostpcre-7.6]#cd/tmp[root@myhosttmp]#tarzxvfsnort-2.8.3.1.tar.gz[root@myhosttmp]#cdsnort-2.8.3.1[root@myhostlibnet-1.0.2a]#./configure[root@myhostlibnet-1.0.2a]#make[root@myhostlibnet-1.0.2a]#makeinstall10.5Linux网络服务安全10.5.3入侵检测IDS4)安装入侵检测器snort从网上下载snort-2.8.3.1.tar.gz源程序包,复制到/tmp,然后在终端提示符下执行下列操作:[root@myhostlibnet-1.0.2a]#cd/tmp[root@myhosttmp]#tarzxvfsnort-2.8.3.1.tar.gz[root@myhosttmp]#cdsnort-2.8.3.1[root@myhostsnort-2.8.3.1]#./configure--prefix=/usr/local/snort--enable-flexresp\--with-mysql=/usr/local/mysql[root@myhostsnort-2.8.3.1]#make[root@myhostsnort-2.8.3.1]#makeinstall10.5Linux网络服务安全10.5.3入侵检测IDS5)安装snort规则库snortrules-snapshot从网上下载snortrules-snapshot-2.7.tar.gz源程序包,复制到/tmp,然后在终端提示符下执行下列操作:[root@myhostsnort-2.8.3.1]#mkdir/etc/snort←创建存放snort配置文件的目录[root@myhostsnort-2.8.3.1]#mkdir/etc/snort/rules←创建存放snort规则库的目录[root@myhostsnort-2.8.3.1]#mkdir/var/log/snort←创建存放snort日志的目录[root@myhostsnort-2.8.3.1]#cp-r./etc/*/etc/snort←将snort相关配置文件复制到指定位置[root@myhostsnort-2.8.3.1]#cp/tmp/snortrules-snapshot-2.7.tar.gz/etc/snort[root@myhostsnort-2.8.3.1]#cd/etc/snort[root@myhostsnort]#tarzxvfsnortrules-snapshot-2.7.tar.gz←规则库放置在/etc/snort/rules到此,具有基本功能的snort系统安装完毕。10.5Linux网络服务安全10.5.3入侵检测IDS4.配置snortsnort安装成功后,需要对其进行相应的配置。进入/etc/snort目录,使用文本编辑器(图形模式下的gedit,文本模式下的vi等)打开snort.conf文件,找到如下图所示的黄色底色的配置行,去掉行首的“#”。10.5Linux网络服务安全10.5.3入侵检测IDS配置snort再从snort.conf中找出设置规则库路径的配置行,按照实际位置修改变量RULE_PATH的值,如下图所示的黄色配置行。10.5Linux网络服务安全10.5.3入侵检测IDS设置规则库路径修改完毕后,保存退出。10.5Linux网络服务安全10.5.3入侵检测IDS5.使用snortsnort的基本用作数据包嗅探器(packetsniffer)、数据包分析器(packetanalyser)和网络入侵检测系统。1)作为数据包嗅探器其作用是从网络中读取数据包,并将其显示在使用者的控制台上。可以利用如下表所示的参数实现嗅探器功能。参数功能-v将数据包的TCP/IP包头显示到屏幕上-vd将数据包的IP、TCP、UDP和ICMP包头信息显示到屏幕上-vde同时显示包头和数据信息-c指定snort使用的配置文件snort实现嗅探功能的参数例10.4查看网络数据包的包头信息。进入snort的安装路径/usr/local/snort,然后在终端提示符下执行如下的命令:[root@myhostsnort]#cdbin[root@myhostbin]#./snort-v执行结构如下图所示。10.5Linux网络服务安全10.5.3入侵检测IDS10.5Linux网络服务安全10.5.3入侵检测IDS2)数据包分析snort能把截获到的数据包记录到指定的日志文件中,此时需要指定日志文件的存放目录。以下的参数,可以帮助snort完成数据包分析功能。如下表所示。参数功能-llog_dir指定snort的日志目录-hip|host_name指定需要截包的主机的IP地址或主机名-b采用二进制方式记录日志-s将snort日志发送给syslog日志系统snort实现嗅探功能的参数例10.5将截获的数据包信息记录到指定的日志中。在终端提示符下输入如下的命令,完成snort的日志功能。[root@myhostbin]#./snort-ved-l/var/log/snort其日志被记录在指定的日志目录中,其内容如下图所示10.5Linux网络服务安全10.5.3入侵检测IDSsnort抓包日志10.5Linux网络服务安全10.5.3入侵检测IDS3)网络入侵检测snort最重要的用途还是作为网络入侵检测系统。帮助snort实现网络入侵检测功能的参数如下表所示。参数功能-cconf_file指定snort的配置文件-Awarn_mech指定snort的警报机制-b采用二进制方式记录日志-s将snort日志发送给syslog日志系统-MWORKSTATIONS使用SMB警报机制snort实现网络入侵检测功能的参数例10.6在当前系统中启动入侵检测系统。使用如下的命令可以启动snort的入侵检测功能。[root@myhostbin]#./snort-ved-l/var/log/snort-c/etc/snort/snort.conf命令执行结果如下图所示。10.5Linux网络服务安全10.5.3入侵检测IDSsnort入侵检测10.5Linux网络服务安全10.5.3入侵检测IDSsnort的警报机制有full、fast、socket、none、smb(winpopup)和syslog等6种。其中,前4种警报机制可以使用-A参数设置,其说明如下表。参数功能-Afast报警信息包括,时间戳、报警消息、源/目的IP地址和端口-Afull默认报警模式-Aunsock把报警发送到一个UNIX套接字-Anone将snort日志发送给syslog日志系统snort参数-A说明在网络入侵检测模式下,snort可以使用多种方式来配置其输出方式。默认snort以ASCII格式记录日志,并且使用full警报机制。syslog报警机制可以使用-s参数设置,默认的设备LOG_AUTHPRV和LOG_ALERT。smb警报机制通过SAMBA把警报消息发送到Windows主机。为了使用该警报机制,在编译安装过程中,运行“./configure”脚本时,使用“--enable-smbalerts”参数。5.定制snort规则snort作为网络入侵检测系统,拥有自己的规则语言。从语法上看,该规则语言非常简单,又足够强大。1)snort规则语法snort规则语法如下:rules_actionprotocolsrc_ipsrc_port-dst_ipdst_port(rules_option)10.5Linux网络服务安全10.5.3入侵检测IDSsnort的规则可以从逻辑上分成规则头部和规则选项两个部分。规则头部包括规则动作、协议类型、源/目的地址(对于特定网络地址还包括子网掩码)以及源/目的端口;规则选项包含了报警消息和异常包的特征码信息,使用这些特征码来决定是否采取规则规定的动作。最基本的规则只包含rules_action、protocol、ip_addr(包括src_ip和dst_ip)以及port(包括src_port和dst_port)4个域。例如