20211902 毕鑫杰 2021-2022-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、防火墙配置

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

Linux操作系统平台

(1)过滤ICMP数据包

在SEED上ping kali,ping 192.168.215.129,可以ping通如下

 

 

 

在kali上通过iptables -L查看默认规则

 

 

 

 

执行iptables -A INPUT -p icmp -j DROP指令使主机不接受icmp的数据包。

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

再次通过iptables -L查看规则,发现多了一条icmp针对任何位置不允许访问的规则,即在INPUT链中添加将所以有ping连接产生的icmp数据包丢失的规则。

 

 

 

再次通过SEED ping kali,发现已无法ping通

 

 

 

在kali执行iptables -D INPUT -p icmp -j DROP指令去除之前的过滤规则:(或用iptables -F删除自定义规则)

 

 

 由seed再次尝试ping kali虚拟机,发现已恢复可行

 

 

 

 (2)只允许特定IP地址访问主机的某一网络服务

netstat -a是一个dos环境下的命令,在Internet RFC标准中,用来显示所有连接和侦听端口

 使用netstat -a | grep telnet 查看kali上的telnet服务是否已打开(此处我没有,参考了后文问题方法部分内容)

 

 

 已打开。

seed和xp虚拟机可以正常Telnet访问如下

 

 

 

 

 

 

 在kali使用iptables -P INPUT DROP指令修改默认规则-P拒绝一切的数据包流入

 

 

 

 

 发现两台机器都无法进行telnet访问

 

 

 

 

 

 

 使用指令iptables -A INPUT -p tcp -s 192.168.215.130 -j ACCEPT开启SEED对主机kali的tcp服务。

并用iptables -L查看规则。

 

 

 

 发现seed主机可以正常Telnet访问

 

 

winxp仍无法访问

 

 

 

 最后执行iptables -F删除自定义规则,iptables -P INPUT ACCEPT把没有规定的数据包都接收,恢复初始状态

 

 

 

 

 

 Windows操作系统平台

 (1)过滤ICMP数据包

找到控制面板,安全中心将防火墙还原默认设置,发现ICMP设置中允许传入回显请求已被默认取消

 

 

 

 使用Kali ping测试发现原先ping通,现已经无法ping通

 

 

 

 (2)只允许特定IP地址访问主机的某一网络服务

  • 首先确定kali与seed主机都可正常telnet xp虚拟机

发现都不行

 

 

 

 

 

 

 

 

 

 通过命令services.msc,找到Telnet,发现目前状态是已禁止

 

 

 启动类型修改为“自动”,确定,再回到列表,右键,“启动”,使状态变为已启动。

 

 

 

在命令行窗口键入net start telnet,也显示请求服务已启动,操作成功。

 

 

 

 

 

 

后再在 控制面板——Windows防火墙——高级——网络连接设置里勾选Telnet服务器如图

 

 

 

再次尝试 kali和SEED telnet WinXP,已成功。

 

 

 

 

 

  • 下面在WinXP设置IP安全策略来限制固定IP(此处限制为kali的IP)访问。

首先创建安全策略:

进行“控制面板——管理工具——本地安全策略——IP安全策略右键——创建IP安全策略”,进入设置向导,设置IP安全策略名称为“限制特定IP远程访问”,在警告提示框选择“是”,保持默认点击下一步。

 

 

 最终我们创建了一个IP筛选器。

 

 

  •  添加阻止特定IP访问的筛选器。

点击添加——进入安全规则向导——一直保持默认设置点击下一步——出现警告点击“是”,进入ip筛选器列表

 

 

 点击“添加——自定义IP筛选器名称为“筛选特定IP远程访问”——添加”,进入安全规则向导:

 

 

 点击“下一步”——源地址选择“一个特定的IP地址(Kali:192.168..215.129)”——下一步——目标地址选择“我的IP地址”——选择协议类型“TCP”——下一步——设置IP协议端口“从任意端口”“到此端口(输入23)”——下一步——完成。

完成后,会在IP筛选列表看到添加的信息,如下图,再点击确定。

 

 

 注:Telnet服务器的端口号23是通过“控制面板——Windows防火墙——Telnet服务器——编辑”查看端口号为23,如图

 

 

 

继续配置IP筛选器:在点确定后——选择配置的“筛选特定IP远程访问”,点击下一步

 

 

 点击“”添加——自定义新筛选器名‘选择阻止’——选择‘阻止’——确定”,得到下图“选择阻止”,代表的是阻止。

 

 

 然后选中“选择阻止”,点击“下一步——完成”,如图所示,至此我们添加好了筛选特定IP访问的筛选器。

 

  •  添加允许特定IP访问的筛选器(步骤同添加阻止特定IP访问的筛选器)

继续点击“添加——添加——进入安全规则向导——一直保持默认设置点击下一步——警告点击‘是’——添加——自定义IP筛选器名称为“允许特定IP远程访问”——添加——-进入安全规则向导——点击下一步——源地址选择“一个特定的IP地址(SEEDUbuntu:192.168.215.130)”——下一步——目标地址选择“我的IP地址”——选择协议类型“TCP”——下一步——设置IP协议端口“从任意端口”“到此端口(输入23)”——下一步——完成”

 

既在IP筛选列表看到添加的信息,点击确定。

 

 

 再配置IP筛选器允许的动作:在点确定后——选择配置的“允许特定IP远程访问”,点击下一步

 

 点击添加——自定义名“选择允许”——选择“许可”——确定,得到下图“选择允许”,代表的是许可。

 

 然后选中“选择允许”——下一步——完成,如图,添加好了允许特定IP访问的筛选器。

 

  •  应用我们刚刚配置的两个IP安全规则(筛选(阻止)特定IP远程访问和允许特定IP远程访问)

指派此安全规则:右键“限制固定IP远程访问”——选择“指派”,至此所有工作配置完成,如图。

 

 

使用被阻止的kali去Telnet靶机WinXP,失败:

 

 

使用被许可的seed去Telnet靶机WinXP,成功:

 

 

二、动手实践:Snort

使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在云班课中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
 
Snort运行命令提示如下:
  • ①从离线的pcap文件读取网络日志数据源
  • ②在snort.conf中配置明文输出报警日志文件
  • ③指定报警日志log目录(或缺省log目录=/var/log/snort)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

查看输出里检测出的数据包,可以看到大部分数据流为tcp会话,少部分为ARP包

报警数据包有10条,均被日志记录,所有数据包都裁决允许:

 

 

 数据流统计:

 

 

 

此时snort会在默认目录生成一个日志文件,进入文件系统报警日志目录cd /var/log/snort, 查看日志文件alert.fast

 

 

 

 通过mousepad打开,,记录了报警数据10条的入侵检测信息,可以发现本次攻击是使用nmap发起的。攻击主机的IP地址是172.31.4.178,网络扫描的目标IP地址是172.31.4.188

 

 

 

 

三、分析配置规则

分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。

 

数据控制

开启蜜网网关,通过su -提权,再通过vim /etc/init.d/rc.firewall查看防火墙文件。

可以看到创建了黑名单和白名单的规则链,还创建了很多协议数据包的处理规则链BlackList、WhiteList、FenceList和xxxHandler。它们分别用来存储源地址和目的地址黑名单,源地址和目的地址的白名单,源地址和目的地址的防护名单,以及供下述policy使用的各种协议对应的Handler链。

  • 首先是create_chains函数,定义了下述程序中使用的规则。BlackList、WhiteList、FenceList和xxxHandler。它们分别用来存储源地址和目的地址黑名单,源地址和目的地址的白名单,源地址和目的地址的防护名单,以及供下述policy使用的各种协议对应的Handler链。

  • 接下来通过default_policy、localhost_policy和management_policy创建了三种情况下的代理转发模式。

  • 接下来进入start程序的正文,通过读取预定义的白名单HwFWWHITE、黑名单HwFWBLACK和防护名单HwFWFENCE,添加相关的规则。

  • 最后通过读取类似HwHPOT_PRIV_IP_FOR_NAT和HwHPOT_PUBLIC_IP等文件来导入其他的定义参数。

 

 

 

 

 

 

 

 

 

iptables规则表

 使用iptables -L进行查看(命令行往上翻页可以使用Shift + PgUp(不管用的话再加一个Fn键)):

 

 

 文件的后半部分,可以看到xxxHandler

snort实际执行参数

 通过命令vim /etc/init.d/snortd查看相关的运行参数,可以分别看到一些参数的选项,包括实际运行时候的参数。学习一些snort的指令后进行分析,譬如在指定网卡接口后,如果没有其他的参数,将按照默认参数运行。如默认不开启-A模式,使用默认目录的config文件,默认使用eth0、使用二进制模式保存log文件等:

 

 

 vim /etc/init.d/hw-snort_inline可以看到Snort_inline运行时参数,-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置:

 

 

 

 

防火墙、NIDS、NIPS启动

运行命令chkconfig --list | grep iptables和snort 查看服务情况,如果从0~6全是off,那就不自动启动。可以看到防火墙和NIPS(snort_inline)是自动启动的,NIDS要手动启动:

 

 

 

snort规则的升级方式

使用命令vim /etc/honeywall.conf打开配置文件,找到update variables,可以看到其值为no,默认不自动更新:

 

 

 

Snort社区中的实际规则更新工具是免费的Oinkmaster

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

 

 

3.学习中遇到的问题及解决 

问题:

使用netstat -a | grep telnet发现kali的telnet服务没有被打开,此时telnet连接不上

解决办法:

参考杨蕾新学姐提供的方法。安装telnet服务器端的应用程序。

 sudo apt-get install openbsd-inetd

 

 

 

 

sudo apt-get install telnetd

 

 

 

  

修改配置文件,在kali命令行键入 vim /etc/inetd.conf 如图

添加内容

telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd

重启telnet服务

/etc/init.d/openbsd-inetd restart

 查看telnet服务是否开启

netstat -a | grep telnet

 

 验证已成功。 

 打开 

 

 

 

 

4.学习感想和体会

通过本节课的学习,我学会了在linux操作系统平台和Windows系统上布置防火墙系统,再次动手实践应用了snort,掌握更轻熟了,对小学信息技术读本上防火墙的概念理解更直观和深入了。对虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则也有了初步的了解和认识。

posted @ 2022-04-17 17:54  再来人  阅读(84)  评论(0编辑  收藏  举报