当前位置: 首页 > news >正文

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

1. 实践内容

本周主要学习了网络安全防范技术,核心内容围绕防火墙和入侵检测系统(IDS/IPS)的原理与应用。本次实践旨在通过实际操作,掌握基础安全防范设备的配置与分析能力,具体包括:

  1. 防火墙配置实践:在 Linux 平台使用 iptables 配置防火墙规则,实现对特定协议(ICMP)的过滤,以及对特定网络服务(如 HTTP/SSH)基于 IP 地址的细粒度访问控制。
  2. Snort 入侵检测实践:使用开源 IDS 工具 Snort,对之前截获的黑客扫描与攻击流量(pcap 文件)进行离线检测,通过配置明文日志输出,分析攻击行为特征。
  3. 蜜网网关规则分析:登录虚拟环境中的蜜网网关(Honeywall),深入分析其底层的 iptables 防火墙脚本和 Snort 配置规则,理解蜜网是如何实现“数据捕获(记录黑客行为)”与“数据控制(防止蜜罐成为攻击跳板)”双重目标的。

2. 实践过程

实践一:防火墙配置 (基于 Linux iptables)

实验环境准备:

  • 靶机(配置防火墙的主机):192.168.81.136(Kali)
  • 测试机 A(被允许的合法主机):192.168.81.131(WinXP Attacker)
  • 测试机 B(被拒绝的攻击主机):192.168.81.125(Metasploitable2)

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

  • 操作前测试:在测试机 A 和 B 上分别 ping 靶机,此时均能正常接收回显,网络畅通。
    image
    image
  • 配置规则:在靶机(Kali)上打开终端,使用 root 权限执行以下命令,向 INPUT 链追加规则以丢弃所有入站的 ICMP Echo Request(Ping 请求)包:
    sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
  • 查看规则:输入 sudo iptables -L -n 查看规则列表,确认 DROP 规则已成功添加。
    image
  • 验证效果:再次在测试机 A 和 B 上 ping 靶机,发现请求全部超时(Request timeout),说明防火墙已成功拦截了 Ping 探测报文。
    image
    image

(2) 只允许特定 IP 地址访问主机的某一网络服务

本实验以防御 HTTP 服务(80 端口)为例。首先在靶机上执行 sudo systemctl start apache2 确保 Web 服务已开启。

  • 操作前测试:在测试机 A 和 B 的终端或浏览器中访问靶机的 80 端口,此时均能正常访问。
  • 清理旧规则:在靶机上先清空之前的规则,防止策略干扰:
    sudo iptables -F
  • 配置规则:在靶机上依次输入以下命令(注意:iptables 是自上而下按序匹配,因此须先放行,后拒绝):
    1. 仅允许测试机 A(192.168.81.131)访问 80 端口:
      sudo iptables -A INPUT -p tcp -s 192.168.81.131 --dport 80 -j ACCEPT
    2. 拒绝其他所有非授权 IP 访问 80 端口:
      sudo iptables -A INPUT -p tcp --dport 80 -j DROP
  • 查看规则:输入 sudo iptables -L -n 确认规则顺序无误。
    image
  • 验证效果
    • 测试机 A 访问(成功):使用测试机 A 访问靶机 80 端口,成功加载出 Apache 默认欢迎页面,服务正常放行。
      image
    • 测试机 B 访问(失败):使用测试机 B 终端执行 curl http://192.168.81.136,发现光标持续闪烁无响应(连接被静默丢弃),说明非白名单主机的访问已被防火墙成功阻断。
      image

(实验完成后,在靶机执行 sudo iptables -F 即可恢复网络默认状态)


实践二:动手实践 Snort 入侵检测

实验准备:将第 4 章实践中截获的 listen.pcap 测试包拷贝到 Kali 虚拟机中。

  • 步骤 1:执行离线数据包检测
    在 Kali 终端中,调用 Snort 引擎读取离线 pcap 文件,并挂载配置文件与日志存放目录。执行以下命令:
    sudo snort -c /etc/snort/snort.lua -r /home/kali/listen.pcap -l /var/log/snort/
    image
    image
    image
    image

  • 步骤 2:查看报警日志状态
    执行完毕后,检查输出目录 ls -l /var/log/snort/,显示 total 0
    经综合研判,这并非配置失误,而是由于当前数据包中的行为虽然异常,但未能直接匹配命中 Kali 现用 Snort 3 规则库中具体的单条特征签名,因此没有生成显式的纯文本 alert 警报文件。
    image

  • 步骤 3:基于底层统计模块的攻击溯源分析
    既然未生成传统特征匹配日志,本实验转而通过深度剖析 Snort 运行结束时输出的 Module Statistics(模块统计报告),从流量引擎底层精准溯源该数据包中的真实恶意行为:

    1. 极其暴力的 TCP SYN 半开扫描探测
      观察终端输出的 stream_tcp 统计模块,系统明确记录到了高达 syns: 67657 次的同步请求,以及对等的 rsts: 67549 次连接重置包。在短短 1.37 秒的运行时长内,爆发如此高频且比例接近 1:1 的 SYN/RST 握手交互,是黑客使用 Nmap 等工具执行大规模隐蔽端口探测(TCP SYN Scan)的铁证。
    2. 引擎扫描追踪判定
      同时,在输出的 port_scan 模块中,Snort 底层引擎已将多达 135515 个数据包自动划分为扫描流量并进行了状态跟踪。这从底层数据的宏观维度,彻底坐实了该数据包的本质是一段高强度的恶意探测网络流,绝非正常的业务监听数据。
      image

实践三:分析配置规则(蜜网网关 Honeywall)

本环节登录虚拟网络环境中的蜜网网关(Honeywall,默认账号 roo,密码 honey,需切换到 root 权限 su -),深入剖析其底层防护配置文件。

(1) 数据控制(防火墙规则)分析

  • 分析方法:在 Honeywall 中输入 iptables -t nat -L -n 等命令查看防火墙的地址转换与过滤规则链。截图如下:
    image
  • 原理解析:蜜网网关的数据控制主要是为了防止蜜罐被攻陷后成为攻击外部网络的跳板。虽然上图的 NAT 表展示了其基础的路由连通性策略,但深入剖析其底层的 filter 表可以发现,Honeywall 设置了严格的连接限制(Connection Limiting)。例如,它通常只允许蜜罐向外发起极少量的合法网络连接(如单日最多允许 20 个外向 TCP 连接和 20 个 UDP 连接)。一旦黑客试图利用蜜罐对外发动大规模扫描或 DDoS 攻击,超过该阈值后,防火墙就会将多余的外发数据包直接 DROP 丢弃,从而将安全隐患严格闭环在蜜网内部。

(2) 数据捕获(IDS/IPS 规则)分析

  • 分析方法:使用命令查看 Snort 的配置文件 cat /etc/snort/snort.conf 中的详细设置,重点关注其规则加载部分。截图如下:
    image
  • 原理解析:从上图配置片段(Step #6: Customize your rule set)可以看出,蜜网网关的数据捕获是多维度、全方位的:
    1. 网络层深层检测(基于自定义规则):网关上的 Snort 运行在高度隐蔽的透明桥接模式(Inline 模式)下。如截图中 include $RULE_PATH/local.rules 所示,防御者可通过向本地规则库中添加针对性的恶意特征码,令 Snort 逐包深度检测所有进出蜜网的真实物理流量,并在不改变数据包物理走向的前提下默默记录报警日志。
    2. 主机层行为联动捕获:仅靠网络层无法解密加密的黑客攻击流量(如 SSH 远程连接),因此 Honeywall 还紧密结合了部署在蜜罐主机上的 Sebek 模块。Sebek 运行在内核态,能够直接捕获黑客在蜜罐内敲击的键盘记录、执行的系统命令以及底层文件读写行为,并将其隐蔽地通过加密通道发送回网关分析。两者结合,真正实现了对入侵行为的 360 度无死角监控。

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

  • 问题 1:在使用 iptables 设置特定 IP 访问白名单时,发现所有 IP(包括白名单 IP)都无法访问服务了。
    • 问题 1 解决方案:经过排查,发现是由于 iptables 规则链的注入顺序错误造成的。最初我先执行了 DROP 所有 IP 的通用拒绝规则,随后才执行 ACCEPT 允许特定 IP 的放行规则。由于 iptables 防火墙采用“自上而下匹配,匹配即停止”的机制,入站数据包一旦触碰顶部的 DROP 动作就被立刻丢弃,根本无法执行后续的放行校验。解决方法是使用 iptables -F 清空规则,先添加放行的 ACCEPT 规则,再在末尾“兜底”添加拒绝的 DROP 规则。
  • 问题 2:在 Kali 中运行 Snort 读取 pcap 文件时,提示找不到 snort.conf 配置文件。
    • 问题 2 解决方案:排查发现部分 Kali Linux 镜像默认可能未完整打包 Snort 的特征规则库组件。通过依次执行 sudo apt updatesudo apt install snort 进行在线补全安装(在配置向导提示网络接口时保留默认设置即可),随后在 /etc/snort/ 目录下成功定位到了所需的核心配置文件,保证了离线检测的正常运行。
  • 问题 3:在执行 Snort 报警日志输出时,按照传统指导书中的 -K ascii 参数执行报错 unknown option,且未生成期望的日志文件。
    • 问题 3 解决方案:经查阅官方发行说明发现,最新版 Kali 预装的是全面重构的 Snort 3 架构,其已正式废弃了老版本的 -K ascii 参数。因此,我通过自学官方手册,将执行命令语法调整为适配 Snort 3 的 sudo snort -c /etc/snort/snort.lua -r listen.pcap -l /var/log/snort/ -A alert_fast,成功绕过了参数兼容报错。同时针对日志为空的问题,转换思路深挖引擎运行结束时的统计面板报告,最终依然圆满完成了攻击流量溯源。

4. 实践总结

通过本周的攻防实践,我将理论课本上抽象的“访问控制”与“入侵检测”概念真正落地到了实际的命令行操作中。

在防火墙配置环节,我深刻体会到了 iptables 规则链的严密性与逻辑串联关系,明白了“默认拒绝,最小特权”思想在安全防护中的基石地位。在操作 Snort 分析流量包时,透过干瘪的 pcap 原始文件提取出触目惊心的海量 SYN 扫描统计数据,让我直观感受到了底层 IDS 引擎的强大,也意识到维护一套高质量、高匹配率规则库的不可或缺性。最后对蜜网网关体系的拆解分析,让我理解了何谓真正的“纵深防御体系”——通过防火墙管控外联切断二次危害,同时依靠串联模式的 IDS 和内核级的 Sebek 实现全视角监控。

本次实践极大拓宽了我的安全防御视野,提升了我面对底层网络协议和复杂流量特征进行研判的实战动手能力。


参考资料

  • 《网络攻防技术与实践(第二版)》
  • Netfilter/iptables 官方过滤手册
  • Snort 3 官方使用手册与模块指南
http://www.jsqmd.com/news/647236/

相关文章:

  • JavaScript对象浅拷贝:Object-assign的合并规则
  • 别再手动一个个点啦!Quartus II 13.1批量绑定引脚,用CSV和TCL脚本5分钟搞定
  • 保姆级教程:用STM32CubeMX快速验证NVIC、EXTI、ADC等核心外设功能(基于STM32F103C8T6)
  • 如何用ExplorerPatcher彻底改造Windows界面:从新手到专家的完整指南
  • GeoServer图片发布避坑指南:为什么你的地图总对不齐?从配准到发布的完整解决方案
  • 给智能健康监测设备做个“体检”:用STM32+FreeRTOS+LVGL项目实战,聊聊嵌入式开发的调试与优化心得
  • 别再只会用OpenCV做模糊了!用Python+NumPy手撸频域滤波器,5分钟搞定图像边缘增强
  • 3步掌握专业级Windows音频调校:终极Equalizer APO配置指南
  • 爱毕业(aibiye)让数学建模论文的复现与智能排版更高效、更精准
  • 终极像素艺术VFX编辑器:无需代码的完整视觉特效创作指南
  • HC32F460 USB CDC通信异常:非对齐访问异常排查
  • MySQL升级导致排序规则变化怎么处理_更新Collation配置
  • 别再手动配环境了!用pyproject.toml统一管理你的Python项目(附Poetry/Flit/Hatch对比)
  • mrpack-install如何解决Minecraft服务器模组包部署:面向开发者的自动化部署方案
  • 从训练到部署全链路压缩提速4.6倍:SITS2026专家实测TensorRT-LLM+OpenVINO双栈协同压缩方案
  • CSS如何让Bootstrap列表项整齐排列_利用display grid实现
  • Java的ForeignFunctionAPI与ProjectPanama在本地内存访问中的突破
  • 工业自动化调试的革命:ModbusTool如何通过三合一协议支持重塑设备通信测试
  • 【ESP8266】巧用内部EEPROM,构建WiFi配置的持久化记忆
  • EtherCAT 转Profinet 极片生产数据全程追溯工业物联网
  • 从‘软’到‘硬’:手把手解析铜凸点如何解决焊料凸点的塌陷与短路难题
  • 借助爱毕业(aibiye),用户可以轻松完成数学建模论文的复现与智能排版优化
  • 低成本玩转宇树机器狗Go2:Gazebo仿真+Velodyne雷达实战教程
  • 2026毕业季生存指南:实测5款降ai工具,亲测有效
  • 如何快速上手GSE:魔兽世界高级宏编辑器的终极指南
  • Step3-VL-10B轻量级多模态模型教程:10B参数下GPU显存占用实测(24GB)
  • 2个高星CLAUDE.md范例,直接复制能用(Claude Code实用指南)
  • 十年信任崩塌:Backblaze为何悄悄停止备份你的云端数据?
  • CSS如何使得下拉选择框不受外层容器的overflow裁剪_只能将下拉框放在body下并使用JS结合绝对定位计算位置
  • 伯明翰大学发布诗歌生成新标准:AI能否成为下一个莎士比亚?