一、what is snort?什么是snort?
Snort 是一款开源的 网络入侵检测系统(NIDS) 和 网络入侵防御系统(NIPS),能够实时监控网络流量,检测恶意行为(如端口扫描、SQL注入、DDoS攻击等),并触发告警或主动防御的工具。
二、IPS与IDS介绍
IDS:可分为:NIDS(网络入侵检测系统)、HIDS(主机入侵检测系统),NIDS是检测网络各区域的流量,HIDS是检测单个端点设备的流量。
IPS:可分为NIPS(网络入侵防御系统)、HIPS(主机入侵防御系统)、NBA(行为入侵防御系统)、WIPS(无线入侵防御系统)。
其中NBA(行为入侵检测系统)与NIPS 的区别在于:基于行为的系统需要一段训练期(也称为“基线”)来学习正常流量,并区分恶意流量和威胁。
三、snort的安装
Linux:
sudo apt-get update sudo apt-get install snort
配置文件路径
/etc/snort/snort.conf
四、snort的使用说明
snort分为三种模式:
1.Sniffer Mode(嗅探模式: 读取 IP 数据包并在控制台应用程序中提示它们。
2.Packet Logger Mode(包记录模式):记录所有访问网络的 IP 包(入站和出站)
3.NIDS and NIPS:根据用户定义的规则,丢弃被视为恶意的数据包
1)嗅探模式:
-
命令:snort -V
-
-V:查看版本的信息
-
命令:snort -c /etc/snort/snort.conf -T
-
-c:用于识别配置文件
-
-T:自我测试参数
-
-q:静默模式可防止 Snort 显示默认横幅和关于您配置的初始信息
-
-i:定义要监听/嗅探的特定网络接口
2)数据包记录模式:
-
-l:-l . 表示在当前目录中创建日志
-
-k:ASCII 格式的日志包
-
-r:读取 Snort 的日志文件
-
-n X:指定要读取的第X个数据包
示例:sudo snort -dev -K ASCII -l .
解释:会在当前目录下创建日志和抓取到的数据包,前提是要有数据可抓,并将数据转化为SACII,-dev表示的是d数据包的形式,e只抓头部,v是在控制台(终端)中显示。
3)其余参数:
-N:禁用日志记录,终端窗口(控制台)无法看到输出日志,除非使用了-v或-X -D:背景模式,命令行输出将提供使用参数请求的信息
-A:警报模式
警报模式分为:
console:控制台上显示快速样式警告
cmg:带头部信息的警告
full:提供警报的所以信息,生成一个警报文件
fast:显示警报的消息,时间,源和目的地址及端口,生成一个警报文件
none:禁用警报。
4)修改/编辑警报规则
修改当前的配置规则文件路径: sudo gedit /etc/snort/rules/local.rules
或者直接找到local.rules进行修改即可。
修改规则的语法可参考以下:
1.编写一个规则来过滤 IP ID "35369 (过滤IP的ID字段)
alert tcp any any <> any any (msg: "ID TEST"; id:35369; sid: 100001; rev:1;)
解释:msg中双引号的内容为警报时显示的名称,,id表示检测的IP ID号,sid表示会话,rev表示版本。
示例:
检测到后就可以查看alert表,cat alert。
2.编写一个规则来过滤flag标志
alert tcp any any <> any any (msg: "FLAG TEST"; flags:S; sid: 100001; rev:1;)
主要区别在于将id换为了flags,其中S代表是SYN包,F代表FIN包,R代表RST包,P代表PSH(PHUS)包,A代表ACK包,U代表URG包。
示例:
能检测到有一个包是含SYN标志的。
3.过滤相同的源IP和目地IP
alert ip any any <> any any (msg: "SAME-IP TEST"; sameip; sid: 100001; rev:1;)
解释:ip即协议,sameip表示相同的项。
示例:
通过这条规则可以检测到13个警报,cat alert其中广播包不是我们需要的,所以减去3或减去6(广播包和IPV6的包)。
4.过滤数据包的大小
alert ip any any <> any any (msg: "SEQ TEST"; dsize:100<>300; sid: 100001; rev:1;)
解释:dsuze代表100到300之间。
示例:
5.过滤IP地址或者端口
alert icmp any any <> any any (msg: "ICMP Packet From "; sid: 100001; rev:1;)
解释:警报 icmp包 任何源ip 任何源端口<> 任何目的ip 任何目的端口(消息:“ICMP”;sid:100001;rev:1)
这条规则是过滤192.168.1.56的ICMP包。
alert icmp 192.168.1.56 any <> any any (msg: "ICMP Packet From "; sid: 100001; rev:1;)
范围包的写法:
alert icmp [192.168.1.0/24, 10.1.1.0/24] any <> any any (msg: "ICMP Packet Found"; sid: 100001; rev:1;)
这条规则是过滤21端口的TCP包。
alert tcp any any <> any 21 (msg: "FTP Port 21 Command Activity Detected"; sid: 100001; rev:1;)
范围包的写法 1-1024的端口,包含1024
alert tcp any any <> any 1:1024 (msg: "TCP 1-1024 System Port Activity"; sid: 100001; rev:1;)
写法2:
alert tcp any any <> any :1024 (msg: "TCP 0-1024 System Port Activity"; sid: 100001; rev:1;)
写法3:
alert tcp any any <> any [1,1024] (msg: "name"; sid: 100001; rev:1;)
示例: