20242935 2024-2025-2 《网络攻防实践》第五周作业

20242935 2024-2025-2 《网络攻防实践》第五周作业

实践五 网络安全防范技术

一、实践要求

(一)防火墙配置
任务要求:配置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)ICMP包过滤

虚拟机 IP地址
Kali-Linux(攻击机) 192.168.200.6
Metasploitable-Linux(靶机) 192.168.200.5
  • 首先在Kali上安装iptables
sudo apt-get install iptables

image-20250327100318654-17430410004821

  • 使用命令查看当前防火墙配置信息
sudo iptables -L

image-20250327100545054-17430411466683

  • 靶机Metasploitable和攻击机Kali的互ping

image-20250327100827269-17430413088995

image-20250327100853080-17430413343727

  • 接着使用命令添加规则,过滤ICMP包

  • 其中-A是追加新规则于指定链的尾部,INPUT表示数据包入口(规则),-p用于匹配协议,-j用于指定如何处理

sudo iptables -A INPUT -p icmp -j DROP
  • 使用命令查看当前防火墙配置信息,可以看到添加成功,
sudo iptables -L

image-20250327101154525-17430415165619

  • 在Metasploitable机器中对kali进行ping,发现无法ping通了

image-20250327101248013-174304156942311

  • 在kali上,使用命令sudo iptables -F删除刚刚自定义的规则。

image-20250327101817108

  • 在Metasploitable机器中对kali进行ping,发现又可以ping通了

image-20250327101445683-174304168696815

(2)特定IP地址访问(只允许Kali访问SEED Ubuntu的telnet服务

虚拟机 IP地址
Kali-Linux(攻击机) 192.168.200.6
Metasploitable-Linux(靶机) 192.168.200.5
Ubuntu(靶机) 192.168.200.4
  • 首先确定两台机器都可以对靶机Ubuntu进行telnet访问
telnet 192.168.200.4

image-20250327103935020

image-20250327104005261

  • 在靶机Ubuntu中使用命令拒绝一切的数据包流入(修改的是默认规则-P)

  • 先使用命令提权到root

su
  • 再使用命令
iptables -P INPUT DROP

image-20250327104501482

  • 此时两台电脑都无法对靶机Ubuntu进行访问

image-20250327104922540

image-20250327104955299

  • 再在虚拟机Ubuntu中使用命令开启192.168.200.6(kali虚拟机的IP地址)对本机的tcp服务
iptables -A INPUT -p tcp -s 192.168.200.6 -j ACCEPT

image-20250327105207594

  • 并用命令查看规则
iptables -L

image-20250327105240521

  • 此时尝试分别使用两台主机访问SEED Ubuntu的telnet服务

image-20250327105308665

  • 发现只有Kali可以正常访问

image-20250327105349868

  • 在虚拟机Ubuntu中输入两条指令恢复之前的状态
iptables -F
iptables -P INPUT ACCEPT

image-20250327105609180

  • 再在虚拟机Metasploitable-Linux中对虚拟机Ubuntu发起telnet访问,发现可以访问成功了
telnet 192.168.200.4

image-20250327105750968

任务二:动手实践:Snort

  • 我下载好的listen.pcap文件放在kali的如下路径文件中
/home/kali/
snort -c /etc/snort/snort.lua -r /home/kali/listen.pcap -A alert_fast

image-20250328215304905

  • 可以看到检测出的数据包大部分为TCP数据包

image-20250328215322096

  • Snort 3 使用的是 Lua 格式配置文件 /etc/snort/snort.lua,默认可能没有启用报警规则

  • 打开配置文件:

image-20250328215635872

  • 找到 -- alert_fast = {} 那一行,把前面的 -- 注释去掉,改成:
alert_fast = { file = true, limit = 64 }

image-20250328215754393

  • 保存退出
Ctrl + O → 回车 → Ctrl + X
  • 然后运行 Snort(不需要再用 -A alert_fast 参数):
snort -c /etc/snort/snort.lua -r /home/kali/listen.pcap -l /var/log/snort/
  • 查看日志:
cat /var/log/snort/snort.alert.fast
  • 如果启动snort时还是报错:FATAL: openAlertFile() = fopen() alert file /var/log/snort/alert_fast.txt: No such file or directory

  • 这说明 Snort 尝试写日志时找不到路径或权限不足

  • 下面确保目录存在:

sudo mkdir -p /var/log/snort
  • 然后修改权限(给予当前用户或 Snort 写入权限):
sudo chmod 777 /var/log/snort

image-20250328220902491

  • 再次运行 Snort(不加 -A):
snort -c /etc/snort/snort.lua -r /home/kali/listen.pcap -l /var/log/snort/
  • 查看报警日志:
cat /var/log/snort/alert_fast.txt
  • 发现记录了报警数据10条的入侵检测信息,可以看到本次攻击主要是主机172.31.4.178对主机172.31.4.188的主机进行的nmap扫描

image-20250328220922308

任务三:分析配置规则

  • 在HoneyWall这台机子上登录后,先提权到root模式

  • 输入命令查看防火墙文件

  • 可以看到黑名单、白名单和防护名单三个链

  • /etc/init.d/rc.firewall 是一个防火墙初始化脚本,在系统启动时会被调用,用来设置好 iptables 防火墙策略

vim /etc/init.d/rc.firewall 

image-20250328223716928

  • 使用命令来查看iptables的规则
iptables -t filter -L | more

image-20250328223937132

  • 使用命令来查看服务开启情况

  • 0~6分别表示关机、单用户模式、无网络连接的多用户命令行模式、有网络连接的多用户命令行模式、不可用、带图形界面的多用户模式、重新启动

chkconfig --list | grep [服务]

image-20250328224038477

  • 查看snort规则文件可以看到配置网卡的信息
vim /etc/rc.d/init.d/snortd

image-20250328224500665

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

问题一在输入“snort -r /home/kali/Downloads/listen.pcap -c /etc/snort/snort.conf -K ascii”时出现

ERROR: unknown option -K ascii
FATAL: see prior 1 errors
Fatal Error, Quitting..

解决方法

  • 先查看snort版本
snort --version

image-20250327122107718

  • 使用的是 Snort 3.x,推荐使用 Snort 3 的命令格式
snort -c /etc/snort/snort.lua -r /home/kali/listen.pcap -A alert_fast

问题二:****查看日志文件vim snort.alert.fast时,并没有内容

解决方法

  • Snort 3 使用的是 Lua 格式配置文件 /etc/snort/snort.lua,默认可能没有启用报警规则

  • 打开配置文件:

sudo nano /etc/snort/snort.lua
  • 找到 -- alert_fast = {} 那一行,把前面的 -- 注释去掉,改成:
alert_fast = { file = true, limit = 64 }

image-20250328215754393

  • 保存退出
Ctrl + O → 回车 → Ctrl + X
  • 然后运行 Snort(不需要再用 -A alert_fast 参数):
snort -c /etc/snort/snort.lua -r /home/kali/listen.pcap -l /var/log/snort/
  • 查看日志:
cat /var/log/snort/snort.alert.fast
  • 如果启动snort时还是报错:FATAL: openAlertFile() = fopen() alert file /var/log/snort/alert_fast.txt: No such file or directory

  • 这说明 Snort 尝试写日志时找不到路径或权限不足

  • 下面确保目录存在:

sudo mkdir -p /var/log/snort
  • 然后修改权限(给予当前用户或 Snort 写入权限):
sudo chmod 777 /var/log/snort

image-20250328220902491

  • 再次运行 Snort(不加 -A):
snort -c /etc/snort/snort.lua -r /home/kali/listen.pcap -l /var/log/snort/
  • 查看报警日志:
cat /var/log/snort/alert_fast.txt

image-20250328220922308

四、学习感想和体会

在完成 ICMP 包过滤和指定 IP 访问控制的过程中,我学会了如何灵活使用 iptables 命令对数据流进行精细化控制。在使用 Snort 进行入侵检测时,尤其是 Snort 3.x 与旧版本的配置差异、Lua 脚本配置语法、日志输出格式等,都给我带来了不少挑战。特别是日志无法输出的问题,通过阅读文档和分析报错信息,最终定位到 alert_fast 没有启用、日志目录权限不足等问题,最终得以解决。

五、参考资料

Kali Linux下安装和配置Snort的过程-百度开发者中心

posted @ 2025-03-31 21:15  BeenThrough  阅读(44)  评论(0)    收藏  举报