目录
- 20232831 2023-2024-2 《网络攻防实践》第5次作业
- 1.实验内容
- (1)防火墙配置(具体IP配置参考自己的IP设置)
- (2)动手实践:Snort
- (3)分析配置规则
- 2.实验过程
- 3.学习中遇到的问题及解决
- 4.学习感悟、思考等
- 参考资料
20232831 2023-2024-2 《网络攻防实践》第5次作业
1.实验内容
(1)防火墙配置(具体IP配置参考自己的IP设置)
任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
①过滤ICMP数据包,使得主机不接收Ping包;
②只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问
(2)动手实践:Snort
使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在学习通中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
(3)分析配置规则
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
2.实验过程
(1)防火墙配置(具体IP配置参考自己的IP设置)
①过滤ICMP数据包,使得主机不接收Ping包
虚拟机名称 | IP地址 |
---|---|
Kali-Linux攻击机(Vmnet8网段) | 192.168.200.4 |
Metasploitable-Linux靶机 (Vmnet1网段) | 192.168.200.123 |
首先,打开Kali和Metasploitable-Linux,并使用以下代码在Kali虚拟机上进行iptables的安装
sudo apt-get install iptables
安装完毕后,使用以下命令进行打开iptables,可以先查看到已经存在的默认规则
sudo iptables -L
完成工具的安装后,先测试攻击机与靶机之间的连通性,发现二者是能够互ping的,这样才能进一步进行实验,即过滤Icmp,从而阻止二者互ping。
使用以下命令,使得Kali主机过滤掉所有的ICMP包,这样就无法建立ping连接,即无法互ping。
sudo iptables -A INPUT -p icmp -j DROP
再次互ping,可以发现icmp包全部不见,因为已经被过滤掉了,所以无法接受icmp,导致互ping失败
在Kali中打开wireshark可以发现,icmp包均被防火墙拦截,因此无法从kali攻击机发出
②只允许特定IP地址
虚拟机名称 | IP地址 |
---|---|
Kali-Linux攻击机(Vmnet8网段) | 192.168.200.4 |
Metasploitable-Linux靶机 (Vmnet1网段) | 192.168.200.123 |
WinXPattacker靶机 (Vmnet8网段) | 192.168.200.2 |
首先,为了进行该部分的测试,得在Kali上安装两个工具,分别是FTP(21号端口)和Telnet(23号端口)两个工具
使用以下命令进行FTP和Telnet的安装与端口的打开
sudo apt-get install xinetd telnetd #安装telnet
sudo apt-get install vsftpd #安装ftp
/etc/init.d/xinetd start #开启telnet
/etc/init.d/xinetd status
/etc/init.d/vsftpd start #开启ftp
/etc/init.d/vsftpd status
在Metasploitable-Linux和WinXPattacker上使用ftp进行Kali的连接,均可连接上
ftp 192.168.200.4
再分别使用以下命令进行telnet远程连接,结果发现二者均被拒绝,猜测是仅仅打开telnet服务是无法使用的
telnet 192.168.200.4
进过查询资料以及chatgpt得知,仅仅打开telnet服务是不够的,还需要检查Kali虚拟机的防火墙状态,只有关闭防火墙才能使用telnet服务:
sudo apt-get install ufw #安装ufw命令
sudo ufw status #查看防火墙状态
然而,防火墙是关着的,因此还得查找原因
查找得知,原因也许还可能是
/etc/inetd.conf文件没有telnet相关内容
因此,打开以下文件,查看是否存在telnet的配置信息,如果没有则需要手动配置(一定得用sudo,否则权限不够,无法 修改文件)
修改 /etc/inetd.conf
sudo vim /etc/inetd.conf
添加以下内容:
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
修改/etc/xinetd.conf
sudo vim /etc/xinetd.conf
将全文内容修改替换为以下内容:
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d
此外,还需要添加默认的telnet配置
修改/etc/xinetd.d/telnet
sudo vim /etc/xinetd.d/telnet
添加以下内容:
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
此后,重启telnet服务
/etc/init.d/xinetd restart
配置完成telnet后,重新进行telnet远程连接的测试
二者均成功连接:
因此,完成所有配置后,重新进行实验
输入以下代码,使得只有Metasploitable靶机才能进行访问Kali主机的21号端口,而WinXPattacker则不行,即首先,使用sudo iptables -P INPUT DROP扔掉所有与INPUT链中任何规则都不匹配的数据包,然后设置只接受来自IP地址为192.168.200.123的21号端口请求。
sudo iptables -P INPUT DROP
sudo iptables -A INPUT -p tcp -s 192.168.200.123 --dport 21 -j ACCEPT
此后,再在两台虚拟机上进行Kali主机的连接,首先是Metasploitable,能够发现它能够连接kali的21号端口,但是无法连接23号端口
再在WinXPattacker上进行测试,能够发现二者均不可实现
若重新添加以下代码,添加21号端口后,则WinXPattacker上又可以连接21号端口了
sudo iptables -A INPUT -p tcp -s 192.168.200.2 --dport 21 -j ACCEPT
(2)动手实践:Snort
Snort运行命令提示如下:
①从离线的pcap文件读取网络日志数据源
②在snort.conf中配置明文输出报警日志文件
③指定报警日志log目录(或缺省log目录=/var/log/snort)
由于Kali里面安装snort总是失败,尝试多次无法进行,因此根据群内同学的建议,在SeedUbuntu中进行snort的安装并进行分析
通过以下代码,分析之前实验提供的listen.pcap文件(-c 表示选择snort配置文件,-r 表示从pcap格式的文件中读取数据包,-K ascii 用于指定输出日志文件为ASCII编码)
sudo snort -c /etc/snort/snort.conf -r listen.pcap -K ascii
通过以下命令可以查看日志
cd /var/log/snort
vim alert.1
可以看到,该文件中的攻击是使用nmap命令进行的,攻击机IP地址是 172.31.4.178,靶机IP地址是 172.31.4.188 ,可以看到端口号、IP地址等等信息,分析结果与之前的实验相同。
(3)分析配置规则
这部分的实验需要在蜜网网关上进行,首先进行防火墙的查看,分析防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
首先,使用以下命令进行查看
vim /etc/init.d/rc.firewall
首先,可以看到creat_chains函数,该函数有三块内容:BlackList、WhiteList和FenceList,它们存储了源地址和目的地址的黑名单、白名单、防护名单等等信息,并定义了相关规则。
下面在start()函数中进行查看(creat_chains函数在上面已经解释,下面省略)
load_modules():这个函数用于加载所需的内核模块,以支持防火墙所需的功能。它可能会加载类似iptable_filter、iptable_nat等模块,这些模块提供了防火墙规则和网络地址转换(NAT)等功能所需的支持。
flush():这个函数用于清除并创建防火墙中的链(chains)。链是防火墙规则的容器,用于对网络流量进行分类和处理。这个函数通常会清除现有的防火墙链,并创建所需的链,如输入链(INPUT)、输出链(OUTPUT)和转发链(FORWARD)等。
default_policy():这个函数用于设置防火墙的默认策略。默认策略定义了当没有匹配的防火墙规则时如何处理网络流量。例如,它可以指定默认允许或默认拒绝所有流量。这个函数通常会设置默认策略,如允许输入链(INPUT)和输出链(OUTPUT)的默认行为。
local_host_policy():这个函数用于设置本地主机(即蜜网网关自身)的策略。它可能包含一些针对本地主机的特定防火墙规则和策略设置,以确保本地主机的安全性。
management_policy():这个函数用于设置管理策略,通常是指允许或限制对蜜网网关的管理访问的策略。这可能包括允许特定IP地址或网络对蜜网网关进行管理操作(如SSH登录、Web管理界面等),以及限制其他来源的管理访问。
使用以下命令进行iptables规则表的查看
iptables -L
使用以下命令进行相关snort规则的查看,可以看到eth0这一网络接口的配置情况,即虚拟网卡端口eth0的规则
vim /etc/init.d/snortd
使用以下命令可以看到Snort_inline运行时的一些相关参数,例如Snort Inline 的路径信息、配置和相关的脚本等等信息,涉及启动、停止、重启 Snort Inline 服务的逻辑,以及其他与配置和管理 Snort Inline 相关的功能。
vim /etc/init.d/hw-snort_inline
通过以下命令,可以查看一些服务情况,例如以下命令查看iptables和snort的情况,下面如果是on,则该服务是开机自动启动的,如果是off,则是需要手动打开的。
chkconfig --list | grep iptables
chkconfig --list | grep snort
总结:
蜜网网关通过配置防火墙和入侵检测系统/入侵防御系统(IDS/IPS)的规则,实现了攻击数据的捕获和控制需求。防火墙规则用于过滤和控制网络流量,它可以限制对蜜网网关的访问,并允许只有特定的攻击流量进入。而IDS/IPS规则则用于检测和防御具体的攻击行为,当攻击流量被检测到时,IDS/IPS会触发警报或采取相应的防御措施,如阻止攻击流量或发送通知。通过这样的配置,蜜网网关能够诱使攻击者将其注意力集中在虚拟网络上,同时捕获攻击数据并对其进行分析和响应,以进一步加强网络的安全性。
3.学习中遇到的问题及解决
- 问题1:telnet服务无法使用
- 问题1解决方案:检查发现问题,从是否是防火墙的问题到是否配置了telnet,一路排错,最终解决
- 问题2:snort无法在Kali上实现使用
- 问题2解决方案:与之前的实验一样,仍然在SeedUbuntu上进行snort工具的使用和分析
4.学习感悟、思考等
在这次实践中,通过防火墙设置,实现了过滤ICMP数据包,禁止了Ping请求,并限制了特定IP地址访问主机的特定网络服务。此外,还使用Snort对给定的pcap文件进行入侵检测,并成功获得了报警日志。最后,通过在蜜网网关上进行分析配置规则,进一步深入了解了防火墙、蜜网网关等相关知识。通过这些配置和工具的应用,提高了我对蜜网网关的安全性和防御能力的理解,使得更深入地理解了防火墙和入侵检测技术在攻防环境中的重要作用。
参考资料
- Ubuntu无法telnet
- ubuntu 配置telnet服务,内含遇到的问题+转载如何配置