20211902 毕鑫杰 2021-2022-2 《网络攻防实践》第七周作业
一.实践内容
二、动手实践:Snort
- ①从离线的pcap文件读取网络日志数据源
- ②在snort.conf中配置明文输出报警日志文件
- ③指定报警日志log目录(或缺省log目录=/var/log/snort)
二.实践过程
1、防火墙配置
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
- ①从离线的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
三、分析配置规则
数据控制
开启蜜网网关,通过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配置规则也有了初步的了解和认识。