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

1.实践内容

1.主要任务

本次实践围绕网络主动防御技术的三个关键领域展开:防火墙规则设定、入侵检测系统(IDS)的流量审计以及蜜网网关安全策略的解析。通过实际操作与配置分析,深入理解网络安全防护机制在典型场景中的部署逻辑与联动机制。

1. 防火墙规则配置实验

在Linux环境下利用iptables工具实施数据包过滤策略,完成以下两个安全目标:其一,阻断ICMP回显请求报文,使得目标主机对外部Ping探测不作出任何响应;其二,实施基于源IP地址的访问限制,只允许特定IP(模拟可信攻击测试机)访问本机的HTTP服务,其他所有来源的Web连接请求一律拒绝。通过主动发起网络访问测试,验证所设规则的有效性。

2. Snort入侵检测分析实践

采用开源入侵检测系统Snort 3对提供的离线流量文件(listen.pcap)进行回溯分析。通过配置Snort 3的主配置文件(snort.lua)并载入社区提供的特征规则库,检测pcap文件中是否存在扫描或攻击痕迹。依据Snort输出的统计报表以及协议异常指标,识别并阐述流量中隐含的TCP SYN端口扫描行为。

3. 蜜网网关规则解析任务

登录Honeywall蜜网网关虚拟机,检查其防火墙启动脚本(/etc/init.d/rc.firewall)、Snort配置文件(/etc/hflow/snort.conf)以及服务控制脚本(/etc/init.d/hw-snort_inline、/etc/init.d/snortd)。分析iptables中自定义链(如黑名单链、白名单链、隔离链、协议限速链)的作用,并研究Snort_inline以IPS模式运行的配置细节。阐释蜜网网关如何采用“防火墙实施粗粒度访问控制 + 入侵检测系统进行细粒度阻断”的协同架构,从而实现对攻击流量的完整捕获并严格管控出站风险。

2.知识点梳理

2.1 防火墙技术与iptables

防火墙基础概念

防火墙作为网络安全基础设施,依据预设策略对穿越网络边界的流量实施过滤与控制。其基本职能是在受信内部区域与非受信外部区域之间构筑隔离层。按照实现技术演进,防火墙可划分为静态包过滤、动态状态检测、应用代理网关等类型。静态包过滤防火墙通过解析数据链路层以上头部中的元数据(如源地址、目的地址、传输层协议、端口编号)执行允许或拒绝决策,不维护连接状态。

iptables体系结构

iptables是Linux平台下操作Netfilter框架的命令行接口,用于配置IPv4报文过滤规则。其规则组织遵循“表→链→规则”的层次化模型:

表:依据处理目的划分功能域。主要包含:

filter:执行报文过滤,关联INPUT、OUTPUT、FORWARD链。

nat:执行网络地址转换,关联PREROUTING、POSTROUTING、OUTPUT链。

mangle:修改报文头部字段(如存活时间、服务类型),可挂载全部五条链。

链:对应Netfilter在内核协议栈中预设的五个钩子点:

PREROUTING:报文刚进入网络层、尚未进行路由选择时触发。

INPUT:报文经路由判定目的地为本机时触发。

FORWARD:报文经路由判定需由本机转发至其他主机时触发。

OUTPUT:本机应用程序发出的报文在离开协议栈前触发。

POSTROUTING:报文完成路由选择后、即将发送至网络接口前触发。

规则:由匹配条件与执行动作构成。匹配条件可包含协议类型、源/目的IP、端口范围等;动作包括ACCEPT(放行)、DROP(丢弃)、LOG(记录日志)等。规则在链内按顺序评估,一旦匹配成功即执行相应动作并终止后续规则的检查,因此规则的排列次序直接影响过滤效果。

2.2 入侵检测系统与Snort

入侵检测系统基础

入侵检测系统(IDS)通过持续监视网络流量或主机活动,识别可疑行为或违背安全策略的事件。依据监测数据来源,可区分为:

网络型IDS(NIDS)****:在网络交换节点采集并分析原始数据包,例如本实验采用的Snort。

主机型IDS(HIDS):驻留在特定主机上,审计系统调用、日志文件、文件完整性等。

检测技术主要包括:

特征匹配:将网络活动与已知攻击模式库进行比对,命中则产生警报。该方法对已知攻击识别精准,但对新型或变种攻击无能为力。

异常检测:通过机器学习或统计模型建立正常行为轮廓,对显著偏离该轮廓的活动发出警报。能够发现零日威胁,但存在较高误报率。

协议解析:对TCP/IP协议栈状态进行跟踪,识别违反协议标准的行为(例如大量SYN报文后无对应ACK响应,暗示端口扫描)。

IDS与IPS的差异在于:IDS采用旁路部署,仅发出警报而不干预流量;IPS则以串联方式接入,具备实时阻断攻击能力。Snort可同时支持两种模式,通过-Q参数启用IPS功能。

Snort组成与处理流程
Snort是一款开源、轻量级的NIDS/NIPS,采用插件化设计。其数据包处理管线包含以下阶段:

(1)捕获:借助DAQ(数据采集抽象层)从网络接口或离线pcap文件中读取原始帧。
(2)解码:解析以太网、IP、TCP/UDP/ICMP等协议头部,确定上层协议类型。
(3)预处理:对流量进行重组与标准化,关键模块包括:
(4)frag3:重组IP分片,防范分片逃逸攻击。
(5)stream5/stream_tcp:维护TCP会话状态,重组应用层数据流。
(6)http_inspect:解析并规范化HTTP协议,处理URL编码、Unicode混淆等。
(7)port_scan:识别端口扫描行为。
(8)检测引擎:将预处理后的数据与规则库中的特征进行匹配,命中则触发相应动作。
(9)输出:将警报或日志发送至指定目标(文件、数据库、系统日志等),支持alert_fast(简洁格式)、unified2(二进制格式)等插件。

2.实践过程

2.1 防火墙配置

(1)首先使用命令iptables -L查看本机的防火墙规则
d02a5e46-2fe7-4992-add4-0b168ee16556
(2)使用命令iptables -A INPUT -p icmp -j DROP来丢弃所有进入本机的 ICMP请求
7adb7dd6-e9dc-47ee-8abb-6fd60d4a2b2f
(3)在另一台主机中使用ping命令尝试对kali进行icmp访问
6a546225-fe29-415f-94da-f5009606a0c1
可以看到,此时另一台主机无法ping通kali,此时使用iptables -L查看防火墙规则
7adb7dd6-e9dc-47ee-8abb-6fd60d4a2b2f
使用命令iptables -D INPUT -p icmp -j DROP将刚刚添加的规则删掉,之后再使用另一台主机ping
d5827cc8-3667-4d3d-9817-249de5ca0313
d179aed7-103d-424f-a626-38f1bf039b88
可以看到,icmp包被放行,成功ping通

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

(1)首先在kali使用telnet命令访问seed linux
af97d16c-46d3-4ea7-aab5-d12a3d4edb7c
(2)可以看到成功访问,使用同网段的WinXPattacker用telnet访问seed linux
d647a98b-84ba-4b3a-92da-fbd636bf8045
(3)也能够成功访问
首先使用命令iptables -P INPUT DROP拦截所有请求
9edbc266-6936-4666-9f10-1308a2f97bae
此时其他主机无法访问seed linux
085422ef-d3b8-4843-9e38-853a3d553b0a
952c57a1-3f65-4e2a-a85b-2dee20513850
(4)在seed linux中使用命令iptables -A INPUT -p tcp -s 192.168.200.5 -j ACCEPT来允许kali访问
7d78d399-d7d5-44ec-8749-419321605e9b
386d1dce-8d78-4e10-9371-265733e97e46
可以看到,在kali中访问seed linux的telnet服务正常

2.3 动手实践Snort

(1)在之前保存listen.pcap文件的目录打开终端
在终端中运行以下命令来分析 listen.pcap 文件:
sudo su
ls
snort -r listen.pcap -c /etc/snort/snort.lua -A alert_fast -l /var/log/snort
ab617fd5-56a7-47fb-8be6-7eea64bd0fff
SYN 包数量与总会话数几乎相等(67,657),SYN-ACK 响应仅有 83 个,RST 包高达 67,549 个,与 SYN 数量相近。

2.4 分析配置规则

(1)登录蜜网网关,输入以下命令,提升权限到root
su -
272fc410-e98e-4ef2-93af-7e1ce28fd97f
(2)使用以下命令查看防火墙配置
more /etc/init.d/rc.firewall # 回车可以继续往下查看
88701307-7365-42be-98b6-0c683ce29db5
可以看到,下面的图片表明:

启用了黑名单功能,黑名单配置文件${HwFWBLACK}存在且黑白名单总开关${HwBWLIST_ENABLE}已开启。系统自动创建BlackList链,用于阻断已知恶意 IP 的流量。外部攻击者如果 IP 在黑名单中,所有进出流量将被直接拒绝,无需后续规则匹配。

启用了白名单功能,白名单配置文件${HwFWWHITE}存在且黑白名单总开关${HwBWLIST_ENABLE}已开启。系统自动创建WhiteList链,白名单中的 IP 将优先放行,不受后续出站速率限制、端口过滤、隔离规则等所有约束。

启用了蜜罐出站隔离功能,隔离列表配置文件${HwFWFENCE}存在且隔离列表开关${HwFENCELIST_ENABLE}已开启。系统自动创建FenceList链,隔离列表中包含的 IP 是蜜罐绝对不允许主动连接的目标,即使攻击者完全控制了蜜罐也无法访问这些地址。

fafd73cc-4256-4827-84e5-b46bccaa21e6

df1ae0c4-67b1-440b-989a-afe76c61f561

b4133e9e-63bf-484c-b0be-b38ed4c633f8
输入ctrl+c退出
2.IDS/IPS规则与配置
(1)输入命令vim /etc/hflow/snort.conf
3e460a10-1a53-42de-91ed-ba45f0783a57
1776070887199
f40f538d-b640-45f6-a9f2-2f603fc33757
include 行指定了 Snort 在检测时加载的规则文件。
(2)输入命令iptables -t filter -L | less
b533ee48-39df-4235-a774-23e6adafff12

b2c57871-b3a8-4c30-994b-171ae7a90444
输入q以退出
(3)输入以下命令打开snort脚本文件
5ee8d2f6-fb4c-4612-9814-a63e6ff3d558

30e9fb40-5e5d-4912-bbd2-3f92c4e61cd7
1776071685313

(4)输入命令more /etc/init.d/hw-snort_inline

2d6584e3-3907-408a-bab1-1e661cc22637

-c 表示配置文件;

-D 表示Daemon模式;

-l 表示log文件的目录;

-Q 表示仅与Snort-Inline配合使用,用于队列处理;

-t 表示启动后将进程根目录切换到指定目录,实现沙箱隔离

3.蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求

(1)使用以下命令检查iptables和snort下的脚本是否开启。
chkconfig --list | grep iptables
chkconfig --list | grep snort

8bac6659-2fd3-4ca0-9375-c91ea7bb6607

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

  • 问题1:在虚拟机seed linux中没有开启telnet服务导致kali和同网段的WinXPattacker用telnet访问seed linux。
  • 问题1解决方案:在虚拟机seed linux中输入命令sudo /etc/init.d/openbsd-inetd restart开启telnet服务。
  • 问题2:在kali虚拟机内找不到listen.pcap文件,无法通过将listen.pcap文件拖入终端来找到该文件。
  • 问题2解决方案:登录kali虚拟机内的学习通,在学习通上面下载该文件。

4.学习感悟、思考等

通过本次网络防御实践,我对防火墙、入侵检测与蜜网网关的协同机制有了更具体的认识。在iptables配置中,通过阻断ICMP和基于源IP限制访问,我理解了包过滤的“匹配-动作”逻辑与规则顺序的关键性——一旦匹配即停止后续检查,策略排列必须谨慎。同时也认识到,单纯包过滤难以应对复杂攻击,需与其他机制配合。在Snort分析中,从listen.pcap观察到大量SYN包与少量SYN-ACK响应、RST异常,清晰指向SYN端口扫描。这使我体会到IDS不仅能检测已知攻击,还能通过协议异常揭示潜在威胁,而特征库覆盖与漏报误报的平衡是部署中的持续挑战。蜜网网关展示了“防火墙粗粒度控制+IDS/IPS细粒度阻断”的分层防御:iptables的黑白名单与隔离链实现第一层过滤,Snort_inline以IPS模式实时阻断,两者协同兼顾性能与精度。实验中的环境配置问题也提醒我细节决定成败。本次实践加深了我对网络防御技术的理解,后续需强化规则优化与日志分析能力。

posted on 2026-04-13 17:41  jh163  阅读(2)  评论(0)    收藏  举报