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

一、实践内容

1.1 防火墙的概念、作用与分类

(1)防火墙的概念

防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使(互联网)与(内联网)之间建立起一个安全网关,从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。

(2)防火墙的作用

防火墙可以监控进出网络的通信量,从而完成看似不可能的任务,仅让安全、核准了的信息进入,同时又抵制对企业构成威胁的数据。
防火墙的作用是防止不希望的、未授权的通信进出被保护的网络,迫使单位强化自己的网络安全政策。防火墙一般都有以下功能:

  • 防火墙能强化安全策略。防止入侵者接近你的防御设施
  • 防火墙能有效地记录互联网上的活动,为监视互联网安全提供方便。
  • 防火墙限制暴露用户地点。防火墙能够用来隔开网络中一个网段与另一个网段。这样,能够防止影响一个网段的问题通过整个网络传播。
  • 可以限制他人进入内部网络,过滤掉不安全服务和非法用户,防火墙是一个安全策略的检查站。所有进出的信息都必须通过防火墙,防火墙便成为安全问题的检查点,使可疑的访问被拒绝于门外。

(3)防火墙的分类方法

  • 软、硬件形式分类:软件防火墙、硬件防火墙、芯片级防火墙。
  • 防火墙技术分类:包过滤型防火墙、应用代理型防火墙 。
  • 防火墙结构分类:单一主机防火墙、路由器集成式防火墙、分布式防火墙。
  • 防火墙的应用部署位置分类:边界防火墙、个人防火墙、混合防火墙。
  • 防火墙性能分类:百兆级防火墙、千兆级防火墙。
  • 防火墙使用方法分类:网络层防火墙、物理层防火墙、链路层防火墙。

1.2 linux 平台的防火墙:netfilter/iptables

工作原理:在nefilter/iptables防火墙系统中,netfilter 组件位于Linux的内核空间中,实现了静态包过滤和状态报文检查(即动态包过滤)基本防火墙功能,此外也支持一个灵活可扩展的框架,支持NAT 网络地址转换等其他额外功能,并提供了多层API接口以支持第三方扩展,nefilter具备构建防火墙、NAT共享上网、利用NAT构建透明代理,以及构建QoS或策略路由器等安全功能。Iptables 则是工作在Linux用户空间中的防火墙配置工具,通过命令行方式允许用户为netfilter配置各种防火墙过滤和管理规则。nefilter/iptables 中包含三个最基本的规则表,分别为用于包过滤处理的filter表、用于网络地址转换处理的NAT表,以及用于特殊目的数据包修改的mangle表。

1.3 Snort

(1)Snort基本介绍

Snort被设计成一个跨平台、轻量级的网络入侵检测系统,用C语言编写,并采用了标准的捕获数据包函数库libpcap,具有非常好的可移植性。目前Snort可以在包括x86、SPARC、PowerPC、Alpha等指令集平台架构上的Linux、Windows、MAC OS,以及各种UNIX操作系统上运行。

Snort具有强大的功能:数据包嗅探、数据包记录和分析,以及各种入侵检测功能。Snort在设计时采用了注重高性能、简单和灵活的原则,并采用一套源码级插件机制,作为系统扩展的手段。Snort 软件的基本架构主要由四个基本部分组成:

  • 数据包嗅探/解码器(sniffer);
  • 预处理器/插件(preprocessor);
  • 检测引擎/插件(detection engine);
  • 输出模块/插件(output modules).

(2)Snort的实现机理

Snort中四个主要部件以及处理过程描述如下:

  • 数据包嗅探/解码器。首先,利用libpcap从网卡或离线记录中捕获数据包,然后数据包经过解码器填入到链路层协议的包结构体中,以便对高层次的协议进行解码,如TCP/UDP层。
  • 预处理器/插件。接着数据包被送到各种各样的预处理插件中,在检测引擎之前对数据包进行检查和操作。每个预处理插件检查数据包是否应该注意、报警或者修改某些东西。
  • 检测引擎/插件。随后,包被送至检测引擎,检测引擎首先通过各种规则文件中定义的匹配字符电特征来对每个包的信息进行快速的模式匹配检测,然后由各种检测插件对包提供额外的检测功能。规则中每个关键字选项对应于检测引擎插件,能够提供不同的检测功能。
  • 输出模块/插件。对之前各个部件产生的报警/日志信息,根据用户配置,调用相应的输出插件进行发送和记录。

二、实践过程

2.1 防火墙配置

任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问

2.1.1 Linux操作系统

(1)过滤ICMP数据包,使得主机不接收ping包

  • 首先在攻击机Ubuntu上,首先使用命令iptables -V,如果显示出版本号表示已经安装,如果没有,运行apt-get install iptables
    3bebe43b5651ad463457729caa6a2ae6
  • 然后使用命令sudo iptables -L查看当前防火墙配置信息。
    084d88d866d7713c9270912d7a00df2b
  • 接着使用命令sudo iptables -A INPUT -p icmp -j DROP添加规则,然后使用sudo iptables -L查看当前防火墙配置信息,添加成功。其中-A是追加新规则于指定链的尾部,INPUT表示数据包入口(规则),-p用于匹配协议,-j用于指定如何处理(ACTION)。
    e573a607e803004adb7151365b235238
  • 在Kali上,使用命令ping虚拟机Ubuntu,发现不通。
    e70ada166482a478a5a486805c84e4f6
  • 在攻击机Ubuntu上,使用命令sudo iptables -F删除自定义规则。
    23ef498dcd7cb6070181cc57b8842019
  • Kali上再次使用命令ping虚拟机Ubuntu,发现ping通了。
    b944df0c18516a3e7219af80f8b25c2c
    (2)只允许特定IP地址,访问主机的某一网络服务,其他的ip无法访问
    设置前,用Kali和Windows Sever访问主机Metasploitable2的ftp服务,都可成功。
    49d9273a21c52359a12467d0b260a8bc
    首先查看我们要允许的特定IP:192.168.200.123
    image
    接下来测试连通性,确认kali可以成功连接到Metasploitable_ubuntu
    e0e38aa2d4f55cd6beb6545cb56d3414
    接着,在Metasploitable_ubuntu下使用命令sudo iptables -P INPUT DROP,拒绝一切数据包的流入,再进行测试。不可以进行连接。
    58423ba6fe4c4ef6ae0ef20f3bf976d8

9aee27f23ca6b9103b41d6e7bef587e9
再在Metasploitable_ubuntu下,使用sudo iptables -A INPUT -p tcp -s 192.168.200.2 --dport 23 -j 添加一条入栈规则,只接受来自kali访问23端口的TCP包。
990fbc8716aa4ebb1534557c9d8279c2
添加后进行测试:连接成功,但winx依旧不成功。实现只允许特定IP地址进行访问的设置。若想要winx可以进行访问则使用上面一条命令,将ip 修改为winx的地址即可。
9d0defcf2749a27bdee394d1bbef3ae7

2.1.2 Windows操作系统

(1)过滤ICMP数据包,使得主机不接收Ping包。

设置之前,Kali可以ping通WinXPattacker
ec094c5f883b4fca807d332c2ceb845f
打开防火墙,设置ICMP:开始→控制面板→windows防火墙→高级→ICMP的设置,把允许传入回显请求对号去掉,Kali就ping不通了。
f69060379df78058900b47ed0af15fc7
01599909ea879d9123c714fb60e037e0
(2)只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问

为使得Kali可以正常telnet主机WinXP,在主机WinXP上进行以下操作:点击开始–运行打开cmd,输入services.msc,跳出服务界面,找到Telnet,发现目前状态是已禁止,我们需要右键–属性,修改启动类型为自动或者手动(也可以直接在控制面板上操作)。然后在cmd输入net start telnet,也显示已启动,表明启动成功。
534846a35628e81f321ea42d51be3589
7fe87263c1486b8080942043aa46c8d9
开始–控制面板–Windows防火墙–高级–网络连接设置–勾选Telnet服务器。
6e410dabc1c3870b0b2375742b020ef2
在Kali上连接WinXP,成功。
dfd962d3303261fc29e1e1fb684ea4f8
接下来创建安全策略:控制面板–管理工具–本地安全策略–IP安全策略–右键–创建IP安全策略,进入设置向导,设置IP安全策略名称为“限制固定IP远程访问”,在警告提示框选择“是”,其他均保持默认点击下一步。
c1aea5da3478e7c9e499bacc8fe2f119
添加阻止特定IP访问的筛选器。点击添加–进入安全规则向导–一直保持默认设置点击下一步–遇到警告点击“是”。然后点击添加–自定义IP筛选器名称为“阻止特定IP远程访问”–添加–进入安全规则向导。
3880353a056be1c37b2a00a7b914da76
894501833a6b26be39bb741b7bac82b3
然后在点确定后–选择配置的“阻止所有IP远程访问”,点击下一步。
83790e8c6731e81f8efd2679a06e9a1b
点击添加–选择阻止–确定,得到下图“新筛选操作”,代表的是阻止。
10ef15370893e58bac4f4502dbe26e04
然后选中“新筛器选操作”,点击下一步–完成,如图所示,至此我们添加好了阻止特定IP访问的筛选器。
10c25a348d927684659519adf4ceedb8
点击添加–自定义IP筛选器名称为“允许特定IP远程访问”–添加–进入筛选器向导。点击下一步–源地址选择“一个特定的IP地址(攻击机Ubuntu:192.168.200.2)”–下一步–目标地址选择“我的IP地址”–选择协议类型“TCP”–下一步–设置IP协议端口“从任意端口”“到此端口(输入23)”–下一步–完成。完成后,会在IP筛选列表看到添加的信息,如下图,再点击确定
0fa8719ed7fe1f445808d62d1cab88d4
配置IP筛选器允许的动作:在点确定后–选择配置的“允许所有IP远程访问”,点击下一步。点击添加–选择许可–确定,得到下图“新筛选操作(1)”,代表的是允许。然后选中“新筛选操作(1)”,点击下一步–完成,如图所示,至此我们添加好了允许特定IP访问的筛选器
26750152daee2f583e21ad6f2794ddda
最后指派此安全规则:右键“限制固定IP远程访问”——选择“指派”,至此所有工作配置完成,如图。
77c041ff0ef2715e4099e197dc1b3944
最后在Kali和攻击机Ubuntu上进行验证。发现Kali不可以连接主机WinXP,Ubuntu可以连接WinXP
27c7daa5b2e61b765b629c9e798f6cbb
59066a5193144655d6731d02a04fc5e6

2.2 动手实践:Snort

(1)执行命令snort -c /etc/snort/snort.conf -r /home/kali-qq/listen.pcap -K ascii
从离线的pcap文件读取网络日志数据源。

  • -c:表示选择snort配置文件
  • -r:表示从pcap格式的文件中读取数据包
  • -K:ascii是用来指定输出日志文件的为ASCII编码
    ea8661ef09fd48793e74f1176f3c8190

2.3 分析配置规则

2.3.1 分析防火墙和IDS/IPS配置规则

查看防火墙的文件,先使用:su - 再使用 vim /etc/init.d/rc.firewall。可以看到create_chains创建了黑名单和白名单的规则链,还创建了很多协议数据包的处理规则链。
image
image

还有默认规则、本地规则、管理规则
image

防火墙开启后根据先前规则链及定义的规则函数过滤数据包
image
snort主要通过对整个网络数据包进行预警提示,多侧重于数据捕获,当然查询防火墙和snort_inline日志也可以获得一定的数据捕获信息。

iptables中有用 modprobe ipt_LOG,iptables -N FenceLogDrop等存储数据捕获的日志,snort_inlin可以用snort -c [snort.conf绝对路径} -l [log路径] -K ascii来实现输出log文件。

iptables防火墙主要负责对数据。
accept,reject,drop等规则的制定和执行,多用于数据控制。

分析相关脚本的关键代码,防火墙文件rc.firewall中create_chains()用于创建链,该函数分别创建了黑名单和白名单,防护名单以及防护日志删除,-N的意思表示根据用户指定的名字创建新链,其中黑名单就是阻止某些网络地址和用户进入主机,白名单就是用户设置的认为可以添加信任的网络用户以及网络地址,防护名单是IPS的文件列表,防护日志删除是一个表,用于记录/删除从围栏反弹的数据包。

2.3.2 分析IlPTables

(1)通过iptables -t filter -L | less来查看规则列表,可以看到默认的规则入INPUT、FORWARD、OUTPUT都已经被关闭了。

e4a94d8343620793611b6404502c3d61

2.3.3 获取Snort实际执行参数

(1)输入命令打开Snort脚本文件vim /etc/init.d/snortd

如图可知,它是默认使用默认目录下的snort规则,监听网卡为eth0,默认储存路径为/var/log/snort。

image

(2)Snort_inline实际执行参数。执行命令vim /etc/init.d/hw-snort_inline,打开snort_inline的脚本文件查看实际执行参数。

各参数定义为:

-c表示读取config文件
-D表示Daemon模式
-Q表示使用QUEUE模式
-l表示输出log文件的目录
-t表示改变程序执行时所参考的根目录位置

image

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

(1)使用vim /etc/honeywall.conf打开honeywall配置文件,来看snort的rule是否自动更新,默认为不更新

image

(2)使用vim /etc/oinkmaster.conf打开该文件,发现了snort.conf文件,可以推断这里使用工具Oinkmaster进行了snort的自动升级
image

三、学习中遇到的问题及解决

问题:将listen.pcap放在桌面上,输入路径/home/listen.pcap显示找不到路径
解决方案:单纯认为在桌面就是在home下面了,重新将其放在/home/kali/之下

四、学习感想和体会

本次实践主要学习了防火墙运行机制、原理、配置规则以及对snort分析的进一步掌握,通过动手实践防火墙配置以及分析蜜网网关的防火墙对于其原理和实现细节有了初步的了解。

posted @ 2026-04-14 18:47  20252815邹宇豪  阅读(10)  评论(0)    收藏  举报