20252910 2025-2026-2《网络攻防实践》第5次作业
20252910 2025-2026-2《网络攻防实践》第5次作业
1、实验内容
本次实验涵盖防火墙配置、入侵检测与蜜网网关规则分析三大核心内容:
-
防火墙配置:在 Linux(iptables)或 Windows 个人防火墙上操作,一是过滤 ICMP 数据包,禁止主机接收 Ping 包;二是仅允许特定 IP 访问主机指定网络服务,禁止其他 IP 访问。
-
Snort 实践:在指定攻击机上,使用 Snort 读取给定 pcap 文件进行入侵检测,配置日志输出,获取报警日志并说明检测到的攻击。
-
规则分析:分析蜜网网关的防火墙及 IDS/IPS 配置规则,说明其如何通过相关技术实现攻击数据捕获与控制。
2、实验过程
2.1 环境准备
| 虚拟机 | 信息 | 核心角色 |
|---|---|---|
| Kali | IP地址:192.168.200.6 | Snort检测执行机、靶机、iptables防火墙配置机 |
| SEED Ubuntu | IP地址:192.168.200.4 | 攻击机 |
| WinXPattacker | IP地址:192.168.200.5 | 对比测试攻击机 |
| 蜜网网关 | - | 防火墙与IDS/IPS规则分析对象 |
所有虚拟机均处于同一 VMnet8 局域网段,实验前已确认各节点间初始网络连通正常,且 SeedUbuntu9、Kali 均已完成 apt 源更新,具备基础工具安装环境。
2.2 iptables 防火墙配置实践
2.2.1 防火墙配置过滤ICMP数据包
打开kali虚拟机,切换到root权限后输入命令iptables -L查看当前的防火墙规则,结果显示当前的规则列表为空

打开seed虚拟机,使用ping命令测试seed与kali(192.168.200.6)的连通性,结果显示可以正常ping通

在kali虚拟机的root权限下输入命令iptables -A INPUT -p icmp -j DROP配置防火墙,过滤icmp包,并通过iptables -L查看规则,结果显示规则配置成功
-
iptablesLinux 防火墙管理工具 -
-A INPUT追加规则到INPUT链(处理进入本机的流量) -
-p icmp匹配协议为 ICMP(ping 协议使用的就是 ICMP) -
-j DROP匹配到的流量直接丢弃(无任何响应)

切换回seed虚拟机,再次ping kali虚拟机发现终端无任何 ICMP 响应包返回,持续发送的请求包 100% 丢失,防火墙过滤规则生效。
抓包验证
在 Kali 中打开 Wireshark,对 eth0 网卡进行抓包,可看到 目标主机(192.168.200.6)防火墙拦截了 ICMP 请求,导致源主机(192.168.200.4)seedPing 不通,只有请求没有响应(no response found!)。

显然使用icmp协议的ping命令被kali虚拟机中刚刚下发的防火墙规则过滤掉了
规则验证完成后,在 kali中执行以下命令,清空本次添加的自定义规则,恢复防火墙初始状态:
iptables -F
清空所有 iptables 防火墙规则(一键恢复默认放行)
2.2.2 防火墙配置特定ip访问
打开kali虚拟机输入一下命令
service apache2 start
启动Apache2网页服务

在不进行任何设置的情况下,SEED和WinXP都可以访问http://192.168.200.6

回到Kali中,输入以下指令
iptables -I INPUT -p tcp --dport 80 -j DROP
-
iptables:防火墙工具 -
-I INPUT:插入一条规则到入站流量链 -
-p tcp:匹配 TCP 协议 -
--dport 80:匹配目标端口 80(HTTP 网页服务) -
-j DROP:匹配到就直接丢弃
此时发现SEED和WinXP已经无法访问网址了


在Kali中输入以下指令
iptables -I INPUT -p tcp -s 192.168.200.5 --dport 80 -j ACCEPT # 仅允许WinXP虚拟机访问本机80端口

此时发现WinXP虚拟机中可以访问网址了

iptables -F
清空所有 iptables 防火墙规则(一键恢复默认放行)

2.3 Snort 入侵检测实践
打开Kali虚拟机,输入以下指令进行分析
snort -c /etc/snort/snort.lua -r /home/kali/Desktop/listen.pcap
离线分析pcap流量包

命令执行完成后,终端输出流量解码统计信息:本次共分析 135580 个数据包,其中以太网帧 135580 个,IPv4 数据包 135560 个,TCP 数据包 135512 个(占比 99.95%),UDP 数据包 3 个,ARP 数据包 20 个,整体流量以 TCP 协议为主。

生成报警日志
snort -c /etc/snort/snort.lua -r /home/kali/Desktop/listen.pcap -l /home/kali/Desktop -A full
snort:启动入侵检测工具-c 配置文件:指定 Snort 配置-r pcap文件:离线分析抓包文件-A full(详细 / 完整)
报警日志查看

打开日志文件,即可查看到检测的详细信息,发现是Nmap发起的端口扫描攻击,并且能够看到攻击机的IP地址为172.31.4.178,靶机的IP地址为172.31.4.188
2.4 蜜网网关防火墙与 IDS/IPS 配置规则分析
打开HoneyWall虚拟机,输入指令查看蜜网网关防火墙的配置规则
执行以下命令,打开蜜网网关的防火墙核心配置文件,查看规则定义逻辑:
vim /etc/init.d/rc.firewall
配置文件中通过多个核心函数定义了防火墙的完整规则体系,核心内容如下:
create_chains() 函数
创建了三大核心规则链,分别是 BlackList(黑名单,禁止特定 IP 通信)、WhiteList(白名单,放行可信 IP 流量)、FenceList(防护名单,限制蜜罐对外访问的高危 IP);同时创建了 tcpHandler、udpHandler、icmpHandler 等协议专属处理链,实现对不同协议流量的精细化管控。

load_modules() 函数
加载 iptable_filter、iptable_nat、ipt_LOG 等内核模块,为防火墙提供包过滤、地址转换、日志记录等核心功能支持。

default_policy() 函数
设置防火墙默认策略,将 FORWARD、INPUT、OUTPUT 三条链的默认策略均设置为 DROP,遵循最小权限原则,仅放行明确配置的流量。

management_policy() 函数
定义蜜网网关的管理口访问规则,仅允许指定管理网段通过 SSH、HTTPS 协议访问网关管理界面,限制非法管理访问,保障网关自身安全。
localhost_policy() 函数
放行本地环回接口 lo 的流量,保障网关本地服务的正常运行。

执行以下命令,查看防火墙生效的规则表,验证默认策略与规则配置:
iptables -t filter -L | less

执行结果显示,INPUT、FORWARD、OUTPUT 链默认策略均为 DROP,仅放行管理网段的 SSH、HTTPS 流量,以及已建立的 TCP 连接回程流量;对蜜罐网段的入站流量进行了详细的日志记录与转发管控,符合蜜网网关的流量控制需求。
2.5 IDS/IPS 配置规则分析
Snort IDS 运行参数分析
执行以下命令,查看 Snort 入侵检测系统的启动脚本,获取实际运行参数:
vim /etc/rc.d/init.d/snortd

脚本中定义了 Snort 的核心启动参数:默认监听 eth0 网卡,加载 /etc/snort/snort.conf 配置文件中的检测规则,以守护进程模式运行,将报警日志输出至指定目录,实现对蜜网流量的实时入侵检测。
Snort_inline IPS 运行参数分析
执行以下命令,查看 Snort_inline 入侵防御系统的启动脚本,分析防御机制:
vim /etc/init.d/hw-snort_inline

脚本中定义了 Snort_inline 的核心启动参数:以 -D 守护进程模式运行,-c 加载配置文件,-Q 开启 QUEUE 模式,与 iptables 联动实现流量的实时拦截。该模式下,Snort_inline 不仅能检测攻击,还能直接丢弃恶意数据包、阻断攻击连接,实现入侵防御功能。
服务自启状态查看
执行以下命令,查看防火墙与 IDS/IPS 服务的开机自启配置:
chkconfig --list | grep iptables
chkconfig --list | grep snort

执行结果显示:iptables 服务与 hw-snort_inline 服务在 2/3/4/5 运行级别均为 on,开机自动启动;snortd 服务默认关闭,按需手动启动。说明蜜网网关默认开启防火墙与入侵防御功能,保障蜜网环境持续防护。
规则更新配置查看
执行以下命令,查看蜜网网关的全局配置文件,确认 Snort 规则更新策略:

配置文件中显示,Snort 检测规则默认关闭自动更新,可手动配置规则更新服务器与更新周期,同时定义了蜜罐网段、管理口白名单、DNS 服务器白名单等核心配置,为防火墙与 IDS/IPS 提供基础配置参数。
3、实验中遇到的问题
- 在使用 Snort 检测
listen.pcap文件时,无法生成日志文件。
一开始我是利用重定向,把检测的信息直接输入到文件中,发现根本不对。和别人做的不一样,后来问了豆包需要改配置文件。
解决办法:
执行命令vim /etc/snort/snort.lua编辑 Snort3 主配置文件,在文件中添加配置项alert_full = {file=true}即可解决问题。

- honeywall的web的密码忘记了登录不上
解决方法:直接重置 Walleye 网页密码
执行以下命令登录 Walleye 数据库
mysql -u roo -p walleye_users_0_3
执行密码重置 SQL
UPDATE user SET password='honey' WHERE login_name='roo'; FLUSH PRIVILEGES; exit;
最后成功修改密码
4、学习感悟与思考
通过本次实践,我掌握了iptables防火墙配置和Snort入侵检测的基本操作,理解了蜜网网关的核心工作原理。防火墙是网络安全的第一道防线,能有效控制访问权限;Snort作为IDS工具,可及时发现异常攻击行为,两者结合是保障网络安全的重要手段。在实际网络环境中,单一安全工具难以抵御所有攻击,需结合防火墙、IDS/IPS、蜜罐等多种工具,构建多层次安全防护体系。同时,安全配置需贴合实际需求,规则需定期更新,才能有效应对不断变化的网络攻击手段。

浙公网安备 33010602011771号