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

1.实践内容

实践内容
一、防火墙配置(IP地址仅供参考,以实际为准)
任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问
二、动手实践:Snort
使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在学习通中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
 
Snort运行命令提示如下:
①从离线的pcap文件读取网络日志数据源
②在snort.conf中配置明文输出报警日志文件
③指定报警日志log目录(或缺省log目录=/var/log/snort)
三、分析配置规则
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
作业要求:需要包括以下几点

2.实践过程

2.1 防火墙配置

(1)过滤ICMP数据包,使得主机不接收Ping包
首先打开ubuntu虚拟机,输入sudo iptables -L查看规则

打开winxpattaker虚拟机,使用ping命令检查与Ubuntu虚拟机的连通性(192.168.200.2)

在Ubuntu虚拟机中输入sudo iptables -A INPUT -p icmp -j DROP配置防火墙,过滤icmp包,并通过iptables -L查看规则

如图所示,可以看到Ubuntu已经设置好了过滤icmp包的规则。此时使用winxpattaker对Ubuntu执行ping命令,发现无法连通

输入sudo iptables -D INPUT -p icmp -j DROP将这条规则删除

再次使用winxpattaker进行ping连通性测试
成功后,使用iptables -F 清除所有规则
(2)ubuntu用sudo python3 -m http.server 80命令打开80端口 ,kali和winxpattacker两台虚拟机都分别用火狐浏览器访问192.168.200.2



ubuntu中输入输入sudo iptables -A INPUT -p tcp -s 192.168.200.4 -j ACCEPT来允许kali虚拟机的数据包输入,可见kali成功访问

而winxpattacker访问失败

2.2 Snort入侵检测实践

使用Snort对给定pcap文件
输入如下指令sudo snort -c /etc/snort/snort.conf -r /home/mmy/listen.pcap -A fast -l /home/mmy/Desktop
生成报警日志文件alert
和指定报警日志log目录


检测说明:
攻击者(源 IP):172.31.4.178

  • 受害者(目的 IP):172.31.4.188
  • 行为性质:侦察/扫描(Reconnaissance/Scanning)。攻击者正在尝试发现目标主机上运行的服务(特别是 SNMP 和 Telnet),并使用了 Nmap 等工具进行指纹识别。
  • 风险等级:中低。目前主要是信息收集阶段,尚未看到明显的漏洞利用(Exploit)或数据窃取成功迹象,但暴露了不安全的服务(如 Telnet)。

🔍 详细日志分析

1. SNMP 服务探测(主要噪音)

日志片段: SNMP AgentX/tcp request ... -> :705 SNMP request tcp ... -> :161 SNMP trap tcp ... -> :162

  • 说明:
    • 攻击者多次尝试连接目标的 UDP/TCP 161 (SNMP)、162 (SNMP Trap) 和 705 (AgentX) 端口。
    • SNMP (Simple Network Management Protocol) 常用于网络设备管理。如果配置不当(如使用默认社区字符串 public),攻击者可以获取系统详细信息(进程、用户、路由表等),导致“信息泄露”。
    • 注意:Snort 规则 [1:1421:11] 等通常对任何指向这些端口的 TCP 连接都报警。如果目标主机没有运行 SNMP 服务,这可能只是扫描器的试探;如果运行了,则存在配置风险。

2. Nmap XMAS 扫描(明确的扫描行为)

日志片段: [1:1228:7] SCAN nmap XMAS ... -> :1

  • 说明:
    • 特征:SCAN nmap XMAS 是 Snort 对 Nmap 圣诞树扫描(Xmas Scan) 的特征匹配。
    • 原理:攻击者发送设置了 FIN、PSH 和 URG 标志位的 TCP 包(像圣诞树上的彩灯一样全亮)。根据 RFC 标准,关闭的端口应返回 RST,开放的端口可能忽略。这是一种隐蔽的扫描方式,用于探测端口状态。
    • 目标端口 1:TCP 端口 1 通常未使用。扫描这个端口通常是为了测试防火墙反应或进行操作系统指纹识别。
    • 结论:这证实了攻击者正在使用 Nmap 或其他扫描工具对目标进行主动探测。

3. DDoS mstream 误报(大概率 False Positive)

日志片段: [1:249:8] DDOS mstream client to handler ... -> :15104

  • 说明:
    • 背景:mstream 是一种古老的 DDoS 工具。Snort 规则 ID 249 检测的是特定端口(15104)上的通信模式。
    • 分析:结合上下文,源 IP 172.31.4.178 刚才还在做扫描,突然变成 DDoS 客户端的可能性较低。更有可能的是:
      1. 误报:扫描器随机扫描到了 15104 端口,触发了签名。
      2. 巧合:该端口上有其他合法服务产生了类似特征的数据流。
    • 建议:除非你确认内网有感染 mstream 病毒的主机,否则在扫描背景下,这通常被视为误报。

4. Telnet 访问(高风险服务暴露)

日志片段: [1:716:13] INFO TELNET access ... 172.31.4.188:23 -> 172.31.4.178:50879

  • 说明:
    • 方向反转:注意这次是 188 (目标) -> 178 (源)。
    • 含义:这表示目标主机(188)上的 Telnet 服务 (端口 23) 正在向扫描者(178)发送数据。
    • 可能性 A(Banner Grabbing):扫描者连接了 Telnet 端口,服务器返回了欢迎标语(Banner),Snort 检测到这是 Telnet 流量。
    • 可能性 B(反向连接):如果 178 之前植入了后门,188 可能会主动连接回去。但考虑到时间戳紧密相连,可能性 A(扫描响应)极大。
    • 安全风险:Telnet 是明文传输协议,极易被嗅探账号密码。现代系统中应禁用 Telnet,改用 SSH。


2.3 分析配置规则

1)数据捕获机制 蜜网网关主要通过三个维度实现数据的全面捕获:防火墙日志记录、网络流量镜像以及系统内部活动监控。

  • 防火墙日志:作为第一道防线,防火墙负责记录所有穿越边界的双向连接信息,这些日志通常存储于 /var/log/messages 中。然而,防火墙的局限性在于其仅能提取数据包的头部元数据(如时间戳、源/目的IP及端口号),无法深入解析数据包的有效载荷(Payload)或记录攻击者的具体交互行为(如击键记录)。
  • IDS 深度捕获:相比之下,入侵检测系统(IDS)具备更深层次的数据捕获能力。它能够对蜜网环境内的所有网络通信进行全量捕获,不仅记录包头,还能完整保存数据包载荷。通过 Snort 等工具,可以将所有 IP 通信数据转储至 tcpdump 日志文件中,以便后续进行深入取证分析。若将嗅探器绑定至外部接口(如 eth0),则不仅能捕获针对蜜网的流量,还能记录下与之相关的外部网络交互数据。

(2)数据控制策略 蜜网网关实施数据控制的核心手段主要包括基于 iptables 的连接速率限制以及基于 snort-inline 的内联入侵防御。

  • 基于 iptables 的流控:通过配置 rc.firewall 脚本,可以利用 iptables 对出站流量进行精细化控制。该机制能够限制 TCP、UDP 及 ICMP 协议的数据包发送频率,支持以秒、分、小时或天为时间单位进行灵活限速。此外,该技术还具备欺骗性,可以通过修改出站数据包使其无法真正到达目的地,从而让入侵者误以为攻击指令已正常执行,实则被网关拦截。

打开蜜网,输入:vim /etc/init.d/rc.firewall
image
其余图片略去
(注:需要先提权,再输入指令,否则查无内容)
使用命令iptables -t filter -L | more来查看规则列表。
image
使用命令vim /etc/init.d/snortd打开Snort脚本文件

使用命令chkconfig --list | grep iptables和chkconfig --list | grep snort可以看到查询的服务是否开启,可以看到防火墙和NIPS是跟随系统启动的,NIDS不自动启动
image
使用命令vim /etc/honeywall.conf打开honeywall配置文件:
image

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

问题 1:执行 iptables 命令时提示权限不足

  • 问题描述:在 Ubuntu 终端直接输入 iptables -L或 iptables -A INPUT ... 时,系统返回 Fatal: can't open lock file /run/xtables.lock: Permission denied 错误。
  • 原因分析:iptables 是用于配置内核网络过滤表的工具,修改防火墙规则属于系统底层操作,普通用户没有权限修改内核参数。
  • 解决方法:在命令前加上 sudo 提权,例如 sudo iptables -L。输入当前用户的密码后即可执行。

问题 2:Snort 报警日志中出現大量误报或难以理解的警报

  • 问题描述:在运行 Snort 对 pcap 文件进行检测后生成的 alert文件中,出现了如 DDOS mstream client to handler 这样的警报,但实际流量只是普通的端口扫描,并非真正的 DDoS 攻击。此外,SNMP 相关的报警非常多。
  • 原因分析:
    • 误报原因:Snort 的规则是基于特征匹配的。某些扫描行为(如随机端口扫描)可能偶然触发了特定端口(如 mstream 使用的端口)的特征签名,导致误报。
    • SNMP 报警多:因为扫描器对 SNMP 常用端口(161, 162, 705)进行了密集探测,每探测一次触发一次规则,因此日志量大。
  • 解决方法:
    • 结合上下文分析:观察源 IP 的行为模式。如果同一源 IP 在短时间内对多个不同端口进行探测,更可能是端口扫描而非特定的 DDoS 攻击。
    • 优化规则:在生产环境中,可以通过调整 Snort 规则的阈值(threshold)来减少此类误报,或者在白名单中排除可信IP。

问题 3:蜜网网关脚本编辑权限问题

  • 问题描述:在尝试使用 vim /etc/init.d/rc.firewall 或 vim /etc/honeywall.conf 修改蜜网网关配置时,提示文件只读或无法保存。
  • 原因分析:/etc/init.d/ 和 /etc/ 下的配置文件属于 root 用户,普通用户只有读取权限,没有写入权限。
  • 解决方法:使用 sudo vim /etc/init.d/rc.firewall 打开文件。在 vim 编辑器中,保存时需使用 :wq,若之前未加 sudo 打开,需先退出,重新用 sudo 打开再保存。

问题 4:防火墙规则生效后,正常业务流量也被阻断

  • 问题描述:在配置了 iptables -A INPUT -p icmp -j DROP 后,不仅攻击者无法 ping 通,合法的局域网其他主机也无法 ping 通目标主机,甚至影响到了正常的 SSH 连接测试。
  • 原因分析:-A INPUT 是将规则追加到链的末尾,但如果默认策略(Policy)设置不当,或者之前的规则有误,可能会影响其他协议。虽然 ICMP DROP 只影响 Ping,但在测试连通性时容易混淆。更重要的是,如果没有明确允许 SSH (Port 22) 的规则,且默认策略为 DROP,则 SSH 会被阻断。
  • 解决方法:
    • 明确添加允许规则:在执行 DROP 规则前或后,确保有 sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT。
    • 使用 -I INPUT 1 将规则插入到第一行进行测试,测试完毕后记得删除或调整顺序,以免长期阻断正常管理流量。
    • 实验结束后,使用 sudo iptables -F 清空所有规则,恢复默认状态,以免影响后续实验。

4.实践总结

通过本次网络安全防护与检测的综合实践,我深入理解了防火墙配置、入侵检测系统(IDS)工作原理以及蜜网网关的数据控制机制,主要收获如下:

1. 防火墙策略配置的灵活性与风险

通过 iptables 的实践,我掌握了 Linux 下包过滤防火墙的基本操作。

  • 细粒度控制:学会了如何针对特定协议(ICMP)、特定端口(TCP/UDP)和特定 IP 地址制定允许(ACCEPT)或拒绝(DROP)规则。
  • 规则顺序的重要性:深刻体会到 iptables 规则是按顺序匹配的,第一条匹配成功的规则生效。因此,放行规则通常应放在拒绝规则之前,或者合理设置默认策略(Default Policy)。
  • 最小权限原则:在实际配置中,应遵循“默认拒绝,按需允许”的原则,只开放必要的服务端口(如 SSH, HTTP),关闭不必要的端口(如 Telnet, FTP),以减少攻击面。

2. 入侵检测系统(Snort)的分析能力

通过 Snort 对 pcap 文件的离线分析,我学习了如何从海量的网络流量中识别潜在威胁。

  • 特征匹配原理:理解了 Snort 是基于特征签名(Signature)进行匹配的。不同的攻击行为(如 Nmap 扫描、SNMP 探测)有独特的数据包特征,Snort 通过匹配这些特征生成警报。
  • 日志分析技巧:学会了阅读 Snort 的 alert 日志,关注源 IP、目的 IP、端口、协议以及具体的警报消息(如 SCAN nmap XMAS)。
  • 误报识别:认识到 IDS 存在误报的可能,需要结合上下文(如源 IP 的行为模式、时间频率)进行人工研判,不能盲目相信所有警报。

3. 蜜网网关的数据捕获与控制

通过配置 Honeywall,我了解了蜜网(Honeynet)的核心技术:数据捕获和数据控制。

  • 数据捕获:蜜网需要记录所有的网络活动(包括攻击者的击键、数据包载荷),以便后续取证和分析。Snort 在此处不仅作为 IDS,还作为数据包记录器。
  • 数据控制:为了防止蜜网被用作攻击跳板(即攻击者利用蜜网攻击其他外部主机),必须实施严格的外出连接限制。通过修改 rc.firewall 脚本,限制出站 TCP/UDP/ICMP 的连接数和速率,甚至修改数据包内容(如 TTL 值),从而在不惊动攻击者的情况下限制其破坏能力。
  • 配置管理:熟悉了 Linux 下服务启动项的管理(chkconfig)和配置文件编辑(vim),确保了蜜网网关服务的开机自启和正确运行。

通过这次实验,我不仅掌握了具体工具的使用,更建立了系统的网络安全防护思维,为今后从事网络安全工作打下了坚实的基础。

posted @ 2026-04-19 14:11  眠绵雨  阅读(55)  评论(0)    收藏  举报