20253910 2025-2026-2 《网络攻防实践》实践五报告

20253910 2025-2026-2 《网络攻防实践》实践五报告

1. 实践内容

本周学习了网络安全防范体系中的两大核心技术——防火墙入侵检测系统(IDS)。重点掌握了Linux系统下iptables防火墙的规则语法与配置方法,理解了其基于内核Netfilter框架的数据包过滤机制;同时学习了开源入侵检测工具Snort的基本使用,掌握了离线流量分析与结构化告警日志生成的方法。此外,还深入拆解了蜜网网关的架构设计,理解了其如何结合防火墙与IDS/IPS技术实现攻击数据的捕获、控制与证据留存。

本次实践分为三个核心任务:

  1. 在Linux主机上配置iptables防火墙,实现ICMP数据包过滤与基于源IP的HTTP服务访问控制
  2. 使用Snort对给定的网络扫描pcap文件进行离线入侵检测,生成并分析告警日志
  3. 分析虚拟攻防环境中蜜网网关的配置规则,阐明其攻击数据捕获与危害控制的实现原理

2. 实践过程

2.1 实验环境准备

本次实验使用三台Linux虚拟机与一台Windows XP虚拟机,所有主机处于同一局域网,初始网络互通,具体信息如下:

主机名称 IP地址 MAC地址 网卡 角色
Kali Linux 192.168.200.2 00:0c:29:89:4a:10 eth0 攻击机/Snort运行机
SEED Ubuntu 192.168.200.4 00:0c:29:60:00:73 eth6 防火墙配置靶机
Metasploitable Ubuntu 192.168.200.133 00:0c:29:c0:97:8b eth0 非法测试机
Windows XP Attacker 192.168.200.5 - 本地连接 非法测试机

首先验证初始网络连通性,在Kali攻击机上执行ping 192.168.200.4命令,确认可以正常ping通SEED靶机。

微信图片_202604101122415

2.2 iptables防火墙配置与测试

2.2.1 初始防火墙状态查看

在SEED Ubuntu靶机上以普通用户身份执行sudo iptables -L命令,查看初始防火墙规则,确认所有链均为空规则,默认策略为ACCEPT。

微信图片_20260410112241

执行以下命令清空所有现有规则,重置防火墙状态:

sudo iptables -F
sudo iptables -X
sudo iptables -Z

2.2.2 错误操作与调试

实验初期由于对实验角色理解错误,误将防火墙规则配置在了Kali攻击机上,而非SEED靶机,导致测试结果与预期完全不符。具体错误操作如下:

  1. 在Kali上添加全局ICMP过滤规则:sudo iptables -A INPUT -p icmp -j DROP

微信图片_202604101122412

  1. 在Kali上设置INPUT链默认策略为DROP,阻断所有入站连接:sudo iptables -P INPUT DROP

  2. 在Kali上启动HTTP服务用于访问测试:sudo python3 -m http.server 80

微信图片_20260410220710

  1. 测试发现SEED Ubuntu可以正常访问Kali的HTTP服务:

微信图片_20260410220710

  1. 测试ICMP连通性,SEED ping Kali出现100%丢包:
    微信图片_202604102207102

发现上述错误后,执行以下命令清空Kali上的错误规则,恢复网络正常:

sudo iptables -F
sudo iptables -X
sudo iptables -Z
sudo iptables -P INPUT ACCEPT

2.2.3 正确配置ICMP过滤规则

切换到SEED Ubuntu靶机,以root身份执行以下命令,添加ICMP Echo请求过滤规则,阻止所有主机ping通本机:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

微信图片_202604101122412

测试验证:在Kali、Metasploitable和Windows XP上分别执行ping 192.168.200.4,均出现请求超时,无任何回显,说明ICMP过滤规则生效。

测试完成后,执行以下命令删除该测试规则,为后续配置做准备:

sudo iptables -D INPUT -p icmp --icmp-type echo-request -j DROP

微信图片_202604101122412

2.2.4 配置HTTP服务白名单规则

在SEED Ubuntu上启动HTTP服务:

sudo python3 -m http.server 80

添加防火墙规则,仅允许Kali攻击机(192.168.200.2)访问本机80端口,同时重新启用ICMP过滤规则:

# 允许Kali访问80端口
sudo iptables -A INPUT -s 192.168.200.2 -p tcp --dport 80 -j ACCEPT
# 拒绝所有其他IP访问80端口
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
# 阻止所有ICMP Ping请求
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

查看最终配置的防火墙规则:

sudo iptables -L -n -v --line-numbers

微信图片_20260410112241

2.2.5 最终功能测试

  1. ICMP测试:Kali、Metasploitable和Windows XP均无法ping通SEED Ubuntu,请求超时。
  2. HTTP访问测试
    • Kali浏览器访问http://192.168.200.4:正常显示SEED的目录列表
    • Metasploitable浏览器访问http://192.168.200.4:页面加载超时
    • Windows XP浏览器访问http://192.168.200.4:页面加载超时

所有测试结果符合预期,防火墙规则配置成功。
微信图片_202604101122414

微信图片_202604101122414

2.3 Snort入侵检测系统实践

2.3.1 Snort3安装与版本验证

在Kali Linux攻击机上执行以下命令安装最新版Snort3:

sudo apt update && sudo apt install snort -y

安装完成后,执行snort -V命令验证安装版本,确认安装成功。

微信图片_20260410223332

2.3.2 配置Snort输出日志

编辑Snort3的主配置文件/etc/snort/snort.lua

sudo vim /etc/snort/snort.lua

微信图片_202604102233321

找到第7部分configure outputs,修改alert_full配置项,启用full格式的告警日志输出:

alert_full = {
    file = true,
    -- packet = false
}

微信图片_202604102233321

同时启用Snort的内置规则集,在configure detection部分将enable_builtin_rules设置为true,并添加自定义Nmap扫描检测规则到/etc/snort/rules/local.rules文件中,覆盖SYN、FIN、NULL、XMAS和ACK五种常见扫描类型。

微信图片_202604102234312

2.3.3 离线分析pcap文件

将学习通下载的listen.pcap文件放到Kali的桌面,执行以下命令进行离线入侵检测:

sudo snort -r /home/kali/Desktop/listen.pcap -c /etc/snort/snort.lua -A full -l /var/log/snort

微信图片_202604102234311

Snort开始加载配置文件并分析pcap文件,分析完成后输出详细的数据包统计信息。
微信图片_202604102234312

2.3.4 告警日志分析

执行以下命令查看生成的告警日志:

sudo cat /var/log/snort/alert_full

日志中检测到大量Nmap SYN扫描行为,告警信息显示源IP为172.31.4.178,目标IP为172.31.4.188,攻击类型为TCP SYN半开扫描,属于攻击者的网络探测行为。此外还检测到少量FIN扫描和NULL扫描尝试,均为常见的隐蔽端口扫描技术。

2.4 蜜网网关配置规则分析

2.4.1 蜜网网关核心功能

蜜网网关是蜜网系统的核心控制节点,承担三大核心功能:

  • 数据捕获:完整记录攻击者的所有操作行为,包括网络流量、系统命令、文件操作等
  • 数据控制:限制被攻陷蜜罐的横向扩散能力,防止蜜罐成为攻击跳板
  • 数据记录:将所有攻击证据持久化保存到远程日志服务器,防止被攻击者删除

2.4.2 防火墙(iptables)配置逻辑

蜜网网关采用双网卡架构,eth0连接外部攻击网络,eth1连接内部蜜罐网络,其防火墙核心策略为"宽松入站、严格出站"

  1. 入站流量处理:对来自eth0的所有入站流量采取"先记录、再放行"的策略,不阻碍攻击者进入蜜罐,仅对已知恶意IP直接丢弃。同时记录所有新连接的详细日志,用于后续分析。
  2. 出站流量处理:对来自eth1的蜜罐出站流量进行严格的速率限制,TCP连接限制为每小时20次,UDP连接限制为每小时20次,ICMP连接限制为每小时50次。超过阈值的连接将被丢弃并记录日志,有效防止蜜罐被用作攻击跳板。
  3. 特殊流量处理:允许蜜罐访问指定的DNS服务器进行域名解析,记录所有DNS请求日志;允许蜜罐之间的内部通信,记录所有内部流量。

2.4.3 IDS/IPS(Snort)配置逻辑

蜜网网关使用Snort作为入侵检测与防御系统,同时工作在旁路监听与inline两种模式:

  1. NIDS模式:旁路监听所有进出蜜网的流量,基于特征匹配检测攻击行为,生成详细的告警日志。
  2. NIPS模式:当检测到明确的高危攻击(如缓冲区溢出、SQL注入)时,主动阻断连接,防止攻击成功。
  3. 日志配置:将所有告警日志同步到远程日志服务器,确保攻击证据不会被攻击者删除。

2.4.4 整体工作流程

攻击流量进入
    ↓
防火墙初筛(匹配黑名单直接丢弃)
    ↓
Snort NIDS旁路检测(记录所有攻击行为)
    ↓
Snort NIPS主动防御(阻断高危攻击)
    ↓
蜜罐接收流量(完整记录攻击者操作)
    ↓
所有日志发送到远程服务器备份

3. 学习中遇到的问题及解决

  • 问题1:错误将防火墙规则配置在Kali攻击机而非SEED靶机,导致测试结果与预期完全不符
  • 问题1解决方案:重新阅读实验指导书,明确各主机的角色分工。清空Kali上的错误规则,恢复网络正常,然后切换到SEED靶机上重新配置防火墙规则。
  • 问题2:Snort3默认只包含少量基础规则,分析pcap文件后告警日志为空
  • 问题2解决方案:启用Snort的内置规则集,同时编写自定义的Nmap扫描检测规则,覆盖五种常见的端口扫描类型。重新运行分析命令后成功生成告警日志。
  • 问题3:iptables规则顺序错误,导致所有IP都无法访问80端口
  • 问题3解决方案:深入理解iptables"顺序匹配、命中即止"的工作原理,将允许指定IP访问的规则写在拒绝所有IP访问的规则之前。调整规则顺序后,Kali可以正常访问80端口,其他IP无法访问。
  • 问题4:重启SEED Ubuntu后,所有iptables规则全部丢失
  • 问题4解决方案:iptables规则默认保存在内存中,重启后会失效。执行sudo iptables-save > /etc/iptables/rules.v4命令将规则保存到文件,然后安装iptables-persistent包,系统会在开机时自动加载保存的规则。

4. 实践总结

通过本次实践,我系统掌握了Linux系统下iptables防火墙的配置方法,深刻理解了其"顺序匹配、命中即止"的核心工作原理。在实验过程中,我通过错误操作与反复调试,更加清晰地认识到了网络安全配置的严谨性,一个小小的规则顺序错误或者角色混淆就可能导致整个防护策略完全失效。

同时,我学会了使用Snort入侵检测系统对离线网络流量进行分析,掌握了告警日志的配置与解读方法。通过编写自定义的Nmap扫描检测规则,我理解了Snort基于特征匹配的检测原理,认识到了高质量规则集对于入侵检测系统的决定性作用。

在分析蜜网网关配置规则的过程中,我深刻认识到了防火墙与IDS/IPS技术的互补性。防火墙负责粗粒度的访问控制,IDS负责细粒度的攻击检测,IPS则在检测到攻击时进行主动阻断。三者协同工作,才能构建一个完整、有效的网络安全防御体系。

本次实践也让我体会到了网络安全实验的趣味性与挑战性。通过动手操作,我将课堂上学到的抽象理论知识转化为了实际的动手能力,为今后学习更高级的网络攻防技术打下了坚实的基础。

参考资料

posted @ 2026-04-11 18:29  肖康飞  阅读(25)  评论(0)    收藏  举报