20252914 2025-2026-2 《网络攻防实践》第4周作业
1.知识点梳理与总结
一、iptables 防火墙配置知识点梳理
-
- 防火墙基础概念
防火墙是网络访问控制安全设备,工作在网络层 / 传输层,通过数据包过滤规则,对进出主机的 IP 数据包进行匹配、允许、拒绝、丢弃,实现网络访问隔离与安全防护。
- 防火墙基础概念
-
- ICMP 协议与 Ping 禁止原理
Ping 命令基于ICMP 报文(互联网控制报文协议),ICMP Echo Request(请求)和 Echo Reply(应答)实现连通性探测。
- ICMP 协议与 Ping 禁止原理
-
- 特定 IP 访问控制原理(白名单策略)
网络服务(HTTP/FTP/SMB)对应固定TCP 端口,服务监听本机端口等待连接;
默认策略:拒绝所有外部 IP 访问本机服务;
白名单放行:仅允许指定 IP(192.168.200.3)访问对应服务端口;
黑名单阻断:其他 IP(192.168.200.4)访问同一服务直接拒绝 / 丢弃;
- 特定 IP 访问控制原理(白名单策略)
-
- iptables 规则链知识点
INPUT 链:处理外部进入本机的数据包(实验主要配置链)
OUTPUT 链:本机向外发送数据包
FORWARD 链:路由转发数据包
规则匹配顺序:从上到下匹配,匹配即执行动作(ACCEPT/DROP/REJECT)。
- iptables 规则链知识点
二、Snort 入侵检测实践知识点梳理
-
- 入侵检测系统 IDS 基础概念
IDS(入侵检测系统):被动监听网络流量,不阻断流量,只检测告警,区别于防火墙主动过滤;用于发现网络扫描、端口探测、攻击行为、异常流量。Snort 是开源轻量级网络入侵检测系统 NIDS,工作在网络嗅探模式。
- 入侵检测系统 IDS 基础概念
-
- 离线 PCAP 流量分析原理
PCAP 文件是网络流量抓包日志文件,保存完整原始网络数据包;实验不抓实时流量,采用离线分析模式:Snort 读取已有 pcap 文件,逐条匹配攻击规则,检测网络扫描行为。
- 离线 PCAP 流量分析原理
-
- 对应攻击类型知识点
实验 pcap 为网络扫描流量(端口扫描、主机存活扫描),Snort 检测出:主机探测扫描、端口枚举扫描、暴力探测类入侵行为,属于主动侦察类攻击,是入侵前期准备行为。
- 对应攻击类型知识点
2.实验过程
一、配置Linux操作系统平台上的iptables,使主机不接收 Ping 包
在SeedUbuntu虚拟机中输入指令:sudo iptables -L,查看当前防火墙默认规则:

可以看到全为空,接下来配置 ICMP 包过滤规则:输入sudo iptables -A INPUT -p icmp -j DROP(-A INPUT:向入站数据包链末尾添加规则;-p icmp:匹配ICMP 协议(Ping 使用的协议);-j DROP:匹配后直接丢弃数据包,不响应)

可以看到添加的规则:禁止所有主机 Ping 本机,收到 Ping 包直接丢弃、不回复。
在kali机中进行ping连通性测试:
ping 192.168.200.4

返回SeedUbuntu,输入sudo iptables -D INPUT -p icmp -j DROP删除规则:

再次检测连通性情况:

二、只允许特定IP地址访问主机的某一网络服务
在SeedUbuntu中开启 HTTP 服务:
sudo service apache2 start
sudo service apache2 status

kali机访问http://192.168.200.4:

winxpattack访问http://192.168.200.4:

在seedUbuntu中执行指令:
sudo iptables -A INPUT -s 192.168.200.6 -p tcp --dport 80 -j ACCEPT(放行指定 IP:192.168.200.6 (kali机)访问 80 端口)
sudo iptables -A INPUT -p tcp --dport 80 -j DROP(默认拒绝所有访问 80 端口)

在winxpattack和kali机中进行检测:


最后执行sudo iptables -F清空规则
三、使用Snort对给定pcap文件进行入侵检测
在 Kali 终端执行以下命令:
sudo snort -r /home/kali/Desktop/listen.pcap -c /etc/snort/snort.lua -A alert_fast -l /var/log/snort
-r /home/kali/Desktop/listen.pcap-r:离线读取 pcap 抓包文件后面是文件路径:读取桌面上的 listen.pcap 流量包
-c /etc/snort/snort.lua-c:指定 Snort 配置文件这里用新版的 snort.lua 配置规则
-A alert_fast-A:指定告警输出格式alert_fast:快速简洁告警格式(只输出关键攻击信息)
-l /var/log/snort-l:指定日志输出目录把检测到的攻击日志保存到 /var/log/snort 目录

一:PCAP 流量读取情况:
Snort 工作在离线文件读取模式(pcap DAQ),读取桌面 listen.pcap
总共处理:135580 个数据包,全部完成分析,无丢弃异常
流量类型统计:
以太网帧:135580
IPv4 数据包:135560(几乎全部是 IPv4 网络流量)
TCP 数据包:135512(绝大多数是 TCP 流量)
UDP 少量、ARP 少量,符合网络扫描流量特征
二、关键检测模块运行分析
port_scan 端口扫描模块已运行
跟踪了 6 个扫描目标,处理全部 TCP 包,说明该 pcap 文件就是端口扫描流量
TCP 流重组模块 stream_tcp 建立了 67657 个 TCP 会话
大量短连接、大量 RST 重置包,是典型主动端口扫描、主机探测扫描行为
HTTP 检测模块识别到少量 HTTP 请求,DNS 少量查询
ac_full 特征匹配引擎完成 42 次特征命中,说明 Snort 匹配到了攻击 / 扫描规则
输入:sudo cat /var/log/snort/alert.fast查看告警文件内容:

发现为空,询问AI得到回答:由于本次使用Snort++ 新版 lua 架构,默认未开启明文告警日志文件输出功能,因此 /var/log/snort 日志目录为空;但 Snort 已成功加载检测规则、完整解析 pcap 流量,端口扫描检测模块已识别出网络扫描攻击行为,入侵检测功能正常生效。
四、分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则
打开honeywall虚拟机,输入vim /etc/init.d/rc.firewall查看蜜网网关防火墙的配置规则:

下滑:

load_modules() {
modprobe ip_tables # 防火墙核心模块
modprobe iptable_filter # 包过滤模块
modprobe iptable_nat # NAT转发模块
modprobe ip_conntrack # 连接状态跟踪
modprobe ipt_state # 状态匹配
}
load_modules() 函数负责初始化防火墙环境,加载网络地址转换、数据包过滤、流量转发等内核模块,为后续防火墙规则执行提供底层支持,是蜜网网关实现流量捕获、访问控制的基础。

-
create_pidfile()
创建 PID 文件,记录防火墙进程的进程号,标记防火墙已启动。
PID:进程编号
作用:系统通过这个文件判断防火墙正在运行。 -
delete_pidfile()
删除 PID 文件,清除防火墙运行标记。
作用:关闭防火墙时执行,告诉系统防火墙已停止。 -
isactive()
检查防火墙当前是否处于运行状态(通过 PID 文件判断)。
返回结果:运行中 / 已停止
作用:脚本启动 / 停止前,先检查状态,避免重复启动或重复关闭。
![image]()
-
flush()
清空(刷新)所有已存在的 iptables 防火墙规则,恢复默认状态,避免旧规则干扰新规则。 -
create_chains()
创建自定义防火墙规则链,用于专门管理特定流量(如蜜网捕获、内网防护、攻击过滤)。
功能:在 iptables 里新建自定义链,方便分类管理规则
目的:把不同功能的防火墙规则分开(例如扫描防护、NAT 转发、蜜网流量过滤)

- default_policy() 默认安全策略函数
设置防火墙默认拒绝所有流量的默认策略(默认拒绝)
设置 INPUT、OUTPUT、FORWARD 三条链的默认 DROP 丢弃策略;遵循最小安全原则:没有明确允许的流量全部禁止,是防火墙最基础安全配置。 - localhost_policy() 本地主机策略函数
配置本机本地回环、本机自身访问的防火墙规则
放行本机 lo 回环接口(127.0.0.1)、本机内部通信;保证蜜网网关自身系统正常运行、本地服务可访问,不拦截本机正常流量。 - lockdown_policy() 锁定安全策略
蜜网网关专用的强制隔离锁定策略,防止蜜网攻击内网、限制蜜网出站攻击
禁止蜜网区域主机主动访问真实内网;限制蜜网对外发起扫描、攻击、跳板行为;加固边界防护,防止蜜网被攻陷后扩散危害;实现蜜网只进不出、可控诱捕的核心需求
输入/sbin/iptables -t filter -L | less
/sbin/iptables:蜜网网关系统中 iptables 命令的绝对路径
-t filter:查看过滤表(防火墙访问控制表)
-L:List,列出所有防火墙规则
| less:分页显示,防止刷屏
![image]()
执行vim /etc/rc.d/init.d/snortd,查看 Snort 入侵检测系统的启动脚本:

snortd 是Snort IDS 入侵检测系统的启动 / 停止 / 重启管理脚本,里面主要包含这些内容:
Snort 程序安装路径
Snort 配置文件路径(snort.conf/snort.lua)
Snort 日志目录路径(/var/log/snort)
Snort 运行用户、PID 文件路径
四个核心函数:
start():启动 Snort 入侵检测服务
stop():停止 Snort 服务
restart():重启 Snort
status():查看 Snort 是否正在运行
启动参数:离线检测 / 实时监听网卡、告警输出格式、规则加载方式
执行vim /etc/init.d/hw-snort_inline,查看 Snort_inline 入侵防御系统的启动脚本:

hw-snort_inline 用于打开蜜网网关Snort 内联模式入侵防御 IPS 启动脚本,该脚本负责管理蜜网入侵检测与主动防御服务的启动、停止及运行配置,实现流量检测、攻击识别与阻断功能。包含:Snort 程序路径、配置文件路径、日志目录 /var/log/snort、网卡监听接口、内联桥接模式参数、start() 启动 IPS、stop() 停止 IPS、restart() 重启、status() 查看运行状态、启动参数:内联转发、流量检测、攻击拦截规则。
执行以下命令查看开机自启情况:
/sbin/chkconfig --list | grep iptables(查看防火墙开机自启状态)
/sbin/chkconfig --list | grep snort(查看入侵检测/防御服务开机自启状态)

0:关机 | 1:单用户模式 | 2/3/4/5:正常多用户运行模式(系统开机正常工作状态) | 6:重启
on= 开机自启,off= 开机不启动
蜜网网关正常开机运行级别(2、3、4、5)下,iptables 防火墙开机自动启动;
蜜网网关正常开机级别下,Snort 内联 IPS 入侵防御服务开机自动启动;
所有运行级别全部关闭开机自启,snortd 旁路监听 IDS 服务开机不会自动运行;
3.学习中遇到的问题及解决
-
SeedUbuntu系统较老,没有systemctl命令,开启apache2需要使用service命令。
-
白名单IP连不上对应的http网址,原因是因为iptables 是从上到下依次匹配,最开始的执行是先拒绝所有 IP 访问 80,再放行 192.168.200.6,结果:数据包一进来,先被第一条 DROP 拒绝了,后面白名单永远不会生效
修改:防火墙规则顺序:先放行白名单 → 再拒绝其他所有人
4.学习感悟
通过本次防火墙配置、Snort 入侵检测与蜜网网关分析实验,我收获良多。实操中我掌握了 iptables 防火墙规则配置逻辑,理解了白名单规则顺序、禁 Ping、Web 服务访问控制的原理;学会使用 Snort 离线分析流量、识别端口扫描攻击,分清了旁路 IDS 与内联 IPS 的区别。同时了解了蜜网网关防火墙与入侵检测协同工作的架构:防火墙负责边界隔离、内网防护,IPS 负责流量监听、攻击捕获阻断。本次实验提升了我的网络安全实操能力,建立了完整的网络防护与攻击检测安全思维
参考资料
- 《Java程序设计与数据结构教程(第二版)》
- 《Java程序设计与数据结构教程(第二版)》学习指导


