20252902 2025-2026-2 《网络攻防实践》第5周作业
1. 实践内容
本周的学习核心围绕网络访问控制与入侵检测系统的实际应用展开。实践部分主要涵盖了三个关键任务,旨在通过亲自动手配置与分析,加深对网络防御体系底层逻辑的理解:
- 防火墙配置与访问控制:在Linux平台上利用
iptables编写防火墙规则。具体包括两个子任务:一是实现对ICMP协议数据包的拦截,使主机实现“禁Ping”效果;二是实现基于IP地址的服务访问控制,仅放行特定白名单IP对本机Web服务的访问请求,同时阻断其他未授权IP。 - Snort入侵检测分析:使用Snort开源入侵检测系统对预先抓取到的网络流量包(pcap文件)进行离线解码与特征匹配。通过配置Snort工作环境,使其能够成功读取数据源并输出详细的报警日志,进而分析流量中潜藏的具体攻击行为(如端口扫描)。
- 蜜网网关防御规则剖析:深入虚拟网络攻防环境(HoneyWall),实地考察蜜网网关中防火墙(
iptables)与入侵检测/防御系统(IDS/IPS)的配置文件和启动脚本。分析网关如何通过默认策略、黑白名单以及动态防御机制来达成诱捕攻击并控制风险流出的目的。
2. 实践过程
本次实验的虚拟网络拓扑环境如下表所示:
| 虚拟机名称 | IP地址 | MAC地址 | 角色 |
|---|---|---|---|
| Kali Linux | 192.168.200.7 | 00:0c:29💿4a:26 | 攻击机 / 防火墙配置测试机 |
| SEED Ubuntu | 192.168.200.9 | 00:0c:29:37:5b:cc | 局域网其他主机 / 攻击机 |
| WinXPattacker | 192.168.200.6 | 00-0C-29-16-DF-4D | 局域网白名单主机 |
2.1 防火墙配置 (iptables)
2.1.1 过滤ICMP数据包(禁Ping)
首先在目标机(SEED)上确认当前的防火墙状态。使用 iptables -L 命令查看,系统默认未配置任何拦截规则。

此时,使用Kali虚拟机尝试 ping 192.168.200.9,可以正常收到ICMP回显包,网络连通性正常。

随后,在SEED虚拟机中追加一条阻断所有入站ICMP协议的规则:
iptables -A INPUT -p icmp -j DROP
再次使用 iptables -L 查看,可以看到INPUT链中已成功添加对ICMP数据包的DROP策略。




测试完毕后,在SEED中使用 iptables -F 清空规则,恢复网络默认状态。
2.1.2 特定IP服务访问控制
本环节以Web服务(HTTP,端口80)为例。首先在Kali虚拟机中启动Apache2服务:
service apache2 start
在未配置防火墙时,SEED(192.168.200.9)和WinXP(192.168.200.6)均可通过浏览器成功访问Kali的Web主页 http://192.168.200.7/。



为实现精细化访问控制,在Kali中插入规则,首先阻断所有针对本机80端口的TCP请求:
iptables -I INPUT -p tcp --dport 80 -j DROP
此时,SEED和WinXP刷新页面均显示连接失败。



接着,在Kali的防火墙INPUT链首部(优先级最高)插入一条放行规则,仅允许WinXP(192.168.200.6)访问80端口:
iptables -I INPUT -p tcp -s 192.168.200.6 --dport 80 -j ACCEPT

验证结果:WinXP虚拟机恢复了对 http://192.168.200.7/ 的访问权限,而SEED虚拟机依然处于被拦截状态,成功实现了基于源IP的网络服务访问控制。

2.2 动手实践:Snort入侵检测
将待分析的流量包 listen.pcap 放置在Kali桌面。由于使用的是Snort 3,执行以下命令进行离线流量分析并指定日志输出目录:
snort -c /etc/snort/snort.lua -r /home/kali/Desktop/listen.pcap -l /home/kali/Desktop

分析完成后,Snort会输出数据包的统计信息。从概览中可以看到,该流量包中绝大多数(99.95%)为TCP数据包。

2.3 分析蜜网网关配置规则
进入HoneyWall(蜜网网关)虚拟机,探索其底层的安全防护配置。
1. 防火墙配置分析
使用 vim /etc/init.d/rc.firewall 查看防火墙的启动与管理脚本。
在脚本的 create_chain 函数附近,可以观察到蜜网网关设定了明确的黑名单(Blacklist)、白名单(Whitelist)和防护名单(Fencelist)机制。
脚本中的 default_policy 定义了网关的默认处理逻辑;而黑名单加载模块明确指出了其功能:无条件阻断恶意IP的所有通信。反之,白名单模块则对信任IP的通信进行放行。


除了命令行,通过WinXP访问蜜网网关的Web管理界面(http://192.168.200.8/,账号roo),点击“Firewall Rules”菜单,可以更加直观地查看到当前的生效规则和包过滤状态。

2. IDS/IPS与核心配置分析
使用 vim /etc/init.d/snortd 可以查看Snort服务的启动守护脚本,该脚本控制着网络层数据的实时捕获与检测逻辑。


最后,查看蜜网系统的核心控制文件 vim /etc/honeywall.conf。该文件统筹了HoneyWall的运作模式,包括如何将防火墙拦截与IDS报警进行联动,从而既能捕获攻击者对蜜罐主机的攻击细节,又能严格控制外发流量,防止蜜罐被利用成为跳板机。


3. 学习中遇到的问题及解决
- 问题1:在使用Snort 3对
listen.pcap文件进行离线检测时,发现指定目录下没有生成预期的报警日志文件。 - 问题1解决方案:查阅文档后发现需要手动修改配置文件。使用
vim /etc/snort/snort.lua编辑Snort的主配置文件,在对应位置添加了一行alert_full = {file=true}开启全量日志文件输出功能。 - 问题2:修改配置后日志文件虽然生成了,但是文件内容为空,未能检测出任何攻击特征。
- 问题2解决方案:经过多方排查和对比,发现Snort 3默认并未开启内建规则。再次进入
snort.lua配置文件,加入一行enable_builtin_rules = true。保存退出后重新执行离线分析命令,成功匹配到了Nmap的扫描特征并输出了详细的日志。 - 问题3:在HoneyWall虚拟机中尝试使用
chkconfig --list | grep iptables等命令查看服务开机自启状态时,命令执行失败或无响应。 - 问题3解决方案:考虑到HoneyWall镜像版本较为陈旧,部分系统管理命令可能存在兼容性问题。为了不阻塞实验进度,跳过了该自启状态的查询步骤,将重点转向直接对
/etc/init.d/目录下的核心脚本文件进行源码级别的直接分析。
4. 实践总结
本周的实验具有极强的实操性。通过亲手编写 iptables 防火墙的访问控制规则,并利用 Snort 进行离线的流量检测分析,我将之前停留在理论层面的包过滤原理、状态检测以及网络攻击溯源等概念转化为了具体的终端指令和配置参数。
在排查 Snort 配置文件中日志未能正常输出的问题时,也深刻体会到了在实际的网络安全实践和环境搭建中,耐心调试和阅读底层配置的重要性。同时,对 HoneyWall 防火墙和 IDS/IPS 联动规则的分析,让我对工业级的安全防御与诱捕机制有了更立体的认识。扎实的渗透与防御演练是理解复杂网络安全体系的必经之路,这次实验极大地巩固了我的网络攻防底层实践能力。
参考资料
- [1] 《网络攻防技术与实践》
- [2] 网络攻防实践课程在线指导材料
- [3] Snort 3 User Manual

浙公网安备 33010602011771号