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

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

一、实验要求

本实验围绕网络安全防范技术展开,旨在通过实践操作掌握防火墙配置、入侵检测系统应用以及蜜网环境下的协同防御分析。根据实验任务,具体要求如下:

1.1 防火墙配置实践

在 Linux (iptables) 或 Windows 平台下实现以下功能并进行测试:

  • 过滤 ICMP 数据包:配置防火墙规则,使得主机不接收 Ping 包,实现对探测行为的屏蔽。
  • 特定服务访问控制:设置白名单机制,仅允许特定 IP 地址(如 192.168.200.3)访问本机的特定网络服务(如 FTP、HTTP、SMB),并拒绝其他 IP 地址(如 192.168.200.4)的访问请求。

1.2 入侵检测实践 (Snort)

利用 Snort 软件对指定的网络扫描 pcap 流量包进行检测与分析:

  • 配置 Snort 环境,实现从离线 pcap 文件中读取数据源。
  • 配置报警日志输出路径及规则,获得检测结果。
  • 对检测出的攻击行为(如扫描探测)进行说明。

1.3 蜜网网关分析

分析虚拟网络攻防环境中的蜜网网关配置规则,结合防火墙与 IDS/IPS 技术,阐述系统如何完成攻击数据的捕获与控制需求。


二、相关知识介绍

2.1 防火墙技术与 iptables 原理

2.1.1 防火墙基本概念

防火墙是建立在内外网络边界上的安全保护屏障。它通过预定义的访问控制规则,对跨越防火墙的数据包进行检查、过滤和监控。其核心功能是“逻辑隔离”,即在保证网络正常互通的前提下,最大限度地降低潜在的安全风险。

2.1.2 iptables 工作机制

在 Linux 系统中,iptables 是配置内核 Netfilter 框架的工具,其核心架构由“表”和“链”组成:

  • Filter 表:主要负责过滤功能,也是本实验最常用的表。
  • INPUT 链:处理流入本机的数据包。
  • OUTPUT 链:处理从本机发出的数据包。
  • 规则匹配原则:数据包按照规则链从上到下逐条匹配,一旦匹配成功(Match),则执行对应的动作(Target):
    • ACCEPT:允许通过。
    • DROP:丢弃数据包,不给源端任何回复(隐蔽性强)。
    • REJECT:拒绝通过,并向源端发送错误报文。

2.1.3 ICMP 协议与 Ping 防御

ICMP(Internet Control Message Protocol)用于在 IP 网络中传递控制及错误信息。Ping 命令基于 ICMP 的 Echo Request(类型 8)和 Echo Reply(类型 0)报文。通过在 INPUT 链中禁用 icmp 协议,可以有效防止外部主机的活跃性探测。

2.2 入侵检测系统(Snort)原理

2.2.1 IDS 的定义

入侵检测系统(Intrusion Detection System, IDS)被誉为防火墙后的“监控摄像头”。它不直接阻断流量,而是通过收集和分析网络流量中的特征信息,识别是否存在违反安全策略的行为或遭受攻击的迹象。

2.2.2 Snort 的架构与功能

Snort 是一款开源的轻量级网络入侵检测系统,其工作流程主要包括:

  1. 数据包解码器:将捕获的原始流量转换为可供处理的数据格式。
  2. 预处理器:对流量进行重组(如 TCP 流重组)、协议解析,检测异常报文。
  3. 检测引擎:核心部件,利用特征匹配(Signature-based Detection)算法,将流量特征与规则库进行对比。
  4. 报警与输出:当匹配成功时,根据配置生成报警条目并记录到日志中。

2.2.3 离线分析模式

Snort 支持读取标准的 .pcap 流量捕获文件。在离线模式下,管理员可以使用如下命令进行分析:

snort -r attack.pcap -c /etc/snort/snort.conf -l /var/log/snort

2.3 蜜网(Honeynet)防御技术

2.3.1 蜜网网关的核心作用

蜜网网关是蜜网环境中的控制枢纽,位于攻击者与诱饵主机(Honeypot)之间,集成了防火墙和 IDS 功能:

  • 数据捕获(Data Capture):利用 Snort 等工具处于旁路监听状态,在不被攻击者察觉的情况下,记录其所有攻击载荷及渗透步骤。
  • 数据控制(Data Control):利用 iptables 等工具,严格限制诱饵主机向外发起的连接,防止蜜罐被作为“跳板”去攻击互联网,保证实验环境安全性。

2.3.2 协同工作原理

防火墙负责“边界控制”,IDS 负责“内容感知”。在蜜网网关中,两者的协同形成了动态防御体系:IDS 发现攻击后生成报警,管理员可根据报警动态调整防火墙规则,从而实现对恶意流量的精准拦截与分析。


三、实验过程

3.1 防火墙配置实践

3.1.1 过滤 ICMP 数据包

  • 首先查看KALI的IP 为 192.168.200.6
查看kali IP
  • 使用XP虚拟机Ping KALI,可见这个时候是可以ping通的。
ping kali 通
  • 禁用Ping命令,输入启动命令
iptables -A INPUT -p icmp -j DROP
启动命令
  • 在kali使用命令查询规则列表。
查询1
  • 这个时候使用XP ping KALI ping不通,可见起效。
ping不通
  • 删除刚才的操作并查询,可见过滤包已经关闭
删除操作
  • 我们再次ping kali,可以ping通了。
再次Ping通

3.1.2 特定服务访问控制

(建议大家不要用其他虚拟机telnet kali,要调一大堆设置。。。。)

  • 分别用xp虚拟机、seed linux 连接kali。
2-1XP--KALI
2-2SEED---KALI
  • 输入命令iptables -P INPUT DROP禁止连接
2-3
  • 此时两台虚拟机都失去对kali的连接。
2-4
  • 只允许xp虚拟机连接,输入iptables -A INPUT -p tcp -s 192.168.200.5 -j ACCEPT
2-6
  • 此时xp虚拟机连接成功。
2-7
  • 而seed虚拟机失败。
2-8

3.2 Snort 入侵检测

  • 之前下载过文件,找一下路径
1
  • 读取本地流量包文件,检测其中的 Nmap 端口扫描行为,并生成攻击告警日志。输入:
snort -A alert_fast -c /etc/snort/snort.lua -R <(echo 'alert tcp any any -> any any (msg:"Nmap Scan Detected"; flags:S; sid:1000001; rev:1;)') -r /etc/snort/listen.pcap -l /var/log/snort
1
  • 具体内容如下
┌──(root㉿kali)-[/home/kali]
└─# snort -A alert_fast -c /etc/snort/snort.lua -R <(echo 'alert tcp any any -> any any (msg:"Nmap Scan Detected"; flags:S; sid:1000001; rev:1;)') -r /etc/snort/listen.pcap -l /var/log/snort
--------------------------------------------------
o")~   Snort++ 3.12.1.0
--------------------------------------------------
Loading /etc/snort/snort.lua:
Loading snort_defaults.lua:
Finished snort_defaults.lua:ipsfile_inspectclassificationssmtpport_scandce_http_proxydce_tcps7commplusmodbusmmsiec104dnp3ciptelnetsslsshsockssiprpc_decodenormalizerimapstream_filealert_faststreamstream_icmpstream_tcpstream_udpstream_useroutputarp_spoofback_orificednsnetflowpopactivealertsdaqdecodehost_trackerhostsnetworkpacketsprocesssearch_engineopcuadce_smbdce_udpdce_http_servergtp_inspectstream_ipftp_serverftp_clientftp_datahttp_inspecthttp2_inspectfile_policyjs_normappidwizardbinderhost_cachereferences
Finished /etc/snort/snort.lua:
Loading file_inspect.rules_file:
Loading file_magic.rules:
Finished file_magic.rules:
Finished file_inspect.rules_file:
Loading rule args:
Loading /proc/self/fd/11:
Finished /proc/self/fd/11:
Finished rule args:
--------------------------------------------------
ips policies rule statsid  loaded  shared enabled    file1     220       0     220    /etc/snort/snort.lua
--------------------------------------------------
rule countstotal rules loaded: 220text rules: 220option chains: 220chain headers: 2
--------------------------------------------------
port rule countstcp     udp    icmp      ipany       1       0       0       0total       1       0       0       0
--------------------------------------------------
service rule counts          to-srv  to-clifile_id:      219     219total:      219     219
--------------------------------------------------
fast pattern groupsto_server: 1to_client: 1
--------------------------------------------------
search engine (ac_bnfa)instances: 2patterns: 438pattern chars: 2602num states: 1832num match states: 392memory scale: KBtotal memory: 71.2812pattern memory: 19.6484match list memory: 28.4375transition memory: 22.9453
appid: MaxRss diff: 2872
appid: patterns loaded: 300
--------------------------------------------------
pcap DAQ configured to read-file.
Commencing packet processing
Retry queue interval is: 200 ms
++ [0] /etc/snort/listen.pcap
-- [0] /etc/snort/listen.pcap
--------------------------------------------------
Packet Statistics
--------------------------------------------------
daqpcaps: 1received: 135580analyzed: 135580allow: 135580rx_bytes: 8139156
--------------------------------------------------
codectotal: 135580       (100.000%)discards: 45           (  0.033%)arp: 20           (  0.015%)eth: 135580       (100.000%)ipv4: 135560       ( 99.985%)tcp: 135512       ( 99.950%)udp: 3            (  0.002%)
--------------------------------------------------
Module Statistics
--------------------------------------------------
ac_fullsearches: 28matches: 42bytes: 398
--------------------------------------------------
appidpackets: 135515processed_packets: 135505ignored_packets: 10total_sessions: 67660service_cache_adds: 7bytes_in_use: 1176items_in_use: 7
--------------------------------------------------
arp_spoofpackets: 20
--------------------------------------------------
back_orificepackets: 3
--------------------------------------------------
binderraw_packets: 75new_flows: 67660service_changes: 7inspects: 67735
--------------------------------------------------
detectionanalyzed: 135580hard_evals: 135531alerts: 67655total_alerts: 67655logged: 67655
--------------------------------------------------
dnspackets: 3requests: 3dns_over_udp: 3
--------------------------------------------------
http_inspectflows: 6scans: 12reassembles: 12inspections: 12requests: 6get_requests: 5options_requests: 1max_concurrent_sessions: 3total_bytes: 88
--------------------------------------------------
ips_actionsalert: 67655
--------------------------------------------------
port_scanpackets: 135515trackers: 6
--------------------------------------------------
search_enginenon_qualified_events: 67876qualified_events: 67655
--------------------------------------------------
streamflows: 67660total_prunes: 67659
idle_prunes_proto_timeout: 120closed_prunes: 67539tcp_timeout_prunes: 117udp_timeout_prunes: 3no_flow_tcp_rst: 3no_flow_unwanted: 7
--------------------------------------------------
stream_tcpsessions: 67657max: 67657created: 67657released: 67657instantiated: 67657setups: 67657restarts: 7syn_trackers: 67657segs_queued: 19segs_released: 19segs_used: 19rebuilt_packets: 25rebuilt_bytes: 263client_cleanups: 1server_cleanups: 12syns: 67657syn_acks: 83rsts: 67549rsts_ok_rfc5961: 46rsts_ack_ok: 67503fins: 72max_segs: 1max_bytes: 23
--------------------------------------------------
stream_udpsessions: 3max: 3created: 3released: 3total_bytes: 129
--------------------------------------------------
telnettotal_packets: 1max_concurrent_sessions: 1
--------------------------------------------------
wizardtcp_scans: 19tcp_hits: 7
--------------------------------------------------
Appid Statistics
--------------------------------------------------
detected apps and servicesApplication: Services   Clients    Users      Payloads   Misc       Referred  unknown: 7          3          0          0          0          0         
--------------------------------------------------
Summary Statistics
--------------------------------------------------
timingruntime: 00:00:01seconds: 1.071898pkts/sec: 126486Mbits/sec: 61
o")~   Snort exiting
  • 查看日志,输入:
# 查看自定义规则的告警
cat /var/log/snort/alert_fast.txt | grep "Nmap Scan Detected"
2

攻击行为检测结果分析

攻击核心特征
维度 具体信息
攻击源 IP:172.31.4.178,源端口:57738(随机高端口,符合扫描器端口特征)
攻击目标 IP:172.31.4.188(被扫描主机)
攻击时间 集中在 08/08-05:51:11 时间段内(短时间批量探测,无时间分散特征)
攻击协议 TCP
攻击类型 Nmap 批量 TCP 端口扫描(SYN 扫描为主)
扫描端口特征

攻击者对目标主机 172.31.4.188 进行了全量端口探测,覆盖超百个端口,核心高危端口如下:

端口号 对应服务 风险等级 风险说明
22 SSH 高危 远程登录入口,易被密码爆破 / 漏洞利用
23 Telnet 高危 明文传输,无加密保护,易被劫持
80/443 HTTP/HTTPS 中高危 Web 服务,易存在 SQL 注入、RCE 等漏洞
135/139/445 SMB/Windows 共享 高危 永恒之蓝等漏洞核心利用端口
3389 RDP 高危 Windows 远程桌面,爆破后可直接控制主机
3306 MySQL 高危 数据库端口,易导致数据泄露 / 篡改
5900 VNC 高危 远程桌面,弱密码易被入侵
攻击行为本质

本次检测到的是典型的 Nmap TCP SYN 扫描(半开扫描),属于网络攻击的「信息收集阶段」:

  • 攻击者通过发送 TCP SYN 包(连接请求)探测目标端口状态,即使未完成完整 TCP 三次握手,也能判断端口是否开放;
  • 短时间内探测超百个端口,覆盖系统核心服务、数据库、远程桌面、Web 服务等,目的是摸清目标主机的服务暴露情况,为后续漏洞利用 / 密码爆破做准备;
  • 双向流量特征(源→目的、目的→源均有告警)说明目标主机对部分扫描包做出了回应,进一步验证了端口探测行为的有效性。

3.3 蜜网网关配置规则分析

  • 查看防火墙文件,输入命令:vim /etc/init.d/rc.firewall
1
2
3
4

- 该脚本是蜜网iptables 规则自动生成工具,开机自动加载安全策略。
- 初始设置默认全部拒绝(DROP),遵循最小权限原则。
- 卸载 ipchains、加载 ipt_LOG、ipt_QUEUE 模块:为日志记录与 IDS 联动提供内核支持。
- 自定义三条处理链,实现按协议精细化流量管控,是蜜网「数据控制」的核心。

  • 查看filter表,输入 iptables -t filter -L
5

Snort 规则目录 + Snort 启动脚本 + 服务自启状态

  • 查看Snort规则目录,输入:ls -l /etc/snort/rules/
6
  • 打开Snort脚本文件,输入:vim /etc/init.d/snortd
7
  • 查询服务是否开启,输入:
chkconfig --list | grep iptables
chkconfig --list | grep snort
8

- 规则目录:包含scan.rules/shellcode.rules/web-attacks.rules/sql.rules等数十类攻击检测规则;
- 启动脚本:Snort IDS 守护进程的启动逻辑、告警模式配置、开机自启配置;
- 自启状态:iptables/snortd/hw-snort-inline在 2-5 运行级别均为自启状态。

  • 查看honeywall配置文件,输入:vim /etc/honeywall.conf
9
10
11

- 该文件是蜜网网关全局配置核心文件,所有安全策略、管理权限、网络行为均由此定义。
- HwMANAGER=192.168.200.0/25:设定管理白名单,仅该网段可管理网关,防止攻击者控制蜜网网关。
- HwSSHD_REMOTE_ROOT_LOGIN=no:禁止 root 远程 SSH,强化网关自身安全,防止暴力破解。
- 配置 NTP 时间服务器:保证日志、告警时间统一,为攻击溯源、取证提供准确时间戳。

攻击数据捕获与控制

系统通过iptables 防火墙与Snort IDS/IPS协同工作,实现攻击数据的控制与捕获:

  1. 防火墙负责攻击数据控制:蜜网网关以透明网桥部署,iptables 设置默认拒绝策略,仅放行必要流量;通过 LOG 记录全流量,QUEUE 对接入侵检测;配置管理白名单并限制蜜罐出站连接,防止攻击扩散,实现流量可控、可管、不泄露网关存在。
  2. IDS/IPS 负责攻击数据捕获:Snort 从防火墙队列获取流量,利用规则库检测扫描、Web 攻击、溢出等行为,生成攻击告警并保存完整流量包;同时以 IPS 模式对恶意流量实时阻断,完成攻击识别、记录、取证。
  3. 协同实现完整需求:防火墙做边界管控与流量转发,IDS/IPS 做深度检测与告警阻断,二者结合既控制攻击范围与流量行为,又完整捕获攻击全过程数据,满足攻防实验的安全管控与取证需求。

三、遇到的问题以及解决方案

问题1:Kali Linux 的 Telnet 服务连接不通,其他虚拟机(如 XP、Seed Linux)无法正常建立 Telnet 连接

解决方案: 安装 Telnet 服务依赖,调整配置文件,添加一些规则,然后启用服务

sudo systemctl restart openbsd-inetd
sudo systemctl enable openbsd-inetd

问题2:调整配置文件之后,依然无效。

解决方案: 没有保存好,应该先回车再ctrl+o,才能保存成功。

问题3:运行 Snort 读取 pcap 文件后,输出报告显示处理了成千上万个包,但 alert_fast.txt 日志文件为空,没有触发 Nmap 扫描告警。

解决方案: Snort 有时因权限问题无法写入 /var/log/snort/ 目录。尝试使用 sudo 运行命令,确保日志目录存在。


四、实验收获以及心得体会

想起一句话“纸上得来终觉浅,绝知此事要躬行”。以前上课听防火墙、IDS、蜜网这些词,总觉得就是些高大上的理论概念,这次自己上手搭环境、敲命令,才发现里面全是细节,但也确实学到了真本事。此次实验中,iptables 防火墙过滤,到 Snort 入侵检测系统的特征匹配,再到 Honeynet网关的全局联动,我感觉收获颇丰。

我花费时间最多的环节,是遇到问题的时候,但是收获最多的环节,是解决问题的过程。比如配置 iptables 过滤的时候,原本以为就是敲两行命令的事。结果实际操作起来,不仅要考虑规则的先后顺序(默认拒绝和允许放行的逻辑千万不能搞反),还差点因为改完配置文件没保存好(忘了先回车再 ctrl+o)导致前功尽弃。但当看到那个特定 IP 真的被成功拦截,或者 Ping 包被完美丢弃的时候,心里还是挺有成就感的。这种白名单机制让我真真切切地感受到了网络边界的安全控制是怎么运作的。

这次实验里最折磨人的绝对是各种连不通和没反应。特别是 Kali 的 Telnet 服务,用别的虚拟机怎么连都连不上,查了半天才明白,现代系统为了安全,默认根本就不装这种明文传输的服务。还有运行 Snort时,明明扫了成千上万个包,日志里却空空如也,最后发现是权限不够写不进 /var/log 目录。排错的过程虽然让人头秃,但也逼着我从服务依赖、配置文件一路查到系统权限。这种踩坑的经验,比看十遍书都管用~

总的来说,这次攻防实验虽然踩了不少坑,但也帮我把脑子里那些零散的安全概念彻底串了起来。希望将来可以从事相关工作,成为一名之前自己仰慕的那种大佬~~~

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

相关文章:

  • 英雄联盟本地化自动化工具:5分钟快速上手LeagueAkari终极指南
  • 实用指南:如何用bilibili-parse轻松解析B站视频并下载
  • Containerd容器管理实战:从静态创建到动态运行的全流程指南
  • 如何高效使用MATLAB小提琴图:专业数据可视化进阶指南
  • 2026口碑最佳护眼电视横评:5款优质品牌实力单品精准评测 - 十大品牌榜
  • 靠谱的医用门企业 - 小张小张111
  • HiveWE:重新定义魔兽争霸III地图编辑体验的高性能编辑器
  • 从零开始掌握OBD-II:汽车诊断开发的核心技术与实战解析
  • ThinkPad风扇控制终极指南:如何用TPFanCtrl2打造静音高效的散热系统
  • Java 25 字符串模板与文本块增强:更优雅的字符串处理
  • 暗黑破坏神2存档编辑器终极指南:5步打造完美游戏角色
  • 5分钟部署Python大麦网自动抢票脚本:告别手动抢票烦恼
  • 2026口碑最佳K歌电视品牌横评:五款实力单品精准解析推荐 - 十大品牌榜
  • 思源宋体TTF:7款免费中文宋体字体的终极使用指南
  • Innovus许可证服务器搭建全记录:从hostid获取到1patch破解的完整流程
  • 瑞祥商联卡回收避坑指南:3 个标准教你选对靠谱渠道 - 团团收购物卡回收
  • Vue 3快速Diff算法源码级深度剖析
  • 深入SAM2训练框架:Hydra配置、混合数据集加载器(TorchTrainMixedDataset)与分布式训练保姆级解读
  • 2026口碑最佳壁画电视横评:五款实力品牌精准解析 - 十大品牌榜
  • Fan Control:彻底解决Windows电脑风扇噪音与散热难题的终极方案
  • 互联网 Java 工程师 1000 道面试题: 分布式 +JVM+ 高并发 +NIO+ 框架
  • 第一个JDBC程序+对象解释
  • 终极指南:如何用Ryzen SDT调试工具挖掘AMD处理器的隐藏潜力
  • 从光学特性到算法实现:深度解析Shading校正技术
  • 路径规划算法实战:从理论到代码实现
  • 2026最新不锈钢水箱新标杆:解析消防水箱、304不锈钢水箱厂家、保温水箱、方形不锈钢水箱的技术融合之道 - 深度智识库
  • FPGA引脚冲突解析:如何高效解决Pin_101多引脚分配问题
  • 图片变清晰 API 实战:AI 超分辨率实现图片高清修复(Python / JavaScript / PHP / JS)
  • 2026|POS机办理哪家靠谱?实地测评:河南联众金服科技有限公司(公众号) - 速递信息
  • StreamCap:如何用一款免费开源工具搞定40+平台直播自动录制