20232906 2023-2024-2 《网络与系统攻防技术》第五次作业
1.实验内容
一、防火墙配置(IP地址仅供参考,以实际为准)
任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问
二、动手实践:Snort
使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在学习通中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
Snort运行命令提示如下:
①从离线的pcap文件读取网络日志数据源
②在snort.conf中配置明文输出报警日志文件
③指定报警日志log目录(或缺省log目录=/var/log/snort)
三、分析配置规则
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
2.实验过程
2.1 防火墙配置
2.1.1 过滤ICMP数据包,使得主机不接收Ping包
-
简介:网络隔离最初的形式是网段的隔离。因为不同的网段之间的通信是通过路由器连通的,要使某些网段之间不互通,或有条件地互通,访问控制技术就应运而生,也就出现了防火墙。防火墙是不同网络互联时最初的安全网关,其作用就是建立网络的“城门”,控制进入网络的必经通道。防火墙的主要缺点是不能对应用层进行识别,无法防范隐藏在应用层中的病毒和恶意程序。
-
这里我们使用Kali作为攻击机,如图一所示,Kali的IP地址为192.168.200.6。
图一 Kali的IP地址 -
使用WinXPattacker作为靶机,如图二所示,靶机IP为192.168.200.10。
图二 WinXPattacker的IP地址 -
首先我们不启用防火墙,可以发现双方均可以收到Ping对方的响应,如图三所示。
图三 不启用防火墙双方均可以Ping通 -
然后我们在Kali命令行中输入命令添加禁止ICMP包进入的规则,具体命令如下:
iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
-A :添加防火墙规则
INPUT:入站规则
-p: 匹配协议,如果前面有“!”表示取反
–icmp-type echo-request:指定具体匹配ICMP协议中的echo-request(回显请求,即Ping请求)
-j REJECT:执行参数REJECT
P.S.:REJECT 和 DROP 基本一样,区别在于它除了阻塞包之外,还向发送者返回错误信息。 -
使用命令
iptables -L
可以查看配置的规则。 -
重新进行Ping测试,可以发现此时Kali可以Ping通WinXP,但WinXP已经无法Ping通Kali,如图四所示。
图四 Kali单向Ping通WinXP
2.1.2 只允许特定IP地址访问主机的某一网络服务,而其他的IP地址无法访问
-
除了2.1.1使用过的两个虚拟机Kali和WinXP外,我们还需要一个虚拟机SEEDUbuntu9,如图五所示,靶机IP为192.168.200.5。
图五 SEEDUbuntu9的IP为192.168.200.5 -
在Kali上启动Apache服务,使用命令:
service apache2 start
-
此时在WinXP和SEEDUbuntu9上访问Kali的IP地址,可以发现,两个虚拟机都可以成功访问Kali的Web服务。
图六 两个虚拟机都可以成功访问Kali的Web服务 -
之后,我们使用以下命令来只允许WinXP访问Kali的Web服务。
iptables -I INPUT -p tcp --dport 80 -j DROP iptables -I INPUT -p tcp -s 192.168.200.10 --dport 80 -j ACCEPT
iptables执行规则时,是从从规则表中从上至下顺序执行的,如果没遇到匹配的规则,就一条一条往下执行,如果遇到匹配的规则后,那么就执行本规则,执行后根据本规则的动作(accept, reject, log等),决定下一步执行的情况,后续执行一般有三种情况。
1、一种是继续执行当前规则队列内的下一条规则。比如执行过Filter队列内的LOG后,还会执行Filter队列内的下一条规则。
2、一种是中止当前规则队列的执行,转到下一条规则队列。比如从执行过accept后就中断Filter队列内其它规则,跳到nat队列规则去执行
3、一种是中止所有规则队列的执行。 -
在SEEDUbuntu9上的火狐浏览器中找到Tools – Clear Recent History – Clear Now,然后再次访问Kali的Web服务,此时可以发现WinXP可以正常访问,但SEEDUbuntu9无法访问,如图七所示。
图七 只有WinXP可以成功访问Kali的Web服务
2.2 动手实践:Snort
-
我们使用Kali进行实验。
-
使用如下命令下载snort
apt install snort
-
下载完成后使用以下命令对
listen.pcap
进行检测。snort -c /etc/snort/snort.lua -r listen.pcap
-c <规则所在位置>
-r <listen.pcap所在位置> -
经过检测得到如图八所示结果。共计有20个ARP欺骗数据包,有135580个检测数据包,有135515个端口扫描数据包。
图八 Snort检测结果 -
查看日志,使用如下命令,可以得到图九的结果:
cd /var/log/snort cat ./snort.alert.fast
图九 查看Snort日志
2.3 分析配置规则
-
打开蜜罐,输入命令:
vim /etc/init.d/rc.firewall
,可以看到create_chains函数中新建了许多规则链,包括黑名单、白名单、防护名单等:
图十 查看Snort日志 -
首先使用命令
su -
并输入密码进入管理员模式,然后输入iptables -L | more
查看实际规则列表,如图十一所示。
图十一 查看蜜网网关防火墙列表 -
通过
more /etc/init.d/snortd
打开Snort脚本文件,可以看到监听网卡和存储配置文件的位置,如图十二所示。
图十二 查看蜜网网关监听网卡和存储配置文件 -
输入more /etc/init.d/hw-snort_inline可以看到Snort_inline运行时参数。
图十三 查看蜜网网关监听网卡和存储配置文件# 其中一行命令解析 ${SNORT} -D -c ${CONF} -Q -l $DIR/$DATE -t $DIR
-D:Daemon模式
-c:读取config文件
-Q:使用QUEUE模式
-l:输出log文件的目录
-t:改变程序执行时所参考的根目录位置 -
防火墙、NIDS、NIPS是如何启动
使用chkconfig --list|grep snort
命令来对linux上运行的服务进行查询,可以发现NIDS的0~6都是off,说明是需要手动启动的,而防火墙和NIPS不全是off,是跟随系统启动的。
图十四 查看蜜网网关监听网卡和存储配置文件 -
蜜网网关中的Snort规则是如何升级
使用命令more /etc/honeywall.conf
打开配置文件,找到update variables,可以看到其值为no,不自动更新,如图十五所示。
图十五 查看蜜网网关配置文件
3.问题及解决方案
- 问题1:在防火墙实验时,只允许WinXP访问Kali的Web服务但SEEDUbuntu9依然可以访问Kali。
- 问题1解决方案:浏览器缓存未清理,在SEEDUbuntu9上的火狐浏览器中找到Tools – Clear Recent History – Clear Now,然后再次访问Kali的Web服务,此时SEEDUbuntu9无法访问。
4.学习感悟、思考等
本次实验进行了网络边界防御的相关实践,通过动手的方式我弄懂了多种常见的边界防护工具。在本次实验中,经过在网上寻找相关资料,我成功地完成了相关的实验内容,本次实验的内容较为简单,主要在于理解每种攻击的原理,通过这次实验,也使我明白了边界防御的重要性,通过防火墙、Snort规则等方式可以有效防止大部分网络攻击。
感谢王老师的细心讲解和耐心帮助,也感谢在实验过程中给我帮助的同学们。正因为有你们的帮助我才能够顺利地完成本次实验,谢谢!