实验
Snort
安装
# 禁止在apt安装时弹出交互式配置界面 export DEBIAN_FRONTEND=noninteractive apt install snort
实验一:配置snort为嗅探模式
# 显示IP/TCP/UDP/ICMP头 snort -v # 显示应用层数据 snort -vd # 显示数据链路层报文头 snort -vde # -b 参数表示报文存储格式为 tcpdump 格式文件 # -q 静默操作,不显示版本欢迎信息和初始化信息 snort -q -v -b -i eth1 "port not 22" # 使用 CTRL-C 退出嗅探模式 # 嗅探到的数据包会保存在 /var/log/snort/snort.log.<epoch timestamp> # 其中<epoch timestamp>为抓包开始时间的UNIX Epoch Time格式串 # 可以通过命令 date -d @<epoch timestamp> 转换时间为人类可读格式 # exampel: date -d @1511870195 转换时间为人类可读格式 # 上述命令用tshark等价实现如下: tshark -i eth1 -f "port not 22" -w 1_tshark.pcap
实验二:配置并启用snort内置规则
# /etc/snort/snort.conf 中的 HOME_NET 和 EXTERNAL_NET 需要正确定义 # 例如,学习实验目的,可以将上述两个变量值均设置为 any snort -q -A console -b -i eth1 -c /etc/snort/snort.conf -l /var/log/snort/
实验三:自定义snort规则
# 新建自定义 snort 规则文件 cat << EOF > /etc/snort/rules/cnss.rules alert tcp \$EXTERNAL_NET any -> \$HTTP_SERVERS 80 (msg:"Access Violation has been detected on /etc/passwd ";flags: A+; content:"/etc/passwd"; nocase;sid:1000001; rev:1;) alert tcp \$EXTERNAL_NET any -> \$HTTP_SERVERS 80 (msg:"Possible too many connections toward my http server"; threshold:type threshold, track by_src, count 100, seconds 2; classtype:attempted-dos; sid:1000002; rev:1;) EOF
# 添加配置代码到 /etc/snort/snort.conf include $RULE_PATH/cnss.rules
snort -q -A fast -b -i eth1 -c /etc/snort/snort.conf -l /var/log/snort/
实验四:和防火墙联动
本实验需要用到的脚本代码 ,请下载后解压缩:
# 解压缩 Guardian-1.7.tar.gz tar zxf guardian.tar.gz # 安装 Guardian 的依赖 lib apt install libperl4-corelibs-perl
本次实验需要的一个最小化的实验环境是2台主机,假设网络拓扑信息如下:
- VM-1 IP: 192.168.56.101 eth1 Host-only 运行
nmap
扫描 VM-2 - VM-2 IP: 192.168.56.102 eth1 Host-only 运行
snort
和guardian.pl
开始实验之前,VM-1 和 VM-2 可以互相双向访问。
在VM-2上先后开启 snort
和 guardian.pl
# 开启 snort snort -q -A fast -b -i eth1 -c /etc/snort/snort.conf -l /var/log/snort/
# 假设 guardian.tar.gz 解压缩后文件均在 /root/guardian 下 cd /root/guardian
编辑 guardian.conf 并保存,确认以下2个参数的配置符合主机的实际环境参数。
HostIpAddr 192.168.56.102 Interface eth1
# 显示IP/TCP/UDP/ICMP头 snort -v # 显示应用层数据 snort -vd # 显示数据链路层报文头 snort -vde # -b 参数表示报文存储格式为 tcpdump 格式文件 # -q 静默操作,不显示版本欢迎信息和初始化信息 snort -q -v -b -i eth1 "port not 22" # 使用 CTRL-C 退出嗅探模式 # 嗅探到的数据包会保存在 /var/log/snort/snort.log.<epoch timestamp> # 其中<epoch timestamp>为抓包开始时间的UNIX Epoch Time格式串 # 可以通过命令 date -d @<epoch timestamp> 转换时间为人类可读格式 # exampel: date -d @1511870195 转换时间为人类可读格式 # 上述命令用tshark等价实现如下: tshark -i eth1 -f "port not 22" -w 1_tshark.pcap
0
在VM-1上用 nmap
暴力扫描 VM-2:
# 显示IP/TCP/UDP/ICMP头 snort -v # 显示应用层数据 snort -vd # 显示数据链路层报文头 snort -vde # -b 参数表示报文存储格式为 tcpdump 格式文件 # -q 静默操作,不显示版本欢迎信息和初始化信息 snort -q -v -b -i eth1 "port not 22" # 使用 CTRL-C 退出嗅探模式 # 嗅探到的数据包会保存在 /var/log/snort/snort.log.<epoch timestamp> # 其中<epoch timestamp>为抓包开始时间的UNIX Epoch Time格式串 # 可以通过命令 date -d @<epoch timestamp> 转换时间为人类可读格式 # exampel: date -d @1511870195 转换时间为人类可读格式 # 上述命令用tshark等价实现如下: tshark -i eth1 -f "port not 22" -w 1_tshark.pcap
1
guardian.conf 中默认的来源IP被屏蔽时间是 60 秒(屏蔽期间如果黑名单上的来源IP再次触发snort报警消息,则屏蔽时间会继续累加60秒)
# 显示IP/TCP/UDP/ICMP头 snort -v # 显示应用层数据 snort -vd # 显示数据链路层报文头 snort -vde # -b 参数表示报文存储格式为 tcpdump 格式文件 # -q 静默操作,不显示版本欢迎信息和初始化信息 snort -q -v -b -i eth1 "port not 22" # 使用 CTRL-C 退出嗅探模式 # 嗅探到的数据包会保存在 /var/log/snort/snort.log.<epoch timestamp> # 其中<epoch timestamp>为抓包开始时间的UNIX Epoch Time格式串 # 可以通过命令 date -d @<epoch timestamp> 转换时间为人类可读格式 # exampel: date -d @1511870195 转换时间为人类可读格式 # 上述命令用tshark等价实现如下: tshark -i eth1 -f "port not 22" -w 1_tshark.pcap
2
实验思考题
- IDS与防火墙的联动防御方式相比IPS方式防御存在哪些缺陷?是否存在相比较而言的优势?
- 使用 Suricata 代替 Snort , 重复本实验。
- 配置 Suricata 为 IPS 模式,重复
实验四
。
From : 互联网
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...