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

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

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

1.知识点梳理与总结

一、iptables 防火墙配置知识点梳理

    1. 防火墙基础概念
      防火墙是网络访问控制安全设备,工作在网络层 / 传输层,通过数据包过滤规则,对进出主机的 IP 数据包进行匹配、允许、拒绝、丢弃,实现网络访问隔离与安全防护。
    1. ICMP 协议与 Ping 禁止原理
      Ping 命令基于ICMP 报文(互联网控制报文协议),ICMP Echo Request(请求)和 Echo Reply(应答)实现连通性探测。
    1. 特定 IP 访问控制原理(白名单策略)
      网络服务(HTTP/FTP/SMB)对应固定TCP 端口,服务监听本机端口等待连接;
      默认策略:拒绝所有外部 IP 访问本机服务;
      白名单放行:仅允许指定 IP(192.168.200.3)访问对应服务端口;
      黑名单阻断:其他 IP(192.168.200.4)访问同一服务直接拒绝 / 丢弃;
    1. iptables 规则链知识点
      INPUT 链:处理外部进入本机的数据包(实验主要配置链)
      OUTPUT 链:本机向外发送数据包
      FORWARD 链:路由转发数据包
      规则匹配顺序:从上到下匹配,匹配即执行动作(ACCEPT/DROP/REJECT)。

二、Snort 入侵检测实践知识点梳理

    1. 入侵检测系统 IDS 基础概念
      IDS(入侵检测系统):被动监听网络流量,不阻断流量,只检测告警,区别于防火墙主动过滤;用于发现网络扫描、端口探测、攻击行为、异常流量。Snort 是开源轻量级网络入侵检测系统 NIDS,工作在网络嗅探模式。
    1. 离线 PCAP 流量分析原理
      PCAP 文件是网络流量抓包日志文件,保存完整原始网络数据包;实验不抓实时流量,采用离线分析模式:Snort 读取已有 pcap 文件,逐条匹配攻击规则,检测网络扫描行为。
    1. 对应攻击类型知识点
      实验 pcap 为网络扫描流量(端口扫描、主机存活扫描),Snort 检测出:主机探测扫描、端口枚举扫描、暴力探测类入侵行为,属于主动侦察类攻击,是入侵前期准备行为。

2.实验过程

一、配置Linux操作系统平台上的iptables,使主机不接收 Ping 包

在SeedUbuntu虚拟机中输入指令:sudo iptables -L,查看当前防火墙默认规则:
image
可以看到全为空,接下来配置 ICMP 包过滤规则:输入sudo iptables -A INPUT -p icmp -j DROP(-A INPUT:向入站数据包链末尾添加规则;-p icmp:匹配ICMP 协议(Ping 使用的协议);-j DROP:匹配后直接丢弃数据包,不响应)
image
可以看到添加的规则:禁止所有主机 Ping 本机,收到 Ping 包直接丢弃、不回复。
在kali机中进行ping连通性测试:
ping 192.168.200.4
image
返回SeedUbuntu,输入sudo iptables -D INPUT -p icmp -j DROP删除规则:
image
再次检测连通性情况:
image

二、只允许特定IP地址访问主机的某一网络服务

在SeedUbuntu中开启 HTTP 服务:
sudo service apache2 start
sudo service apache2 status
image
kali机访问http://192.168.200.4:
image
winxpattack访问http://192.168.200.4:
image
在seedUbuntu中执行指令:
sudo iptables -A INPUT -s 192.168.200.6 -p tcp --dport 80 -j ACCEPT(放行指定 IP:192.168.200.6 (kali机)访问 80 端口)
sudo iptables -A INPUT -p tcp --dport 80 -j DROP(默认拒绝所有访问 80 端口)
image

在winxpattack和kali机中进行检测:
image

image
最后执行sudo iptables -F清空规则

三、使用Snort对给定pcap文件进行入侵检测

在 Kali 终端执行以下命令:

sudo snort -r /home/kali/Desktop/listen.pcap -c /etc/snort/snort.lua -A alert_fast -l /var/log/snort
-r /home/kali/Desktop/listen.pcap-r:离线读取 pcap 抓包文件后面是文件路径:读取桌面上的 listen.pcap 流量包
-c /etc/snort/snort.lua-c:指定 Snort 配置文件这里用新版的 snort.lua 配置规则
-A alert_fast-A:指定告警输出格式alert_fast:快速简洁告警格式(只输出关键攻击信息)
-l /var/log/snort-l:指定日志输出目录把检测到的攻击日志保存到 /var/log/snort 目录
image
一:PCAP 流量读取情况:
Snort 工作在离线文件读取模式(pcap DAQ),读取桌面 listen.pcap
总共处理:135580 个数据包,全部完成分析,无丢弃异常
流量类型统计:
以太网帧:135580
IPv4 数据包:135560(几乎全部是 IPv4 网络流量)
TCP 数据包:135512(绝大多数是 TCP 流量)
UDP 少量、ARP 少量,符合网络扫描流量特征
二、关键检测模块运行分析
port_scan 端口扫描模块已运行
跟踪了 6 个扫描目标,处理全部 TCP 包,说明该 pcap 文件就是端口扫描流量
TCP 流重组模块 stream_tcp 建立了 67657 个 TCP 会话
大量短连接、大量 RST 重置包,是典型主动端口扫描、主机探测扫描行为
HTTP 检测模块识别到少量 HTTP 请求,DNS 少量查询
ac_full 特征匹配引擎完成 42 次特征命中,说明 Snort 匹配到了攻击 / 扫描规则

输入:sudo cat /var/log/snort/alert.fast查看告警文件内容:
image
发现为空,询问AI得到回答:由于本次使用Snort++ 新版 lua 架构,默认未开启明文告警日志文件输出功能,因此 /var/log/snort 日志目录为空;但 Snort 已成功加载检测规则、完整解析 pcap 流量,端口扫描检测模块已识别出网络扫描攻击行为,入侵检测功能正常生效。

四、分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则

打开honeywall虚拟机,输入vim /etc/init.d/rc.firewall查看蜜网网关防火墙的配置规则:
image
下滑:
image
load_modules() {
modprobe ip_tables # 防火墙核心模块
modprobe iptable_filter # 包过滤模块
modprobe iptable_nat # NAT转发模块
modprobe ip_conntrack # 连接状态跟踪
modprobe ipt_state # 状态匹配
}
load_modules() 函数负责初始化防火墙环境,加载网络地址转换、数据包过滤、流量转发等内核模块,为后续防火墙规则执行提供底层支持,是蜜网网关实现流量捕获、访问控制的基础。

image

  1. create_pidfile()
    创建 PID 文件,记录防火墙进程的进程号,标记防火墙已启动。
    PID:进程编号
    作用:系统通过这个文件判断防火墙正在运行。

  2. delete_pidfile()
    删除 PID 文件,清除防火墙运行标记。
    作用:关闭防火墙时执行,告诉系统防火墙已停止。

  3. isactive()
    检查防火墙当前是否处于运行状态(通过 PID 文件判断)。
    返回结果:运行中 / 已停止
    作用:脚本启动 / 停止前,先检查状态,避免重复启动或重复关闭。
    image

  4. flush()
    清空(刷新)所有已存在的 iptables 防火墙规则,恢复默认状态,避免旧规则干扰新规则。

  5. create_chains()
    创建自定义防火墙规则链,用于专门管理特定流量(如蜜网捕获、内网防护、攻击过滤)。
    功能:在 iptables 里新建自定义链,方便分类管理规则
    目的:把不同功能的防火墙规则分开(例如扫描防护、NAT 转发、蜜网流量过滤)

image

  1. default_policy() 默认安全策略函数
    设置防火墙默认拒绝所有流量的默认策略(默认拒绝)
    设置 INPUT、OUTPUT、FORWARD 三条链的默认 DROP 丢弃策略;遵循最小安全原则:没有明确允许的流量全部禁止,是防火墙最基础安全配置。
  2. localhost_policy() 本地主机策略函数
    配置本机本地回环、本机自身访问的防火墙规则
    放行本机 lo 回环接口(127.0.0.1)、本机内部通信;保证蜜网网关自身系统正常运行、本地服务可访问,不拦截本机正常流量。
  3. lockdown_policy() 锁定安全策略
    蜜网网关专用的强制隔离锁定策略,防止蜜网攻击内网、限制蜜网出站攻击
    禁止蜜网区域主机主动访问真实内网;限制蜜网对外发起扫描、攻击、跳板行为;加固边界防护,防止蜜网被攻陷后扩散危害;实现蜜网只进不出、可控诱捕的核心需求
    输入/sbin/iptables -t filter -L | less
    /sbin/iptables:蜜网网关系统中 iptables 命令的绝对路径
    -t filter:查看过滤表(防火墙访问控制表)
    -L:List,列出所有防火墙规则
    | less:分页显示,防止刷屏
    image

执行vim /etc/rc.d/init.d/snortd,查看 Snort 入侵检测系统的启动脚本:
image
snortd 是Snort IDS 入侵检测系统的启动 / 停止 / 重启管理脚本,里面主要包含这些内容:
Snort 程序安装路径
Snort 配置文件路径(snort.conf/snort.lua)
Snort 日志目录路径(/var/log/snort)
Snort 运行用户、PID 文件路径
四个核心函数:
start():启动 Snort 入侵检测服务
stop():停止 Snort 服务
restart():重启 Snort
status():查看 Snort 是否正在运行
启动参数:离线检测 / 实时监听网卡、告警输出格式、规则加载方式

执行vim /etc/init.d/hw-snort_inline,查看 Snort_inline 入侵防御系统的启动脚本:
image
hw-snort_inline 用于打开蜜网网关Snort 内联模式入侵防御 IPS 启动脚本,该脚本负责管理蜜网入侵检测与主动防御服务的启动、停止及运行配置,实现流量检测、攻击识别与阻断功能。包含:Snort 程序路径、配置文件路径、日志目录 /var/log/snort、网卡监听接口、内联桥接模式参数、start() 启动 IPS、stop() 停止 IPS、restart() 重启、status() 查看运行状态、启动参数:内联转发、流量检测、攻击拦截规则。
执行以下命令查看开机自启情况:
/sbin/chkconfig --list | grep iptables(查看防火墙开机自启状态)
/sbin/chkconfig --list | grep snort(查看入侵检测/防御服务开机自启状态)
image
0:关机 | 1:单用户模式 | 2/3/4/5:正常多用户运行模式(系统开机正常工作状态) | 6:重启
on= 开机自启,off= 开机不启动
蜜网网关正常开机运行级别(2、3、4、5)下,iptables 防火墙开机自动启动;
蜜网网关正常开机级别下,Snort 内联 IPS 入侵防御服务开机自动启动;
所有运行级别全部关闭开机自启,snortd 旁路监听 IDS 服务开机不会自动运行;

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

  1. SeedUbuntu系统较老,没有systemctl命令,开启apache2需要使用service命令。

  2. 白名单IP连不上对应的http网址,原因是因为iptables 是从上到下依次匹配,最开始的执行是先拒绝所有 IP 访问 80,再放行 192.168.200.6,结果:数据包一进来,先被第一条 DROP 拒绝了,后面白名单永远不会生效
    修改:防火墙规则顺序:先放行白名单 → 再拒绝其他所有人

4.学习感悟

通过本次防火墙配置、Snort 入侵检测与蜜网网关分析实验,我收获良多。实操中我掌握了 iptables 防火墙规则配置逻辑,理解了白名单规则顺序、禁 Ping、Web 服务访问控制的原理;学会使用 Snort 离线分析流量、识别端口扫描攻击,分清了旁路 IDS 与内联 IPS 的区别。同时了解了蜜网网关防火墙与入侵检测协同工作的架构:防火墙负责边界隔离、内网防护,IPS 负责流量监听、攻击捕获阻断。本次实验提升了我的网络安全实操能力,建立了完整的网络防护与攻击检测安全思维

参考资料

  • 《Java程序设计与数据结构教程(第二版)》
  • 《Java程序设计与数据结构教程(第二版)》学习指导
http://www.jsqmd.com/news/667202/

相关文章:

  • Rational Rose 2007 从零到一:图文详解下载、安装与激活全流程
  • 告别‘Failed building wheel for pythonnet’:一份给.NET开发者的Python环境避坑指南
  • uni-app 多端上架合规实战:从隐私政策到权限管理的避坑指南
  • 别再死记硬背公式了!用PyTorch代码实战FGM、PGD、FreeLB对抗训练(附避坑指南)
  • 3步突破百度网盘下载限制:解析工具让你的下载速度飞起来
  • VisionPro 卡尺记分实战:从参数原理到精准抓边的进阶指南
  • 从零到一:用GstBuffer API手把手构建一个简易视频帧处理器
  • 自动驾驶系统的感知融合决策规划与控制执行
  • [杭电春季联赛5] 1009 走马观花
  • 金丝雀发布实战指南:从概念到落地的关键策略
  • go: Singleton Pattern
  • 别再只用ping了!用iperf3给你的CentOS 7服务器做个专业‘体检’(附TCP/UDP带宽测试对比)
  • 别再只盯着堆叠配置了!深入聊聊H3C IRF中MAD的‘健康检查’与‘竞选’机制如何保业务
  • 底部固定U1,U2
  • Kandinsky-5.0-I2V-Lite-5s企业级应用:Java后端服务集成指南
  • SDX62平台编译Lighttpd时,BitBake反复报‘Reconnecting to server...’的快速解决手册
  • 从USB 2.0到USB 3.x:Synopsys SVT USB VIP配置避坑与接口选择指南
  • 20251905 2025-2026-2 《网络攻防实践》实验五
  • 告别单屏!详解LT8712SX的MST功能:如何让一个Type-C口轻松驱动两台4K显示器
  • ERA5-Land 逐小时累积数据:从单位换算到日值提取的实战避坑指南
  • 别再死记硬背公式了!用Python+HFSS快速仿真偶极子天线(从半波到宽带)
  • 从手机屏幕到相机传感器:MIPI CSI-2协议中RGB与RAW格式的实战选择指南
  • 从零搭建一个后台管理页:手把手教你用Avue-Crud配置增删改查(Vue3 + Element Plus版)
  • Unity URP卡通渲染实战:从零构建专业级动漫风格着色器
  • 前端安全防护实战
  • AGI可靠性如何验证?:5类致命幻觉检测框架+实时监控SOP(附开源工具链)
  • 别只刷题了!用这10个经典C语言案例,真正理解计算机思维(附杭电真题解析)
  • AI教材生成大揭秘!低查重AI工具,轻松搞定教材编写难题
  • QT开发跨平台气象应用:集成伏羲模型支持Windows、macOS和Linux
  • 从TeX Live到TeXstudio:我的本地LaTeX环境搭建与高效写作配置全记录