# 20253920 2025-2026-2 《网络攻防实践》第5次作业

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


1.实践内容

本次实践围绕网络边界防护与入侵检测两大核心安全技术展开,分为三个核心模块,覆盖 Linux 防火墙配置、开源 IDS 工具 Snort 入侵检测、蜜网网关安全规则分析三大场景,完整完成从防御配置到攻击检测的全流程实践:

  1. Linux iptables 防火墙配置

    iptables 是 Linux 内核集成的包过滤防火墙,通过规则链 + 匹配条件 + 处理动作实现对网络数据包的过滤、转发、记录与拦截,是网络边界防护最基础、最核心的技术手段。

    基于 Linux 系统 iptables 工具,完成两类安全策略配置与有效性验证:

    (1)过滤 ICMP 数据包,实现主机禁 Ping 防护,阻断 ICMP 探测类攻击;

    (2)配置基于源 IP 的访问控制策略,仅允许指定信任 IP(192.168.200.3)访问主机特定服务(如 FTP/HTTP/SMB),阻断非信任 IP(192.168.200.4)的访问请求,实现最小权限访问控制。

  2. Snort 入侵检测实践:Snort 是业界最主流的开源入侵检测 / 防御系统(IDS/IPS),支持规则匹配检测、协议分析、流量日志记录、实时告警,可识别扫描、溢出、暴力破解、木马通信等典型攻击行为。使用开源入侵检测系统 Snort,对给定的网络扫描类 pcap 离线数据包进行入侵检测,配置告警规则与日志输出,捕获并分析数据包中的攻击行为,生成完整告警日志。

    实践核心内容:

    (1)配置 Snort 运行模式、规则路径、输出格式与日志存储位置;

    (2)加载 Snort 内置及自定义检测规则,对网络扫描类 pcap 离线数据包进行深度解析与检测;

    (3)捕获并识别流量中的端口扫描、主机探测、服务枚举等典型攻击行为;

    (4)生成并分析 Snort 告警日志,明确攻击源、目的、时间、协议、威胁类型与匹配规则。

  3. 蜜网网关安全规则分析:蜜网网关是部署在蜜罐前端的安全管控系统,主要负责流量转发、攻击捕获、行为限制、日志审计,既让蜜罐可被正常攻击,又防止攻击者利用蜜罐发起外联攻击。针对虚拟网络攻防环境中的蜜网网关,深入分析其防火墙与 IDS/IPS 的核心配置规则,拆解蜜网网关通过防火墙与入侵检测技术实现攻击数据捕获、行为控制与安全防护的技术原理与实现逻辑。

    实践核心分析内容:

    (1)防火墙规则框架分析

    深入解析蜜网网关 rc.firewall 核心脚本,理解 create_chains 自定义链机制,包括 BlackList(黑名单)、WhiteList(白名单)、FenceList(围栏列表)等规则链的作用,掌握 “先拦截、再放行、后日志” 的流量处理逻辑。

    (2)入侵检测 / 防御规则分析

    结合 Snort 规则与网关策略,分析蜜网如何识别扫描、漏洞利用、恶意连接等攻击行为,实现攻击流量捕获、威胁告警、违规流量阻断。

    (3)攻击行为控制机制分析

    重点理解FenceList(围栏)、DropLog/PassLog等规则的作用:限制蜜罐向外发起恶意连接,防止蜜罐被攻陷后成为攻击跳板,在 “诱捕攻击” 与 “安全管控” 之间实现平衡。

2.实践过程

2.1防火墙配置

任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:

2.1.1环境配置

以下是我本次实验的配置:

主机名称 IP地址
Kali 192.168.200.2
Metasploitable_ubuntu 192.168.200.4
WinXPattacke 192.168.200.5
蜜网网关 192.168.200.8

以下是Kali的网络适配器设置

1

以下是Metasploitable_ubuntu的网络适配器设置

2

以下是WinXPattacke的网络适配器设置

3

以下是蜜罐网关的网络适配器设置

4

2.1.2过滤ICMP数据包,使得主机不接收Ping包

输入命令行iptables -L来查看Kali的防火墙信息,如下图所示:Kali 的iptables防火墙处于完全开放状态,无任何安全过滤规则,所有入站、转发、出站流量均被默认放行,相当于防火墙未启用任何防护。

5

打开攻击机WinXPattacke,输入命令行ping 192.168.200.2来pingKali,WinXP 攻击机与 Kali 攻击机网络完全连通,通信正常。

6

在Kali中输入命令行iptables -A INPUT -p icmp -j DROP来修改防火墙状态,命令行解析如下:

1.-A INPUT:在INPUT链的末尾追加一条规则

2.-p icmp:匹配所有 ICMP 协议的数据包(包含 ping 请求、ping 响应、ICMP 重定向等所有 ICMP 报文)

3.-j DROP:匹配到的数据包直接丢弃,不做任何响应

阻断所有入站 ICMP 流量,实现主机’禁 Ping‘,同时也会阻断所有其他 ICMP 相关的网络功能

同时再次输入命令行iptables -L查看Kali防火墙设置,如图可知:

1.INPUT 链中新增了一条DROP规则,匹配所有源 / 目的、所有 ICMP 协议的入站包

默认策略仍为ACCEPT:除了 ICMP 包被丢弃,其他所有入站流量(TCP、UDP 等)仍正常放行

2.FORWARD/OUTPUT 链两条链仍无任何自定义规则,默认策略ACCEPT,转发、出站流量完全不受影响

7

回到攻击机WinXPattacke,输入命令行ping 192.168.200.2来pingKali,此时发现通信异常

8

输入命令行iptables -D INPUT -p icmp -j DROP删除之前制定的规则

9

再此回到攻击机WinXPattacke,输入命令行ping 192.168.200.2来pingKali,发现此时的网络通信又恢复正常

10

2.1.3只允许特定IP地址,访问主机的某一网络服务,而其他的IP地址无法访问

在Kali中输入命令行telnet 192.168.200.130来进行telnet登陆,访问成功

11

在WinXP中输入命令行telnet 192.168.200.130来进行telnet登陆,发现响应超时

问题一:

12

具体原因是WinXP 和靶机掩码一致,但分属两个完全隔离的独立子网,系统判定不在同一局域网,无法直接通信,因此我利用命令行sudo nano /etc/network/interfaces进入编辑模式,修改Metasploitable_ubuntu的eth0配置为下图所示:

13

重启主机后,打开Kali输入命令行ping 192.168.200.4

问题二:

攻击机Kali与靶机Metasploitable_ubuntu通信失败

14

分析原因可能为靶机的静态 IP 配置没真正生效,因此我在Windows主机按 Win+R,输入 services.msc 回车,重启了

VMware DHCP Service
VMware NAT Service

以上两个服务,但是依旧ping失败。

15

进入主机Metasploitable_ubuntu,输入命令行ping 192.168.200.4 -c 2 来让主机自己ping自己,来检查ip是否生效,结果生效

输入命令行ping 192.168.200.1 -c 2让主机ping网关,来检查是否接入 VMware 虚拟网络,结果失败

16

靶机完全 ping 不通 VMware 的网关192.168.200.1,没有正确的路由规则,根本没接入虚拟网络,和 Kali、WinXP 完全二层隔离,自然无法通信

解决办法:

首先,我将主机Metasploitable_ubuntu的网络适配器更改成 VMnet8(NAT 模式),解决隔离问题

17

输入命令行

sudo ip route flush all
sudo ip neigh flush all

彻底清空所有旧的无效路由、ARP 缓存,消除配置冲突

sudo ifconfig eth0 down
sudo ifconfig eth0 up

重启网卡,清除所有残留的旧 IP 配置

输入sudo ifconfig eth0 192.168.200.4 netmask 255.255.255.128 up``sudo route add default gw 192.168.200.1 eth0重新配置靶机IP,同时添加同子网的默认网关

最后输入ping 192.168.200.1 -c 2来验证网关连通性,发现主机已接入虚拟网络

18

此时我的网络环境配置为

设备 IP 地址 子网掩码 默认网关 网络模式
Kali 192.168.200.2 255.255.255.128 192.168.200.1 VMnet8
Metasploitable_ubuntu 192.168.200.4 255.255.255.128 192.168.200.1 VMnet8
WinXP 192.168.200.5 255.255.255.128 192.168.200.1 VMnet8

打开攻击机WinXP和Kali分别去ping靶机,结果成功

19

20

分别在WinXP和Kali进行telnet登陆测试,可以看到都能访问成功

21

22

在Metasploitable_ubuntu上输入命令行iptables -P INPUT DROP来设置不接收任何包的规则以拒绝一切数据流入

23

再次在WinXP和Kali进行telnet登陆测试,发现二者都无法进行telnet登陆

24

25

在Metasploitable_ubuntu中使用命令iptables -A INPUT -s 192.168.200.3 -j ACCEPT来设置只允许Kali(IP地址:192.168.200.2)访问主机Metasploitable_ubuntu;

26

依旧在WinXP和Kali进行telnet登陆测试,发现主机Kali登陆成功,主机WinXP无法进行telnet登陆

27

28

输入命令行,清除之前设置的规则

iptables -F
iptables -P INPUT ACCEPT

29

2.2实践Snort

使用Snort对给定pcap文件进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
首先从学习通下载.pcap文件

在Kali中输入命令行snort -r listen.pcap -c /etc/snort/snort.lua -A alert_fast -l /var/log/snort 利用Snort工具,从离线的listen.pcap文件读取网络日志数据源,如下图:

30

31

32

33

34

35

36

37

38

由下图可知:pcap 文件中存在大规模 Nmap 半开端口扫描攻击,攻击者发送了 6 万 + SYN 包,仅探测到 83 个开放端口,属于典型的入侵前侦察行为。Snort 成功识别出了 19 次 TCP 扫描行为,证明其对端口扫描类攻击的检测能力有效。

39

输入命令行snort -A fast -c /etc/snort/snort.lua -R <(echo 'alert tcp any any -> any any (msg:"Nmap Scan Detected"; sid:1000001; rev:1;)') -r /home/kali/listen.pcap -l /var/log/snort让 Snort 读取 listen.pcap 流量文件,使用我们临时写的一条规则,检测里面所有 TCP 流量,只要出现就报警 “Nmap Scan Detected”,并把报警日志存到 /var/log/snort 目录里。

40

由上图可知:Snort 检测到了Nmap 端口扫描攻击,且攻击者为:172.31.4.178;目标主机为:172.31.4.188

2.3分析配置规则

分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。

2.3.1分析防火墙和IDS/IPS配置规则

输入命令行vim /etc/init.d/rc.firewall查看防火墙文件

41

下图可知,create_chains创建了黑名单和白名单的规则链,还创建了很多协议数据包的处理规则链,

42

43

44

下图是防火墙文件rc.firewall的默认规则、本地规则、管理规则

45

下图是防火墙开启后根据先前规则链和定义的规则函数过滤的数据包

46

2.3.2分析iptables

输入命令行iptables -t filter -L | less查看规则列表,可以看到默认的规则:INPUT、FORWARD、OUTPUT都关闭了

47

2.3.3获取Snort实际执行参数

输入命令行vim /etc/init.d/snortd打开snort脚本

48

实际运行的参数如下:

默认使用默认目录下的snort规则

49

监听网卡为eth0

50

默认储存路径为/var/log/snort

51

输入命令行vim /etc/init.d/hw-snort_inline打开 snort_inline 的脚本文件

获取的snort_inline实际执行参数如下:

52

-c 表示读取config文件;

-D 表示Daemon模式;

-Q 表示使用QUEUE模式;

-l 表示输出log文件的目录;

-t 表示改变程序执行时所参考的根目录位置

53

2.3.4 说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的

分别输入命令行chkconfig --list | grep iptables chkconfig --list | grep snort chkconfig --list | grep snortd 来查看这些服务是否开启

由下图可知:

iptables服务(Linux 原生防火墙服务):

状态:2:on 3:on 4:on 5:on,表示在运行级别 2、3、4、5 下开机自启,0/1/6 级关闭。

hw-snort_inline服务(蜜网项目的 Snort 入侵检测服务)

状态:2:on 3:on 4:on 5:on,运行级别 2-5 开机自启。

snortd服务(独立的 Snort 入侵检测守护进程。)

状态:所有运行级别均为off,表示未配置开机自启。

54

输入命令vim /etc/honeywall.conf打开honeywall配置文件

55

由下图可知:Snort Rule Update Variables的值为no,不自动更新:

56

输入命令vim /etc/oinkmaster.conf找到 snort.conf 文件:

57

由下图可知:

配置项 作用 设计目的
skipfile local.rules 更新时跳过 local.rules文件 保护本地自定义的 Snort 规则(比如自己写的告警 / 拦截规则),不被官方规则包的空文件覆盖
skipfile deleted.rules 更新时跳过 deleted.rules文件 该文件记录了被官方规则包删除的旧规则,通常不需要更新,直接跳过
skipfile snort.conf 更新时跳过 snort.conf主配置文件 保护本地修改过的 Snort 主配置(比如规则路径、告警输出、变量定义等),避免被官方默认配置覆盖

58

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

本次实践过程中,我在网络配置、文件获取、脚本理解、命令操作等多个环节遇到了典型问题,以下是详细的问题描述与对应的解决过程:

1.靶机网络配置异常,无法访问外网

靶机执行 ping 8.8.8.8 提示 Network is unreachable,无法解析域名、也无法访问外部网络。

原因分析:靶机的 ip route show 输出中,没有配置默认网关,仅存在同网段路由,导致外网流量无法转发。

解决过程:(1)尝试手动添加网关时,出现 SIOCADDRT: No such process 报错,原因是网关地址不在靶机的网段范围内;(2)通过 dhclient eth0 重新获取 IP,确认 DHCP 服务器地址,修正网关为 192.168.200.127;(3)重新添加默认网关并验证,外网访问恢复正常。

2.vim 打开文件显示空白,无法找到脚本内容

执行 vim /etc/init.d/rc.firewall 后,界面仅显示波浪线,底部提示文件大小为 0 字节,没有任何内容。

解决过程:反复刷新并重启Honeywell后恢复正常

4.学习感想和体会

通过本次网络边界防护与入侵检测实践,我不仅系统掌握了 iptables 防火墙 和 Snort 入侵检测系统 的核心操作,更对网络安全“防御—检测—管控”的整体架构形成了完整、直观的认识,不再停留在单一命令的记忆层面,而是真正理解了安全策略背后的设计思想与运行逻辑。

在动手配置过程中,我深刻体会到网络安全工作的严谨性。从 ICMP 禁 Ping 防护、基于源 IP 的访问控制,到离线流量分析、攻击行为识别,每一条规则、每一项配置都直接影响系统的安全性与可用性。尤其是在分析蜜网网关规则时,我认识到安全策略不仅要实现“拦得住、查得出”,还要兼顾业务可用性、攻击溯源与行为管控,真正理解了最小权限原则、深度防御思想、诱捕与管控平衡等核心安全理念。

本次实践也极大锻炼了我的问题排查与环境适配能力。在实验过程中,我先后遇到网络不通、网关配置错误、文件下载失败、脚本内容缺失、命令参数不兼容等一系列问题。动手能力和排错思维得到明显提升。 同时我也意识到,安全工作不仅是技术实现,更离不开规范的操作习惯。无论是防火墙规则的有序加载,还是 Snort 配置文件的保护,都体现出配置可追溯、修改留痕、避免误覆盖的重要性。任何一处疏忽都可能导致防御失效、日志丢失甚至引入新的风险。 总体而言,这次实践让我从理论走向实操,从单一知识点走向完整安全体系,既提升了专业技能,也培养了安全思维,为今后进一步学习网络攻防、系统加固、入侵分析等内容打下了扎实基础。

posted @ 2026-04-20 19:25  吹根猫毛  阅读(17)  评论(0)    收藏  举报