20241909 2024-2025-2 《网络攻防实践》实践五报告
20241909 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.知识点梳理与总结
| 知识点 | 概念 | 功能 |
|---|---|---|
| 防火墙 | 防火墙(Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。 | 1网络安全的屏障: 只有经过精心选择的应用协议才能通过防火墙 2强化网络安全策略: 通过以防火墙为中心的安全方案配置,能将所有安全软件(如口令、加密、身份认证、审计等)配置在防火墙上。 3监控审计 如果所有的访问都经过防火墙,那么,防火墙就能记录下这些访问并作出日志记录,同时也能提供网络使用情况的统计数据。 |
| iptables | iptables是一个linux下的防火墙工具,它能帮助我们基于规则进行网络流量控制。 | 1允许/拒绝某种协议的连接建立,比如TCP,UDP 2允许/拒绝来自某个ip的访问 3允许/拒绝某个端口被访问 |
| Snort | Snort是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配,可以检测各种不同的攻击方式,对攻击进行实时报警等。 | 1嗅探模式(从网络上读取数据包,常用命令snort -dev) 2数据包记录模式(把数据包记录到硬盘上,常用命令snort -b) 3网络入侵检测模式Snort并不记录所有捕获的包,通过包与规则对比,仅当包与某个规则匹配的时候,才会记录日志或产生报警 |
| . |
2.实验内容
2.1实验要求及目的
(1)配置Linux操作系统平台上的iptables
- iptables规则列表的显示;
- 过滤ICMP数据包;
- 特定IP地址访问主机;
- 静态包过滤与报文状态检测;
- SNAT与DNAT机制的实现。
(2)使用Snort进行入侵检测分析
- 对给定pcap文件进行入侵检测,并对检测出的攻击进行说明;
- 对给定的pcap文件进行入侵检测,获得报警日志。
(3)分析配置规则
- 分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则;
- 说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求。
2.2 实验过程
2.2.1 配置iptables
2.2.1.1 过滤ICMP数据包
实验环境
| 攻击机kali | 192.168.200.3 |
|---|---|
| 靶机seed | 192.168.200.6 |
首先在查看当前防火墙配置信息在kali中先输入sudo iptables -L查看规则列表
可以看出,此时未添加任何规则
然后使用ubuntu去ping一下kali,出现如下图说明可以ping通

接下来添加规则,输入sudo iptables -A INPUT -p icmp -j DROP( -A 在指定链的末尾添加(append)一条新的规则,#DROP 直接丢弃数据包,不给任何回应信息。),再使用sudo iptables -L查看规则表

可以看到规则添加成功,此时再用ubuntu去ping下kali,kali过滤了ICMP数据包,使主机不接受Ping包:发现已经ping不通了

此时再删除该规则,输入sudo iptables -D INPUT -p icmp -j DROP后再使用sudo iptables -L查看规则表

换到seed中发现已经可以ping通了。
2.2.1.2 只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问、
实验环境
| 攻击机kali | 192.168.200.3 |
|---|---|
| 靶机Metasploitable | 192.168.200.123 |
| WinXP | 192.168.200.5 |
先查看kali中的规则,发现并无规则

利用kali以及WinXP对 Metasploitable进行telnet连接:


随后在Meta Linux中键入指令:sudo iptables -P INPUT DROP
发现所有主机无法访问该主机tcp端口:


随后在Meta Linux中键入:sudo iptables -A INPUT -p tcp -s 192.168.200.3 -j ACCEPT。使Meta Linux能够接受kali虚拟机对其的tcp端口访问:

此时WinXP依旧不能访问

2.2.1.3静态包过滤
要求对路由转发数据包进行检查,当数据包源IP地址属于 192.168.0.0/24 C类网段,且目的地址属于192.168.1.0/24 C类网段,执行目标操作ACCEPT。
kali终端里键入:iptabels -t filter -A FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -j ACCEPT,后如下图规则表里多了一条限制。

2.2.1.4报文状态检查
报文状态检查:对于每个通过/进入/发出的网络连接进行跟踪,使用Hash表结构实现网络连接状态跟踪表CT,并维护当前连接状态。
(1).允许连接目标地址为192.168.200.7,当前状态为NEW的网络连接可通过防火墙转发。键入命令 sudo iptables -t filter -A FORWARD -d 192.168.200.7 -m state --state NEW -j ACCEPT

(2)再次查看规则 允许已经建立网络连接和相关网络连接通过防火墙。

2.2.1.5 SNAT机制实现
要求通过路由转发的网络连接的源IP地址都修改为1.2.3.4:

2.2.1.5 DNAT机制实现
要求将通过路由转发的网络连接的目的地址都修改为1.2.3.4:

2.2.2 动手实践Snort
对已有的listen.cap进行入侵检测,可以看到检测到的数据包信息,有UDP、TCP、ARP等,其中主要是TCP。命令为 sudo snort -r /etc/snort/listen.pcap -c /etc/snort/snort.lua -A alert_fast -l /var/log/snort (其中-c 表示选择snort配置文件、-r表示从pcap格式文件中读取数据包、-A设置输出模式为alert_fast生成简洁的报警日志,-l指定报警日志的输出目录)




进入报警日志目录,查看日志文件cd /var/log/snort,vim alert,可以看到入侵检测信息,本次攻击是使用nmap发起的。攻击主机的IP地址是172.31.4.178,网络扫描的目标IP地址是172.31.4.188。

2.2.3分析配置规则
2.2.3.1 分析防火墙
查看蜜网网关的防火墙文件内容
在蜜罐中,首先输入指令su提权,再输入vim /etc/init.d/rc.firewall,后看到如下图片

输入i后进入编辑模式即可查看下面的内容

create_chains函数,定义了下述程序中使用的规则:
BlackList:存储源地址和目的地址黑名单
WhiteList:源地址和目的地址的白名单
FenceList:源地址和目的地址的防护名单
xxxHandler:供下述policy使用的各种协议对应的Handler链

接下来通过default_policy、localhost_policy和management_policy创建了三种情况下的代理转发模式。
default_policy: 默认全部丢弃的规则默认全部丢弃的规则。
loaclhost_policy:允许本地主机转发的规则。
management_policy:允许管理接口的规则。

2.2.3.2 iptables
查看规则列表,输入指令iptables -t filter -L | less可以看到默认的规则入INPUT、FORWARD、OUTPUT都已经被关闭了。


2.2.3.3获取Snort实际执行参数\
在终端输入指令,vim /etc/rc.d/init.d/snortd,以查看Snort实际执行参数,可以看到默认使用默认目录下的snort.conf规则,默认监听网卡为eth0,配置文件的位置在/etc/snort/snort.conf。

2.2.3.4获取Snort_inline实际执行参数
打开snort_inline的脚本文件,查看实际执行参数,输入指令vim /etc/init.d/hw-snort_inline,如下图所示,其中-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置。

2.2.3.5蜜网网关利用防火墙和入侵检测技术完成攻击数据捕获和控制需求
查看服务开启状态
输入指令 su- 后键入chkconfig --list | grep iptables 查看防火墙服务开启状态

输入chkconfig --list | grep snort 如下图所示,0~6分别表示关机、单用户模式、无网络连接的多用户命令行模式、有网络连接的多用户命令行模式、不可用、带图形界面的多用户模式、重新启动。
可以看出iptables和hw-snort_inline在无网络连接的多用户命令行模式下开始启动,而snortd不会自启动。
查看更新方式
在honeywall终端输入vim /etc/honeywall.conf以查看snort的规则是否自动更新

可以看到其默认为不更新。
3.知识点梳理与总结
问题一:telnet seed时无法连接到主机,上网查询后由于远程服务的22端口没有开启。但是开启后,一直处于trying状态。

解决方式:改用WinXP当靶机
问题二: 在2.2.3.2时命令iptables -t filter -L | less命令失效
解决方法:先输入su - -
问题三:在查看日志文件文件时,发现并没有生成该文件只能在终端中查看
解决方法:经孔佳音同学的教学讲snort.lua改为如下格式即可

4.学习感悟与思考
本次实验中我深入了解了防火墙、Snort入侵检测系统以及iptables等工具的配置与使用。通过实践,我不仅掌握了如何配置Linux防火墙来过滤网络流量、限制特定IP的访问,还学会了如何利用Snort进行入侵检测与日志分析,再次动手实践应用snort,一些技巧更熟练了。对虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则也有了初步的了解和认识。。
5.参考资料
《网络攻防技术与实践》
https://blog.csdn.net/Gushiyuta/article/details/95051553
浙公网安备 33010602011771号