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

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

1. 实践内容

本次实验围绕网络安全防御技术展开,分为三个模块:主机防火墙配置、Snort入侵检测离线分析、蜜网网关防御机制研究。

防火墙配置:在Linux平台使用iptables实现两类访问控制。第一类是过滤ICMP协议,使主机不再响应Ping探测,达到网络隐身效果;第二类是基于IP地址的访问控制,只允许指定的IP地址访问本机的HTTP服务,其他来源一律拒绝。通过这一过程熟悉iptables规则链的增删查改以及规则匹配顺序的重要性。

Snort入侵检测:使用开源IDS工具Snort对预先捕获的pcap流量文件进行离线分析。通过配置Snort以IDS模式运行,从pcap文件中读取数据包,依据规则集进行特征匹配,输出报警日志。从日志中识别攻击类型,理解基于签名的检测原理。

蜜网网关规则分析:分析蜜网网关的防火墙脚本和IDS配置,探究其如何通过iptables与Snort的联动实现攻击诱捕、数据捕获和流量控制。

2. 实践过程

2.1 实验环境

本次实验使用三台虚拟机,IP配置如下:

名称 IP地址 作用
Kali 192.168.200.66 攻击机/防火墙配置目标
seedUbuntu 192.168.200.64 测试客户端
WinXP 192.168.200.65 测试客户端

2.2 防火墙配置

2.2.1 过滤ICMP数据包

首先在Kali上查看当前防火墙规则状态,执行sudo iptables -L
image
INPUT、FORWARD、OUTPUT均为空,默认策略是ACCEPT。

从seedUbuntu和WinXP分别向Kali发送Ping命令
image

image

均能收到正常回显,说明网络通畅且无任何过滤。

在Kali上添加ICMP丢弃规则:

sudo iptables -A INPUT -p icmp -j DROP

该规则将匹配所有ICMP协议的数据包,并直接丢弃。再次执行sudo iptables -L确认规则已加入INPUT链。
image

重新从seedUbuntu ping Kali
image

终端显示无任何响应,持续超时。
用Wireshark抓包验证
image

只能看到发出的ICMP请求,没有收到回包。
从WinXP测试
image

同样无法ping通,证明规则对所有来源生效。

实验结束后用sudo iptables -D INPUT 1删除规则,恢复网络。
image

2.2.2 只允许特定IP访问HTTP服务

本环节要求只允许seedUbuntu(192.168.200.64)访问Kali的HTTP服务,其他IP禁止。

首先在Kali上启动简易HTTP服务:

python3 -m http.server 80

服务监听在80端口
image

从seedUbuntu和WinXP分别用浏览器访问http://192.168.200.66:80
image
image

两者均能正常看到目录列表,说明无任何限制。

在Kali上配置访问控制规则,注意顺序:先放行指定IP,再拒绝所有。

sudo iptables -A INPUT -p tcp --dport 80 -s 192.168.200.64 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j DROP

使用sudo iptables -L INPUT -n -v --line-numbers查看规则
image

可以看到两条规则顺序正确。

再次测试:从seedUbuntu访问HTTP服务,页面正常加载
image
从WinXP访问
image
浏览器长时间等待后显示连接失败
telnet 192.168.200.64 80测试
image

WinXP同样被拒绝。规则生效。

完成实验后删除规则:

sudo iptables -D INPUT 1
sudo iptables -D INPUT 1

(执行一次只能删除一条规则)!!

2.3 Snort入侵检测实践

使用第4次实验中保存的pcap文件作为分析数据源。

首先确认Snort已安装,执行snort -V
image

显示版本信息。
若未安装则sudo apt install snort。(我这里已经安装了)

执行离线分析命令:

sudo snort -c /etc/snort/snort.lua -r /var/run/vmblock-fuse/blockdir/VcOmTT/listen.pcap -l /etc/snort/log -A alert_full

参数解释:

  • -c 指定配置文件
  • -r 读取pcap文件
  • -l 指定日志输出目录
  • -A alert_full 输出完整报警信息

命令执行后,Snort开始逐包分析
image

image
从统计输出中可以看出

  • 流量组成:数据包以 IPv4 协议上的 TCP 流量为主,另有少量 UDP 和 ARP 包。
  • 扫描检测:端口扫描预处理器检测到大量扫描行为,并命中多个已知扫描模式。
  • 应用层记录:捕获到少量 Back Orifice 特征包、数次 DNS 查询请求,以及多个 HTTP 请求,包含 GET 和 OPTIONS 方法。
  • 连接特征:TCP 流统计中存在大量的 SYN、SYN-ACK 和 RST 包,表现出明显的连接建立与重置行为,符合网络扫描和主机探测的流量特征。

2.4 蜜网网关规则分析

登录蜜网网关虚拟机,分析其防火墙和IDS配置。

防火墙启动脚本分析:使用sudo vim /etc/init.d/rc.firewall查看核心防火墙脚本。
image

脚本开头检查ip_queue内核模块是否存在
image

(!!!该模块是iptables与Snort-Inline通信的桥梁。如果模块缺失,脚本会输出错误并退出,防止蜜网网关在不具备IPS能力时运行。)

脚本中定义了黑白名单的处理逻辑。黑名单中的IP会被直接DROP,白名单中的IP则放行。对于其他流量,脚本将其引导至QUEUE链,由Snort进行深度检测。

iptables规则查看:执行sudo iptables -t filter -L -n查看filter表规则。
image
可以看到多个自定义链,tcpHandler、udpHandler、otherHandler等,每条链中都包含 QUEUE 规则,用于将数据包发送到用户空间的 Snort 进程进行深度检测;同时还有 LOG 规则,用于记录所有流经蜜网网关的数据包,便于后续攻击分析。

Snort配置分析:查看/etc/snort/snort.conf
image

其中定义了HOME_NET为蜜罐网络地址段,EXTERNAL_NET为外部网络。规则文件路径指向/etc/snort/rules/,该目录下包含各种攻击类型的规则集,如web-misc.rulesbackdoor.rulesscan.rules等。

蜜网启动过程:查看/etc/init.d/hw-snort_inline脚本
image

该脚本负责启动Snort的inline模式。inline模式下Snort能够接收来自QUEUE的数据包,并根据规则决定放行、拒绝或修改数据包。

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

  • 问题1:在Kali上启动HTTP服务时,执行python3 -m http.server 80提示“权限被拒绝”。

    • 原因分析:通过搜索得到1024以下的端口需要root权限才能绑定。
    • 解决方案:使用sudo python3 -m http.server 80,或者改用大于1024的端口,并在iptables规则中将dport改为8000。本次实验选择使用sudo启动。
  • 问题2:添加iptables规则后,发现从WinXP访问HTTP服务仍然能通,规则未生效。

    • 原因分析:规则顺序错误
    • 解决方案:先sudo iptables -L INPUT --line-numbers查看规则列表,确认顺序。发现DROP规则在ACCEPT规则之前,导致所有连接被提前丢弃。使用-D删除错误规则,重新按“先ACCEPT后DROP”的顺序添加。再次测试,WinXP被成功阻断。
  • 问题3:Snort目录问题(。。)

4. 实践总结

本次实验中的一个典型问题是运行 Snort 时指定了不存在的日志目录(/etc/snort/log),导致程序直接报错退出。起初以为是命令或配置文件有误,后来才发现 Snort 不会自动创建日志目录,需要提前手动建立。这个细节虽然简单,但反映出使用安全工具时容易忽略的环境准备问题。此后先创建目录再执行命令,Snort 便能正常运行。这一点也提醒我,在使用类似工具时,应仔细检查路径是否存在,避免因基础环境缺失而干扰对结果的判断。

http://www.jsqmd.com/news/667416/

相关文章:

  • 别再尬聊了!用这36个问题,我让团队新人在一次午餐会上成了朋友
  • 别再死记硬背了!用3个实际案例彻底搞懂Unity UGUI的Pivot和Anchor
  • STM32 HAL库实战:FatFS文件系统移植与优化指南
  • 应用安全 --- 逆向工程 之 C++类的本质
  • B站STM32江科大视频教程系统化目录,ai生成
  • 3分钟掌握:浏览器媒体资源智能提取实战指南
  • 别再死磕微积分了!用Python的SymPy库5分钟搞定拉普拉斯变换解微分方程
  • 企业网管必看:Win11 22H2默认禁用TLS套件,如何批量修复员工WPA2认证失败?
  • IEC 62660-2:2019标准解读:搞懂电动车电池强制放电、过充测试到底怎么测
  • 别再只写TodoList了!这个王者荣耀积分夺宝Demo,教你用原生JS写出有‘网感’的交互项目
  • 2026年3月不锈钢水箱厂商推荐,不锈钢水箱/箱泵一体化泵站/不锈钢组合水箱/不锈钢保温水箱,不锈钢水箱公司怎么选择 - 品牌推荐师
  • 【Minecraft】从零构建:为你的Minecraft服务器集成第三方皮肤站认证
  • 别再只插线了!手把手教你读懂DisplayPort接口的20根针脚(附FPGA调试实战)
  • 防勒索病毒的最后一道防线:用Syncthing在Linux服务器搭建带版本历史的‘冷备份’
  • 基于YOLOv26深度学习算法的独居老人跌倒检测系统研究与实现
  • 科学绘图Sigmaplot 15.0超详细下载教程(附安装包)
  • 别再只用rand()了!C++11的<random>库实战:从游戏抽奖到蒙特卡洛模拟
  • 从一道ACM题‘吃瓜比赛’出发,聊聊如何用博弈论思维解决看似复杂的资源竞争问题
  • IDM Activation Script技术实现原理与高级应用指南
  • 别再乱堆膨胀卷积了!用Python可视化代码带你避开Gridding Effect这个坑
  • 保姆级避坑指南:在Ubuntu 20.04上搞定ego-planner与PX4仿真(解决eigen3版本冲突)
  • 5步彻底解决ComfyUI-Impact-Pack的SAM模型加载失败问题
  • Python的__init_subclass__框架健壮性
  • Python 后端开发技术博客专栏 | 第 10 篇 asyncio 协程编程全指南 -- 从事件循环到生产实践
  • 告别ResNet的推理负担:用RepVGG重参数化技术,让你的模型在GPU上跑得更快更省显存
  • PCIe连接器成了‘阻抗刺客’?一次由92ohm背板引发的信号完整性问题排查实录
  • 3类鸡行为检测数据集|进食、休息、站立(2500张)|YOLO训练数据集 智慧养殖 行为识别 健康监测 环境优化
  • Qwen3-VL-8B聊天系统应用:打造企业内部智能客服助手
  • SliderCaptcha终极指南:5分钟快速集成Web安全滑块验证组件
  • 从向量计算到数据处理:解锁C++ <numeric> 库在算法竞赛和数据分析中的隐藏用法