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

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

1.实践内容

(1)学习 Linux 平台下 iptables 防火墙的基本配置方法,完成对 ICMP 数据包的过滤,并验证主机是否能够成功阻止 Ping 请求。

(2)配置防火墙访问控制规则,实现只允许特定 IP 地址访问目标主机的指定网络服务,而其他主机无法访问,并通过实际连接测试验证规则效果。

(3)安装并使用 Snort 对给定的 pcap 数据包文件进行离线入侵检测,获取报警日志,并对检测出的网络扫描攻击进行分析说明。

(4)查看并分析蜜网网关中的防火墙规则和 Snort 配置规则,理解其如何结合防火墙与 IDS/IPS 技术实现攻击数据捕获与攻击行为控制。

2.实验过程

一、防火墙配置

(1)过滤 ICMP 数据包,使主机不接收 Ping 包

先在目标seed主机上查看当前防火墙规则,使用 sudo iptables -L 检查 INPUTFORWARDOUTPUT 三条链的规则情况。结果显示各链默认策略均为 ACCEPT,说明此时系统尚未配置针对 ICMP 数据包的过滤规则。

在 Kali Linux 主机上使用 ifconfig 查看本机网络配置,确认目标主机地址后,执行 ping 192.168.200.67 对目标主机进行测试。测试结果显示可以正常收到目标主机返回的数据包,说明在配置防火墙之前,目标主机能够正常响应 Ping 请求。

在目标seed主机上执行 iptables -A INPUT -p icmp -j DROP,尝试在 INPUT 链中添加一条丢弃 ICMP 数据包的规则。由于开始时未使用管理员权限,系统提示权限不足,因此该命令未能成功执行。重新使用 sudo iptables -A INPUT -p icmp -j DROP 添加规则,命令成功执行。再次使用 sudo iptables -L 查看规则后,可以看到 INPUT 链中已经新增了针对 ICMP 协议的 DROP 规则,说明目标主机已经开始对接收的 ICMP 数据包进行过滤。

规则添加完成后,在 Kali Linux 主机上再次执行 ping 192.168.200.67。此时目标主机不再返回 ICMP 应答,说明防火墙规则已经生效,主机已无法接收并响应 Ping 请求。

为了进一步验证规则效果,又在 Windows 主机上对目标地址执行 ping 192.168.200.67。测试结果显示请求全部超时,说明来自其他主机的 ICMP 请求同样被目标主机防火墙拦截,实验现象符合预期。

在完成验证后,为了恢复原有网络状态,在目标 Linux 主机上执行 sudo iptables -D INPUT -p icmp -j DROP 删除之前添加的规则。删除后再次使用 sudo iptables -L 查看规则列表,可以发现 INPUT 链中已不存在该 ICMP 丢弃规则,说明规则删除成功。

最后在 Kali Linux 主机上重新执行 ping 192.168.200.67,测试结果显示目标主机再次能够正常返回响应数据包,说明之前无法 Ping 通的现象确实是由防火墙规则导致的,删除规则后主机网络通信恢复正常。

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

选择目标 Linux 主机上的 Telnet 服务作为测试对象。因为在实验的时候发现无法用telnet连接上seed主机,所以在 Kali Linux 主机上使用 nmap -p 23,22 192.168.200.67 对目标主机进行端口扫描,结果显示 22 端口处于开放状态,而 23 端口处于关闭状态,说明此时目标主机上的 Telnet 服务尚未开启,暂时无法作为后续访问控制测试对象。所以采取在seed主机上安装该服务。

在目标seed主机上安装并启动 Telnet 相关服务。先执行安装命令,确认 openbsd-inetdtelnetd 已安装完成;之后重启 openbsd-inetd 服务,并通过查看 /etc/inetd.conf 中的 Telnet 配置以及执行 sudo netstat -tlnp | grep :23 进行检查。检查结果显示目标主机已经在 0.0.0.0:23 上处于监听状态,说明 Telnet 服务已经成功启动。

在 Telnet 服务启动完成后,先在 Kali Linux 主机上执行 telnet 192.168.200.67 进行连接测试,可以成功连接到目标主机,并进入登录界面。之后又在 Windows 主机上执行相同的 Telnet 连接测试,同样能够正常连接到目标主机。由此可见,在未配置访问控制规则之前,不同主机都可以访问目标主机的 Telnet 服务。

为了实现只允许特定 IP 地址访问该服务,接下来在目标 Linux 主机上修改防火墙策略。用 sudo iptables -P INPUT DROP 执行命令,成功将 INPUT 链的默认策略设置为 DROP,使目标主机默认拒绝外部进入的数据包。在将默认策略设置为拒绝后,继续在目标 seed主机上添加允许规则,执行 sudo iptables -A INPUT -p tcp -s 192.168.200.65 -j ACCEPT,允许来自指定 IP 地址 192.168.200.65 的 TCP 数据包进入目标主机。这样就实现了仅对特定主机开放访问权限,而其他主机由于不匹配该规则,将继续被默认策略拒绝。

规则配置完成后,在被允许访问的 Kali Linux 主机上再次执行 telnet 192.168.200.67。测试结果显示 Kali 主机仍然可以成功连接到目标主机,并正常进入 Telnet 登录界面,说明针对指定 IP 地址设置的放行规则已经生效。

随后,在另一台未被允许的 Windows 主机上执行 telnet 192.168.200.67 进行连接测试。测试结果显示无法建立到目标主机 23 端口的连接;同时,在另一台未被允许的主机上进行 Telnet 测试时,也出现了连接超时现象。说明除了被明确允许的指定 IP 地址之外,其他主机均无法访问目标主机的 Telnet 服务,访问控制达到了预期效果。

二、动手实践:Snort

在 Kali Linux 主机上执行 snort -r ./listen.pcap -c /etc/snort/snort.lua -A alert_full,准备使用 Snort 对给定的 pcap 文件进行检测。此时系统提示本机尚未安装 Snort,随后根据提示执行安装操作,下载并安装了 snort 及其相关依赖,为后续离线流量检测做好准备。

Snort 安装完成后,再次执行 snort -r ./listen.pcap -c /etc/snort/snort.lua -A alert_full,开始使用默认配置文件对数据包文件进行检测。运行过程中,Snort 成功加载了 snort.lua 配置文件及相关检测模块,同时显示规则加载、搜索引擎初始化等信息,说明 Snort 运行环境已经配置成功。

在继续执行检测时,终端提示 ./listen.pcap: No such file or directory,说明当前路径下没有找到目标 pcap 文件,导致本次检测未能完成。由此可以判断,Snort 本身已经能够正常启动,但需要进一步修正数据包文件的实际路径。

随后,重新指定 pcap 文件的完整路径,并使用命令
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
对目标流量文件进行检测。该命令在原有配置基础上,额外加入了一条自定义告警规则,用于对流量中的 TCP 扫描行为进行识别,并将检测结果输出到日志目录中。

命令执行后,Snort 再次加载默认配置文件、检测模块以及新增的规则参数。终端中显示规则总数由原有规则增加到新的数量,说明自定义规则已经被成功载入。之后 Snort 开始对 /home/kali/listen.pcap 文件中的数据流量进行离线分析。分析完成后,Snort 在终端中输出了大量告警信息,告警内容中重复出现 Nmap Scan Detected 字样,表明在被检测的 pcap 文件中识别出了明显的扫描行为。报警信息同时给出了通信双方的 IP 地址、端口号、协议类型以及触发时间等内容,说明 Snort 已成功从离线流量中提取出可疑网络扫描活动。

从报警结果可以看出,流量中存在大量针对多个端口的连续 TCP 探测行为,且同一源主机在极短时间内向目标主机多个不同端口发送连接请求。这种特征符合 Nmap 端口扫描的典型表现,说明攻击者通过扫描方式收集目标主机开放端口和服务信息,为后续进一步攻击做准备。因此,本次 Snort 检测识别出的攻击类型可以判定为网络扫描攻击,具体表现为使用 Nmap 工具实施的端口扫描行为。

三、分析配置规则

首先,在蜜网网关上查看防火墙启动脚本,确认系统的防火墙规则是如何生成和加载的。实验中使用less /etc/init.d/rc.firewall查看脚本内容。通过查看脚本可以知道,该脚本负责调用 Honeywall 的相关配置变量,并最终生成实际生效的 iptables 规则,因此它是分析蜜网网关防火墙策略的起点。

在确认脚本作用后,接着查看当前系统中已经加载的防火墙规则。实验中可使用iptables -L -n -v 查看过滤表中的规则。根据导出的结果可以看到,蜜网网关的 INPUTFORWARDOUTPUT 三条主链默认策略均为 DROP,说明系统总体采用了默认拒绝的方式,只允许匹配规则的流量通过。

随后,重点查看 INPUT 链中的规则。该链主要用于控制进入蜜网网关本机的数据包。通过 iptables -L -n 查看结果可以发现,规则中保留了对 SSH、HTTPS 等管理连接的访问,同时也允许已建立连接或相关连接返回。由此可以说明,蜜网网关本身并不开放普通业务服务,而是只允许管理人员通过必要的方式登录和维护网关,从而保护网关自身安全。

在蜜网环境中,最重要的是 FORWARD 链,因为攻击者发向蜜罐主机的数据包通常需要经过蜜网网关转发。实验中通过 iptables -L -n 查看 FORWARD 链规则,可以发现对于从外部接口进入的 TCP、UDP、ICMP 等新建连接,系统通常先进行 LOG 记录,再执行 ACCEPT 放行。这说明蜜网网关对外部攻击流量采取的是“先记录、再转发”的策略,也就是说,攻击流量在到达蜜罐主机之前,已经被网关捕获并写入日志。

继续分析 FORWARD 链时,可以看到规则中大量使用了与物理接口相关的匹配条件。这表明蜜网网关运行在桥接模式下,位于攻击者和蜜罐主机之间,但不会像普通路由器那样明显改变网络路径。除了捕获攻击流量外,蜜网网关还需要限制蜜罐主机被攻陷后继续向外扩散攻击。实验中查看 FORWARD 链后半部分规则,可以看到系统对 192.168.200.130192.168.200.131 两台蜜罐主机的外发流量设置了更细的控制。例如,DNS 请求被单独记录并允许通过,而 TCP、UDP、ICMP 以及其他协议的新建流量都设置了速率限制,超过阈值后会被记录并丢弃。由此可以说明,蜜网网关并不是完全阻断蜜罐主机外联,而是允许有限度的对外通信,以便记录攻击者行为,同时防止其无限制对外发动攻击。

在分析完防火墙规则之后,接着查看 IDS/IPS 组件的配置。蜜网网关中使用的是 Snort,实验中可使用 vi /etc/snort/snort.conf 查看其主配置文件。通过查看配置内容可以看到,Snort 定义了 HOME_NETEXTERNAL_NETRULE_PATH 等网络变量,并加载了大量预处理器和规则文件,说明 Snort 在蜜网网关中承担着攻击检测和日志告警的作用。

继续查看 snort.conf,可以发现系统启用了多种预处理器,例如 flowfrag3stream4_reassemblehttp_inspectftp_telnetsmtpdns 以及 sfportscan 等模块。实验中主要还是通过阅读 snort.conf 文件完成分析。这些预处理器的作用是对网络流量进行重组、标准化和状态跟踪,从而提高后续规则检测的准确性。例如,端口扫描检测模块可以识别多种扫描行为,HTTP、FTP、Telnet 等预处理器则可以针对特定协议发现异常访问和攻击特征。

在实验中,如果需要进一步说明 IDS 如何发现攻击,可以继续查看扫描规则文件,使用 vi /etc/snort/rules/scan.rules查看其内容。通过分析可以发现,这些规则主要通过异常 TCP 标志位、特征字符串、特定端口访问行为以及特定探测报文来识别扫描和侦察活动。例如,规则中可以识别版本探测、SSH 版本扫描、ICMP 探测以及某些工具特有的扫描负载。这说明 Snort 能够在攻击早期发现攻击者对目标主机进行侦察和扫描的行为。

结合前面的规则分析可以得出,蜜网网关利用防火墙完成攻击数据捕获,主要依赖两种机制。第一种是 FORWARD 链中的日志记录规则,攻击流量在进入蜜罐网络之前就会被记录下来;第二种是桥接模式下对流经数据包的透明监控,使攻击者与蜜罐之间的通信都必须经过网关。这样一来,攻击过程中的扫描、连接尝试和后续访问行为都能够被网关捕获。

在捕获到流量之后,蜜网网关再利用 Snort 对这些数据包进行进一步分析。Snort 通过预处理器对流量进行重组、协议解析和状态跟踪,再利用规则库匹配端口扫描、协议异常、服务探测和其他攻击特征,从而生成相应告警。因此,防火墙负责“截获和转交”流量,而 Snort 负责“分析和识别”攻击,两者配合后就能完成对攻击行为的检测。

除了捕获和检测之外,蜜网网关还必须控制攻击影响范围。从规则中可以看到,系统对蜜罐主机的外联流量设置了 DNS 白名单、连接速率限制以及超过阈值后的丢弃规则,同时还通过自定义链和 QUEUE 机制对可疑流量进行更细致处理。这意味着即使攻击者已经控制了蜜罐主机,其后续外发连接也会受到严格限制,从而避免蜜罐被用作继续攻击外部网络的跳板。

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

  • 问题1:在进行只允许特定IP地址访问主机的某一网络服务时,因为我用的服务是telnet服务,然后我发现我的seed主机连不上。

  • 问题1解决方案:检查了一下是因为我的seed主机没有安装telnet服务,所以就根据教程在我的seed主机下载安装telnet服务。

  • 问题2:在sonrt继续执行检测终端提示 ./listen.pcap: No such file or directory,当前路径下没有找到目标 pcap 文件。

  • 问题2解决方案:重新调整文件的路径,让其符合路径。

4.学习感悟、思考

这次实验做下来,我感觉自己对防火墙和入侵检测这些内容理解得更具体了。以前觉得 iptables、Snort 这些东西都比较抽象,但自己真正去配置规则、做连通性测试、看告警日志之后,就能明显感受到每一步操作对应的实际效果。尤其是在规则加上去之后,Ping 不通了、指定主机能访问而其他主机不能访问,这些现象让我对访问控制的作用有了更直观的认识。

另外,这次实验也让我发现,做网络攻防实验不只是照着命令敲一遍就行了,还需要边做边排查问题、边观察结果。像服务没有开启、文件路径不对这些问题,看起来是小问题,但也说明实验过程本身就是一个不断分析和验证的过程。通过这次实践,我不仅学会了一些基本操作,也对防火墙、IDS/IPS 和蜜网环境之间的配合关系有了更清楚的认识。

posted @ 2026-04-16 19:12  BoBooooo  阅读(8)  评论(0)    收藏  举报