20252906 2025-2026-2 《网络攻防实践》第5周作业

1. 实践内容
1.1 实验任务

  1. 学习并掌握 Linux 内核防火墙工具 iptables 的基本使用方法,能够完成规则的添加、插入、删除和清空等操作,并能根据协议类型、端口号以及 IP 地址等条件对网络流量进行过滤与控制;

  2. 熟悉 Snort 入侵检测系统 的部署与基本配置,理解配置文件 snort.lua 中关键参数的含义与作用,能够利用 Snort 对 PCAP 报文进行离线分析,查看并解读告警日志,从而识别常见的网络攻击行为和异常通信流量;

  3. 理解 蜜网网关 的整体安全架构及其运行机制,掌握防火墙与 Snort Inline(IPS) 联动防护的工作方式,明确二者在攻击流量监测、数据采集以及访问控制中的重要作用。

1.2 实验技术概述

  1. iptables 防火墙原理:
    iptables 是 Linux 系统内置的包过滤与防火墙管理工具,依靠不同的链和规则对数据包进行处理。其核心链主要包括 INPUT(处理进入本机的数据包)、OUTPUT(处理本机发出的数据包)和 FORWARD(处理经过本机转发的数据包)。常见的处理动作有 ACCEPT 和 DROP,并且可依据协议类型(如 ICMP、TCP)、端口号以及源/目的 IP 地址等条件对流量进行精细化管控,是实现网络边界安全防护的重要手段。

  2. HTTP 服务与端口原理:
    HTTP 是建立在 TCP 协议 之上的应用层服务,通常默认使用 80 端口 提供通信功能。启动 Apache 服务后,主机即可对外提供 HTTP 访问,其他主机可以通过“http://主机IP”访问该主机
    /var/www/html/ 目录中的网页内容。服务端口是否开放,将直接影响 Web 服务能否被外部正常访问。

  3. Snort 入侵检测原理:
    Snort 是一种轻量级的入侵检测系统,能够通过加载配置文件 snort.lua 来启用内置规则并设置告警日志输出方式。它支持对 PCAP 抓包文件 进行离线检测,并借助规则匹配机制识别诸如端口扫描、异常构造数据包、ARP 欺骗前期特征等可疑流量,最终生成详细的告警信息,便于后续安全分析。此外,Snort 在 Inline 模式 下还可实现对恶意流量的实时拦截,从而具备入侵防御能力。

  4. 蜜网网关安全原理:
    蜜网网关通过在 iptables 中设置自定义链,如 BlackList 黑名单链、WhiteList 白名单链 和 FenceList 围栏链,实现对网络访问行为的细粒度控制。其通常采用 默认拒绝、按需开放 的安全策略,仅允许必要通信通过。同时结合 Snort Inline 这一主动防护机制,构建“边界流量控制 + 深度入侵检测/阻断”的双层防护体系。这样不仅能够有效记录和捕获攻击行为数据,还能够防止攻击者借助蜜罐环境进一步渗透或攻击内部网络。
    2. 实验过程

2.1防火墙配置
本次实验所用到的虚拟机信息如下:
| Kali | 192.168.200.5 | 00:0C:29:A2:56:33 |
| SEED | 192.168.200.4 | 00:0C:29:BF:8C:D9 |
| WinXP | 192.168.200.3 | 00:0C:29:70:34:61 |

2.1.1过滤ICMP数据包
打开SEED虚拟机,输入以下指令

iptables -L # 查看当前系统所有iptables防火墙规则

通过iptables -L查看发现,所有链的规则列表均为空,这意味着 SEED 虚拟机当前处于无防火墙规则的状态,所有流量均被默认放行。
ScreenShot_2026-04-19_101103_366
启动 Kali 虚拟机并输入指令 ping 192.168.200.4,此时可以看到 Kali 能够正常 Ping 通 SEED 虚拟机,说明两者之间网络通信正常。
ScreenShot_2026-04-19_101322_478
切换回 SEED 虚拟机,添加防火墙规则:

iptables -A INPUT -p icmp -j DROP

拒绝所有基于 ICMP 协议的入站请求。随后,执行 iptables -L 查看当前系统的防火墙规则配置。
ScreenShot_2026-04-19_102135_132
等 SEED 那边把规则配好,再回 Kali 去 Ping 一下 SEED,就发现连不上了。
ScreenShot_2026-04-19_102319_928
回到 SEED 虚拟机,输入 iptables -F 清空所有防火墙规则。
ScreenShot_2026-04-19_102411_329
发现Kali又可以Ping通SEED了
ScreenShot_2026-04-19_102442_198
2.1.2只允许特定IP地址访问主机的某一网络服务
打开Kali虚拟机,输入指令
service apache2 start # 启动Apache2网页服务
ScreenShot_2026-04-19_103010_681
在 Kali 虚拟机启动 Apache2 服务之后,不需要做任何额外设置,SEED 和 WinXP 这两台虚拟机都能直接访问 http://192.168.200.2/,说明默认情况下网络是互通的。
ScreenShot_2026-04-19_103143_749
ScreenShot_2026-04-19_103327_347
回到 Kali 虚拟机,输入以下指令:

iptables -I INPUT -p tcp --dport 80 -j DROP

在 INPUT 规则链的最前面插入一条规则,凡是 TCP 协议且目标端口为 80(也就是 HTTP 服务)的入站数据包,全部丢弃。简单说,就是禁止所有其他机器访问 Kali 本机的网页服务。
ScreenShot_2026-04-19_103537_257
此时发现SEED和WinXP已经无法访问网址了
ScreenShot_2026-04-19_103738_416
ScreenShot_2026-04-19_103916_397
在 Kali 中输入以下指令:

iptables -I INPUT -p tcp -s 192.168.200.3 --dport 80 -j ACCEPT

在 INPUT 规则链的最前面插入一条规则,允许源 IP 为 192.168.200.3的 TCP 数据包访问本机的 80 端口。简单说,就是只让 WinXP 能访问 Kali 的网页服务,其他机器都不行。
ScreenShot_2026-04-19_104048_091
此时再试就会发现,WinXP 虚拟机已经可以正常访问 http://192.168.200.5/ 了。
ScreenShot_2026-04-19_104113_597

2.2动手实践:Snort
打开Kali虚拟机,输入以下指令进行分析
snort -c /etc/snort/snort.lua -r /home/kali/Desktop/listen.pcap
用 Snort 读取桌面上 listen.pcap 这个流量包文件,按照 snort.lua 配置文件里的规则进行离线检测分析
ScreenShot_2026-04-19_105111_827
ScreenShot_2026-04-19_112618_796
可以看到,显示出来的数据包基本上都是 TCP 包,占比达 99.95%。
ScreenShot_2026-04-19_112626_011
把日志生成的问题解决之后,打开日志文件,就能看到 Snort 检测到的详细信息。结果显示这是一次 Nmap 发起的端口扫描攻击,攻击机的 IP 地址是 172.31.4.178,靶机的 IP 地址是 172.31.4.188。
ScreenShot_2026-04-19_112634_194

2.3分析配置规则
打开HoneyWall虚拟机,输入指令查看蜜网网关防火墙的配置规则

vim /etc/init.d/rc.firewall
ScreenShot_2026-04-19_113332_647
ScreenShot_2026-04-19_114756_572
进入之后往下翻,找到 create_chain 这部分,就能看到黑名单、白名单以及防护名单的相关配置了。黑名单加载模块,阻断恶意IP的所有通信
ScreenShot_2026-04-19_114904_605
再往下看就是白名单加载模块,只要是信任的 IP,它的所有通信都不受限制。
ScreenShot_2026-04-19_114910_633
在WinXP虚拟机中,打开蜜网网关的图形化界面(http://192.168.200.8/)
ScreenShot_2026-04-19_115120_129
点击Firewall Rules可以查看蜜网网关所使用的防火墙规则ScreenShot_2026-04-19_115217_783
回到 HoneyWall,输入以下指令查看 Snort 的脚本文件:

vim /etc/init.d/snortd

用 Vim 编辑器打开 Snort 入侵检测系统的启动服务脚本,里面定义了 Snort 服务启动、停止、重启等相关配置。
ScreenShot_2026-04-19_115228_733
输入以下指令查看 HoneyWall 的配置文件:

vim /etc/honeywall.conf

该文件是蜜罐系统的核心配置文件,定义了蜜罐的网络接口、IP 地址、管理端口、日志选项
ScreenShot_2026-04-19_115241_135
ScreenShot_2026-04-19_115250_589

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

问题一:配置防火墙规则后无法正常上网

解决方案:
执行 iptables -F 清空所有规则之后任然无法上网,百度和网关192.168.200.1都连不上,iptables -Z和iptables -X才好的,很奇怪。

收获:
理解了防火墙规则的匹配顺序和默认策略的重要性。配置防火墙时应先放行必要的服务端口(如 DNS、HTTP、HTTPS),再设置拒绝规则,避免把自己“锁在门外”。同时,远程配置防火墙前最好准备一个恢复脚本或设置定时任务自动清空规则,以防断网。

问题二:Snort 离线分析 pcap 文件时提示无法加载 snort.lua 配置文件

解决方案:
检查配置文件路径是否正确,发现当前目录下不存在该文件。使用 find / -name "snort.lua" 查找文件实际位置,找到后用绝对路径重新执行命令,或者将配置文件复制到当前工作目录。

收获:
学会了使用 find 命令定位文件,理解了命令行中使用绝对路径的重要性。同时认识到 Snort 运行前应先用 snort -V 和 snort --help 检查安装状态和配置路径,避免因路径问题导致分析失败。

4.学习感想和体会
通过本次蜜罐与防火墙的实战实验,我对入侵检测系统(Snort)、防火墙规则配置(iptables)以及蜜罐网络的工作机制有了更加直观和深入的理解。
在防火墙规则配置方面,我掌握了 iptables 的基本用法,包括添加规则(-A)、插入规则(-I)、查看规则(-L)以及清空规则(-F)。通过实际操作“禁止 ICMP Ping 请求”和“限制 80 端口访问”这两个例子,我深刻体会到防火墙规则的匹配顺序非常关键,规则的位置直接决定了过滤效果的优先级。同时,我也亲身经历了配置不当导致无法上网的问题,这让我意识到在实际生产环境中配置防火墙时必须格外谨慎,提前规划好放行规则,避免把自己“拒之门外”。其次,在 Snort 入侵检测系统方面,我学会了如何对离线流量包(pcap 文件)进行检测分析,并能从日志中识别出 Nmap 发起的端口扫描攻击。通过查看攻击机和靶机的 IP 地址,我对网络攻击的溯源能力有了初步的锻炼。此外,通过查看 HoneyWall 的配置文件和 Snort 的启动脚本,我对蜜罐系统的整体架构和运行机制有了更清晰的认识,理解了黑名单、白名单、防护名单以及默认策略各自的作用和相互关系。

posted @ 2026-04-19 12:21  淡墨如野  阅读(8)  评论(0)    收藏  举报