# 20251901 2024-2025-2 《网络攻防实践》实验五

目录

实践五 网络安全防范技术

实验要求:
一、防火墙配置(IP地址仅供参考,以实际为准)
任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问
二、动手实践Snort
使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在学习通中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
Snort运行命令提示如下:
①从离线的pcap文件读取网络日志数据源
②在snort.conf中配置明文输出报警日志文件
③指定报警日志log目录(或缺省log目录=/var/log/snort)
三、分析配置规则
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。

一、实验任务

  1. 防火墙配置:
    本实验以kali虚拟机作为防火墙配置主机,seed和winXP作为测试主机,完成以下两个核心任务:
    (1)过滤ICMP数据包,使kali主机不接收任何Ping包;
    (2)仅允许特定IP地址(seed:192.168.188.11)访问kali主机的HTTP服务(80端口),禁止其他IP地址(winXP:192.168.188.3)访问该服务。
  2. Snort入侵检测实践:
    在攻击机上,使用Snort工具对学习通下载的、第4章解码网络扫描相关的pcap离线文件进行入侵检测,配置Snort输出明文报警日志,指定日志存储目录,获取报警日志并分析检测出的攻击行为。
  3. 蜜网网关配置规则分析:
    登录蜜网网关(honeywall),查看其防火墙配置规则和Snort(IDS/IPS)配置脚本,分析蜜网网关如何通过防火墙和入侵检测技术,实现攻击数据捕获和访问控制的核心需求。

二、实验材料或资源

  • Kali虚拟机
  • listen.pcap(老师提供)
  • SEED虚拟机
  • winXP虚拟机

三、知识点梳理

  • 1. 防火墙相关原理
    防火墙是网络安全的基础防护设备,用于隔离内部网络和外部网络,根据预设规则对进出网络的数据包进行过滤、允许或拒绝。本次实验使用的iptables是Linux系统内置的防火墙工具,基于内核态的netfilter框架工作,核心概念包括:
    (1)链(Chains):iptables默认包含INPUT(入站数据包)、OUTPUT(出站数据包)、FORWARD(转发数据包)三条核心链,数据包会按顺序经过链中的规则进行匹配;
    (2)规则(Rules):每条规则由匹配条件(如协议、端口、IP地址)和目标动作(如ACCEPT允许、DROP丢弃、REJECT拒绝)组成,规则按配置顺序执行,匹配到第一条符合条件的规则后,不再执行后续规则;
    (3)ICMP协议:Internet控制消息协议,用于在网络设备间传递控制信息(如Ping命令使用的echo request和echo reply报文),过滤ICMP数据包即可禁止主机接收Ping请求;
    (4)端口与服务:HTTP服务默认使用80端口,TCP协议用于可靠的数据传输,通过限制特定IP对80端口的访问,可实现针对性的服务访问控制。

  • 2. Snort入侵检测相关原理
    Snort是一款开源的网络入侵检测系统(IDS),可实时监控网络流量,也可对离线pcap文件进行分析,核心功能包括:
    (1)数据包捕获:通过网卡捕获网络中的数据包,支持离线读取pcap文件(存储的网络数据包)进行分析;
    (2)规则匹配:根据snort.conf(或snort.lua)配置文件中的规则,对数据包进行匹配,识别异常行为(如端口扫描、攻击报文);
    (3)报警日志:将检测到的异常行为记录到报警日志中,支持多种日志输出格式(如alert_full完整报警),便于后续分析攻击行为;
    (4)核心命令参数:-c指定配置文件,-r指定离线pcap文件,-l指定日志存储目录,-A指定报警输出格式。

  • 3. 蜜网网关相关原理
    蜜网是一种用于捕获和分析网络攻击的安全技术,蜜网网关(honeywall)是蜜网的核心组件,相当于蜜网的“入口”和“控制中心”,其核心原理的:
    (1)数据捕获:通过防火墙规则将所有进出蜜网的数据包引流至IDS/IPS(如Snort),捕获攻击过程中的所有数据(包括攻击报文、命令交互等);
    (2)访问控制:通过防火墙规则限制蜜网内部主机的访问范围,防止攻击扩散到真实网络,同时允许攻击行为在蜜网内部发生,以便完整捕获攻击数据;
    (3)IDS/IPS联动:Snort作为入侵检测/防御工具,实时监控蜜网中的网络流量,检测到攻击行为时记录日志,同时可联动防火墙执行阻断操作,实现“检测-记录-控制”的闭环。

四、实验思路

  1. 防火墙配置任务设计思路
    任务核心是“实现数据包过滤和访问控制”,可按照“先测试默认状态→配置规则→验证规则有效性”的步骤开展,具体思路为:
    (1)先明确实验环境:确认三台虚拟机的IP地址,明确kali是防火墙配置主机,seed和winXP是测试主机;
    (2)任务1(过滤ICMP数据包):首先测试默认状态(未配置规则时,seed和winXP能否Ping通kali),确认默认允许ICMP数据包;然后配置“丢弃所有入站ICMP数据包”的规则,再重新测试,验证规则是否生效(无法Ping通);这样操作的原因是“先明确默认情况,再通过配置规则改变状态,对比测试能直观判断规则是否生效”;
    (3)任务2(特定IP访问控制):首先启用kali的HTTP服务(80端口),测试默认状态(seed和winXP能否访问该服务);然后配置两条规则:先允许特定IP(seed)访问80端口,再拒绝所有其他IP访问80端口;最后分别用seed和winXP测试,验证规则有效性;这样操作的原因是“iptables规则按顺序执行,必须先允许特定IP,再拒绝所有,否则会先执行拒绝规则,导致特定IP也无法访问”;
    (4)工具选择:使用iptables而非Windows个人防火墙,因为Linux的iptables功能更强大、命令行操作更直观,适合学习防火墙的核心配置逻辑,且符合网络攻防实验的常用场景。
  2. Snort入侵检测任务设计思路
    任务核心是“用Snort分析离线pcap文件,获取攻击报警日志”,可按照“确认工具安装→配置日志输出→执行检测命令→查看分析日志”的步骤开展,具体思路:
    先确认Snort是否安装成功:从学习通下载第4章解码网络扫描相关的pcap文件,确认文件路径,pcap文件是离线的网络数据包,包含可能的攻击行为(如端口扫描);然后配置Snort:指定配置文件,确保配置文件中启用了明文报警日志输出;指定日志存储目录,便于后续查找日志文件;然后执行检测命令:结合核心参数,编写完整命令,读取pcap文件进行分析,同时输出报警日志;执行完成后,查看日志文件和统计信息,解读攻击行为;这样操作的原因是“Snort需要通过配置文件确定检测规则,通过参数指定数据源和输出方式,才能准确捕获攻击并记录日志”。
  3. 蜜网网关规则分析任务设计思路
    任务核心是“理解蜜网网关如何利用防火墙和IDS/IPS实现攻击捕获和控制”,可按照“查看防火墙规则→查看Snort配置→分析规则作用”的步骤开展,具体思路:
    (1)登录蜜网网关(honeywall),通过命令(vim /etc/init.d/rc.firewall)查看防火墙配置脚本,重点关注“链的创建”“规则的配置”,理解防火墙如何限制访问、引流数据包;然后通过命令(iptables -L|more)查看具体的防火墙规则,分析规则的匹配条件和动作,判断其如何实现“允许攻击进入蜜网、禁止攻击扩散”;
    (2)查看Snort相关配置脚本,分析Snort在蜜网中的启动过程、配置参数,理解其如何与防火墙联动,捕获攻击数据;
    (3)核心逻辑:蜜网网关的防火墙负责“控制访问范围”,Snort负责“捕获攻击数据”,两者联动,既让攻击行为在蜜网内部发生,又能完整记录攻击过程,同时防止攻击影响真实网络,这也是蜜网网关的核心价值。

五、实验详细过程

5.1防火墙配置

(1)实验准备:确认虚拟机IP及默认状态

  • 查询实验所用虚拟机的IP地址,确认三台虚拟机正常运行、网络互通,本次实验IP如下:
    seed:192.168.188.11
    winXP:192.168.188.3
    kali:192.168.188.10
    image
    image
    image
  • 在kali主机中,输入命令查看当前iptables规则,确认默认规则状态:
    iptables -L
    image
    命令解释:iptables是Linux防火墙配置工具,-L参数表示“list(列出)”当前所有的防火墙规则,执行后可查看INPUT、OUTPUT、FORWARD三条链的默认规则,默认情况下,kali未配置额外规则,允许所有数据包进出;
  • 测试默认状态下的ICMP连通性:分别在seed和winXP主机中,Ping kali的IP(192.168.188.10)
    image
    image
    测试结果:seed和winXP均能成功Ping通kali,说明默认情况下,kali允许接收ICMP数据包(Ping包)。

(2)任务1:过滤ICMP数据包,禁止接收Ping包

  • 在kali主机中,输入命令添加iptables规则,丢弃所有入站ICMP数据包:
    iptables -A INPUT -p icmp -j DROP
    image
    命令解释:
    -A:表示“Append(追加)”一条规则到指定链中,这里追加到INPUT链(入站数据包链);
    -p icmp:指定匹配的协议为ICMP(即Ping包使用的协议);
    -j DROP:指定匹配到该规则后的目标动作,DROP表示“丢弃”数据包,不向发送方返回任何响应(区别于REJECT,REJECT会返回拒绝响应);
  • 为什么这样操作:因为我们需要禁止主机接收Ping包,而Ping包基于ICMP协议,所以只需在入站链中添加“丢弃所有ICMP数据包”的规则,即可实现目的;
  • 验证规则有效性:再次在seed主机中Ping kali的IP(192.168.188.10),测试结果:无法Ping通(提示“请求超时”),说明ICMP数据包已被过滤,规则生效;
    image
    -补充说明:若想恢复允许Ping包,可输入命令iptables -D INPUT -p icmp -j DROP,-D参数表示“删除”指定规则。或者使用iptables -F删除自定义规则。
    image

(3)特定IP访问控制(仅允许seed访问HTTP服务)

  • 在kali主机中,启用HTTP服务(80端口),命令如下:
    python3 -m http.server 80
    image
    image
    命令解释:
    python3 -m http.server:利用Python3内置的HTTP服务模块,快速启动一个简易的HTTP服务器;
    80:指定HTTP服务的端口为80(HTTP服务默认端口,若不指定端口,默认使用8000端口);
  • 为什么使用这个命令:无需安装额外的HTTP服务软件(如Apache、Nginx),Python内置服务可快速启用,适合实验测试;
  • 测试默认状态下的HTTP服务访问:分别在seed和winXP的浏览器中,输入kali的IP(192.168.188.10),测试结果:均能成功访问HTTP服务页面;
  • 在kali主机中,添加iptables规则,仅允许seed(192.168.188.11)访问80端口,禁止其他IP访问,命令如下:
    iptables -A INPUT -p tcp --dport 80 -s 192.168.188.11 -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 -j DROP
    image
    命令解释(第一条规则):
    -p tcp:指定匹配的协议为TCP(HTTP服务基于TCP协议传输数据);
    --dport 80:指定匹配的目标端口为80(即HTTP服务的端口);
    -s 192.168.188.11:指定匹配的源IP地址为seed的IP,即只有从该IP发送的数据包才会匹配这条规则;
    -j ACCEPT:目标动作为“允许”,即允许该IP访问80端口;
    命令解释(第二条规则):
    未指定-s(源IP),表示匹配所有源IP发送的、目标端口为80的TCP数据包;
    -j DROP:目标动作为“丢弃”,即拒绝所有其他IP访问80端口;
  • 为什么这样操作:iptables规则按配置顺序执行,必须先添加“允许特定IP”的规则,再添加“拒绝所有”的规则;若顺序颠倒,会先执行“拒绝所有”规则,导致seed也无法访问80端口;
  • 验证规则有效性:
    -用seed的浏览器访问kali的IP(192.168.188.10),测试结果:能成功访问HTTP服务;
    image
  • 用winXP的浏览器访问kali的IP(192.168.188.10),测试结果:无法访问;
    image
    说明规则生效,仅允许特定IP(seed)访问HTTP服务。

实验小结
防火墙配置实验,成功实现了ICMP数据包过滤和特定IP访问控制两个核心功能。通过“测试默认状态→配置规则→验证规则”的步骤,清晰验证了iptables规则的作用;核心要点是理解iptables的规则顺序(先允许后拒绝)、匹配条件(协议、端口、IP)和目标动作(ACCEPT、DROP)。

5.2动手实践Snort

(1)实验准备:确认Snort安装及pcap文件

  • 确认Snort工具已安装,在kali攻击机中,输入命令测试:
    snort -v
    image
    命令解释:-v参数表示“verbose(详细模式)”,执行后若能输出Snort的版本信息、监听提示(如“Snort ready”),说明Snort安装成功;若提示“command not found”,则需先安装Snort;
  • 找到上个实验中保存在kali中的listen.pcap文件,并找到其路径:
    image
    image

(2)执行Snort入侵检测命令

  • 在攻击机中,输入完整的Snort命令,对pcap文件进行离线入侵检测,命令如下:
    snort -c /etc/snort/snort.lua -r /home/kali/listen.pcap -l /etc/snort/log -A alert_full
    image
    命令解释:
    -c /etc/snort/snort.lua:-c参数指定Snort的配置文件路径,Snort会根据配置文件中的规则进行攻击检测;
    -r /home/kali/listen.pcap:-r参数指定离线数据源,即读取该路径下的pcap文件进行分析(而非实时监听网络流量);
    -l /etc/snort/log:-l参数指定报警日志的存储目录,所有检测到的攻击报警都会保存到该目录下;
    -A alert_full:-A参数指定报警输出格式,alert_full表示“完整报警格式”,会将攻击的详细信息(如源IP、目标IP、协议、攻击类型)记录到日志中;

  • 为什么使用这个命令:该命令整合了“指定配置文件、数据源、日志目录、报警格式”四个核心需求,能一次性完成离线检测并生成完整的报警日志;

  • 执行命令后,等待Snort分析完成,终端会输出分析统计信息(如捕获的数据包数量、检测到的报警数量);
    image
    image
    image
    image
    image

  • 查看报警日志:进入日志存储目录,找到报警日志文件(如alert),输入命令查看日志内容:
    cat /etc/snort/log/alert

  • 日志解读:日志中会记录每一条检测到的攻击行为,包括源IP地址、目标IP地址、攻击使用的协议和端口、攻击类型(如端口扫描、TCP SYN扫描)等信息,例如:“[1:12345:6] TCP Port Scan [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.188.3:12345 -> 192.168.188.10:80”,表示源IP(192.168.188.3)对目标IP(192.168.188.10)的80端口进行了TCP端口扫描。

实验小结
Snort实验成功完成了离线pcap文件的入侵检测,获取了完整的报警日志并解读了攻击行为。核心要点是掌握Snort的核心命令参数,理解“配置文件→数据源→日志输出”的逻辑;Snort的核心价值是通过规则匹配识别异常攻击行为,离线检测模式(-r参数)适合实验测试,无需实时监听网络流量,可反复分析pcap文件。实验中,确认pcap文件路径和配置文件路径正确是关键,若路径错误会导致Snort无法正常读取文件或加载规则。

5.3分析配置规则

(1)实验准备:登录蜜网网关

  • 登录honeywall,并提升至root权限:su -。若不提权则后续操作被拒:
    image

(2)查看蜜网网关防火墙配置规则

  • 输入命令,查看防火墙配置脚本,了解防火墙链的创建和规则配置:
    vim /etc/init.d/rc.firewall
    image
    image
    image
    image
    image
    image
    image
    image
    命令解释:vim是Linux系统中的文本编辑器,用于打开指定路径下的文件;/etc/init.d/rc.firewall是蜜网网关的防火墙启动脚本,包含了防火墙链的创建、规则的初始化等内容;
    内容分析:打开文件后,可看到:“create chains()”(创建链)等内容,蜜网网关会创建自定义链,用于分类管理不同的数据包(如攻击数据包、正常数据包),便于后续的过滤和引流,(1)create_chains() 函数创建了三大核心规则链,分别是 BlackList(黑名单,禁止特定 IP 通信)、WhiteList(白名单,放行可信 IP 流量)、FenceList(防护名单,限制蜜罐对外访问的高危 IP);同时创建了 tcpHandler、udpHandler、icmpHandler 等协议专属处理链,实现对不同协议流量的精细化管控。;(2)load_modules() 函数:加载 iptable_filter、iptable_nat、ipt_LOG 等内核模块,为防火墙提供包过滤、地址转换、日志记录等核心功能支持。(3)default_policy() 函数:设置防火墙默认策略,将 FORWARD、INPUT、OUTPUT 三条链的默认策略均设置为 DROP,遵循最小权限原则,仅放行明确配置的流量。(4)management_policy() 函数:定义蜜网网关的管理口访问规则,仅允许指定管理网段通过 SSH、HTTPS 协议访问网关管理界面,限制非法管理访问,保障网关自身安全。(5)localhost_policy() 函数:放行本地环回接口lo的流量,保障网关本地服务的正常运行。
  • 输入命令,查看具体的防火墙规则,分析规则作用:
    iptables -L|more
    image
    命令解释:iptables -L列出所有防火墙规则,|more表示“分页显示”,便于查看大量规则;
    规则分析:通过查看规则,可发现蜜网网关的防火墙规则具有以下特点:① 允许外部网络(攻击机)访问蜜网内部主机,便于捕获攻击行为;② 禁止蜜网内部主机访问外部真实网络,防止攻击扩散;③ 将所有进出蜜网的数据包引流至Snort(IDS/IPS),确保攻击数据被完整捕获。
  • 按“q”退出。

(3)查看蜜网网关Snort配置规则

  • 输入命令,查看Snort的启动脚本,了解Snort在蜜网中的配置:
    vim /etc/init.d/snortd
    image
    内容分析:该脚本包含了Snort的启动参数、配置文件路径、日志存储路径等信息,可看到Snort被配置为“实时监听蜜网的网络流量”,并将报警日志保存到指定目录,便于后续分析;
  • 输入命令,查看蜜网启动的过程
    vim /etc/init.d/hw-snort_inline
    image
    内容分析:该脚本描述了蜜网网关启动时,Snort的启动过程,以及Snort与防火墙的联动逻辑——当Snort检测到攻击行为时,会通知防火墙执行阻断操作,同时记录攻击日志,实现检测-阻断-记录的闭环。

实验小结:
本实验成功分析了蜜网网关的防火墙和Snort配置规则,理解了蜜网网关的核心工作机制。蜜网网关通过防火墙实现“访问控制”(允许攻击进入、禁止攻击扩散),通过Snort实现“攻击检测与数据捕获”,两者联动,完成攻击数据的完整捕获和控制。核心要点是理解防火墙规则的“引流”作用(将数据包交给Snort分析)和Snort与防火墙的“联动”机制,这也是蜜网能够有效捕获攻击、保护真实网络的关键。

六、实验过程中遇到的问题及解决

- 1.执行Snort入侵检测命令时,查看不了日志文件

  • 报错:
    image
    文件夹中并没有log文件:
    image
    image
    并且检查snort的配置也都是正确的
    image
  • 问题解决:
    更换文件夹,然后打开文件管理器就可以看到了:
    image

- 2.使用seed登录kali的时候总是连接不上

  • 报错:
    image
  • 问题解决:在输入IP地址的时候写成https,实际应当是http。修改之后即可成功登录:
    image

- 3.使用vim命令查看内容时不小心按了“i”,变成insert模式

  • 解决:输入:q!强制退出且不保存任何修改。

七、学习收获及感想

  • 本次网络攻防实践实验,围绕防火墙配置、Snort入侵检测、蜜网网关规则分析三个核心任务展开。通过本次实验,我对以下内容进行了实践:成功配置了Linux系统的iptables防火墙,实现了ICMP数据包过滤(禁止Ping)和特定IP访问控制(仅允许seed访问HTTP服务);使用Snort工具对离线pcap文件进行了入侵检测,获取了完整的报警日志并解读了攻击行为;分析了蜜网网关的防火墙和Snort配置规则,理解了蜜网网关的攻击捕获和控制机制。我掌握了iptables的基本命令和规则配置逻辑(链、规则、匹配条件、目标动作);掌握了Snort的核心参数和离线检测方法,能解读报警日志;理解了防火墙、IDS/IPS、蜜网网关的核心作用及联动关系,明确了网络安全防护的“分层防御”思路。
  • 通过本次网络攻防实践实验,我不仅提升了网络安全的实操能力,更深刻理解了网络安全防护的重要性和核心逻辑。首先,理论与实操相结合是掌握网络攻防技术的关键。实验前,我学习了防火墙、Snort、蜜网网关的相关原理,但在实际操作中,仍遇到了很多问题(如iptables规则顺序错误、Snort路径配置错误),通过反复尝试、查阅资料、调整操作步骤,最终解决了问题。这让我明白,网络安全技术不是“纸上谈兵”,只有亲手操作,才能真正理解每个命令、每条规则的作用,才能将理论知识转化为实操能力。
  • 我还深刻认识到网络安全防护的分层防御思路。防火墙是基础防护,用于过滤数据包、控制访问;Snort是入侵检测手段,用于识别攻击行为、记录攻击日志;蜜网网关是综合应用,将两者结合,实现攻击数据的捕获和控制。三者相辅相成,缺一不可,只有构建多层次的安全防护体系,才能有效抵御网络攻击。
  • 在今后的学习中,我会加强网络攻击原理、Linux系统、网络安全工具的学习,多进行实操练习,不断提升自己的网络攻防能力,为今后从事网络安全相关工作打下坚实的基础。
posted @ 2026-04-19 22:13  jgfx  阅读(12)  评论(0)    收藏  举报