20212818 2021-2022-2 《网络攻防实践》实践五
作者:互联网
一、实践内容
(一)、安全模型
1、传统安全评估和防范方法
对网络进行风险分析,制定相应的安全策略,然后采取安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点。
2、动态可适应网络安全模型
PDR安全模型:基于闭环控制理论的时间动态可适应网络安全模型,以经典的网络安全不等式P>D+R(保护、检测、响应)为本质基础,并提出安全性可量化和可计算的观点。
P^2 DR安全模型:基于PDR安全模型提出,增加了Policy分析制定安全策略,并以此为核心,所有的防护、检测、响应都是依据安全策略实施的。
(二)、网络安全防范技术与系统
防火墙技术
防火墙定义:防火墙是目前最成熟的网络防御技术之一,在网络便捷安全防护方面得到了非常广泛的应用。指的是置于不同网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备。从技术范畴上说防火墙属于一种网络上的访问控制机制,通过在不同的网络安全域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求和策略设置决定是否允许网络访问通过防火墙,达到保护特定网络安全域免受非法访问和破环的安全目标。
防火墙的功能:控制在计算机网络中不同信任程度网络域之间传送的数据流。具体包括以下几点:
检查控制进出网络的网络流量
防止脆弱或不安全的协议和服务
防止内部网络信息的外泄
对网络存取和访问进行监控审计
防火墙可以强化网络安全策略并集成其他安全防御机制
防火墙的技术:
包过滤技术
基于状态检测的包过滤技术
代理技术(包括应用层代理技术、电路级代理技术、NAT代理技术
(三)、网络检测技术与系统
1、入侵检测系统的分类与部署
分类:HIDS(基于主机的入侵检测系统)、NIDS(基于网络的入侵检测系统)
入侵防御系统IPS/IDS:“即插即用”,无须使用者的干预。
2、开源网络入侵检测系统Snort
基本架构:
数据包嗅探/解码器:将网卡设置为混杂模式,用libpacp函数来进行数据包监听和抓包。
预处理器/插件:用于弥补检测引擎检测能力的不足,主要有TCP/IP协议栈模拟、应用层协议解码、异常检测。
检测引擎/插件:通过攻击特征规则库检测。
输出模块/插件:记录报警和日志。
主要功能:
嗅探模式
数据包记录模式
网络入侵检测模式
基于Snort的入侵防御系统Snort_inline
能够对通过Snort_inline的数据包进行检测,对匹配特征规则的数据包进行丢弃和阻断,达到实时安全防御能力。
工作机理:
安装内联模式的Snort前,必须提供内联网络连接的能力。
netfilter/iptables提供了Snort_inline 所需的libipq/libnetfilter_ queue库支持。
Snort在编译过程中通过./configure --enable -inline
模式进行编译,可以生成以内联模式运行的Snort_inline 程序,在IPTables规则中添加一条简单的$IPTABLES -A FORWARD -j QUEUE
将会触发Snort_ inline 负责所有经由网桥,由系统进行路由转发的数据包,对这些数据包进行检查并根据检查结果决定是否阻断。
二、实践过程
任务一、防火墙配置
任务要求:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包;
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问
此次实验使用SEEDUbuntu、kali
、Metasploitable_ubuntu
三台虚拟机,seed
作为被ping
机。
SEEDUbuntu的IP地址
kali的IP地址
Metasploitable_ubuntu的IP地址
首先在SEEDUbuntu使用命令iptables -V
显示出版本。
输入iptables -L
显示出链中所有的规则。
使用命令iptables -A INPUT -p icmp -j DROP
使得seed
不接受icmp数据包,其中-A
可以换成-I
,无非是加入规则的顺序问题,-p
后跟协议,这些命令使用iptables -h
都可以查看,使用命令后发现多了一条规则,作用是使得主机不接受ping
包
设定完规则后尝试用kali
和Metasploitable_ubuntu ping SEEDUbuntu,发现均不能ping通,表明规则设定成功。
输入命令iptables -D INPUT 1,
删除上一条自己设定的规则
删除规则之后,再尝试用kali
和Metasploitable_ubuntu ping SEEDUbuntu,发现两台机器马上就能ping
通SEEDUbuntu。
然后使用kali
和 SEEDUbuntu 对Metasploitable_ubuntu 进行telnet
远程连接,发现均可以连接,命令是telnet IP地址。
为了只让某个特定IP访问某一服务,比如telnet
,可以设定先将所有访问该主机服务的请求全部丢弃,之后再设一条规则使得特定IP可以访问这个端口服务。
即使用命令iptables -I INPUT -p tcp --dport 23 -j DROP
先拒绝所有访问23端口请求
再用命令iptables -I INPUT -s 192.168.200.16 -p tcp --dport 23 -j ACCEPT
接受特定IP可以访问这个端口
发现kali无法连接Metasploitable_ubuntu的23号端口,但是SEEDUbuntu(192.168.200.123)可以成功连接
任务二、动手实践:Snort
使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件,之前的实践已经提供了,请在云班课中下载)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
Snort运行命令提示如下:
-
①从离线的pcap文件读取网络日志数据源
-
②在snort.conf中配置明文输出报警日志文件
-
③指定报警日志log目录(或缺省log目录=/var/log/snort)
使用之前实验用过的listen.pcap文件,我的pcap文件在kali桌面
使用命令snort -r /home/kali/DeskTop/listen.pcap -c /etc/snort/snort.conf -K ascii
对pcap文件进行入侵检测,可以查看输出的检测,大部分都是tcp会话。
snort会在默认目录生成一个日志文件,进入报警日志目录 cd /var/log/snort
, 查看日志文件命令sudo cat snort.alert.fast,发现本次攻击使用nmap。攻击机IP地址是 172.31.4.178
,靶机IP为 172.31.4.188
任务三、分析配置规则
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
具体分析配置规则与启动项文件包括:
防火墙(netfilter+IPTables) : /etc/init.d/rc.firewall:
入侵检测系统(Snort) : /etc/init.d/hflow-snort 与/etc/snort/snort.conf:
入侵防御系统(Snort_inlinc) : /etc/init.d/hflow-snort_inline 与/etc/snort_inline/snort. inline.conf
上述脚本是如何实现蜜网的数据捕获和数据控制的?
数据捕获机制:iptables可以通过记录日志的形式来捕获网络连接信息,包括源地址,目的地址,使用的端口和进行连接的协议、长度等等;Snort对符合入侵检测特征的攻击数据包发出响应的报警信息,从而标识网络流中存在的攻击事件。查看rc.firewall中的名单、白名单、防护名单的链,不同的链中对不同来源的包的处理是不同的,从而实现数据控制。
打开蜜罐(roo,honey),【su -】,然后执行【vim /etc/init.d/rc.firewall】查看防火墙文件。在防火墙文件中可以看到有三个链,分别是黑名单、白名单、防护名单。-N的意思表示根据用户指定的名字创建新链。
防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包;对于属于白名单的主机,接受且不记录;对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机。
如下图可以发现创建了黑名单和白名单防护名单的规则链,还创建了很多协议数据包的处理规则链
获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数
蜜网网关的iptables显示找不到命令 ,获取规则链的命令是iptables -L
,环境变量没有加入,于是使用/sbin/iptables -L
命令可以看到完整规则链。这里honey虚拟机不能上鞋翻页,于是将查出来的东西放入1.txt,在1.txt中进行查看,所以最终的命令是:/sbin/iptables -L >1.txt ,然后输入命令vim 1.txt,可以看到默认的规则INPUT、FORWARD、OUTPUT都是关闭。
获取snort实际执行参数 通过命令 vim /etc/init.d/snortd
打开Snort脚本文件,可以看到些参数的选项:默认使用默认目录下的snort.conf
规则,默认监听网卡为eth0
,默认存储日志路径为/var/log/snort
。
获取Snort_inline实际执行参数:通过命令 vim /etc/init.d/hw-snort_inline
打开snort_inline
的脚本文件,可以看到到实际执行的参数。
蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的
使用命令chkconfig -list
对linux系统运行的服务查询,仍然需要使用/sbin/chkconfig --list
命令,可以发现NIDS的0~6都是off,说明是需要手动启动的,而防火墙和NIPS不全是off,是跟随系统启动的。
密网网关中的Snort规则是如何自动升级的?
可以从vim /etc/honeywall.conf
打开honeywall配置文件,来看snort的rule是否自动更新,可见默认为不更新
Oinkmaster是个自动更新的软件,使用vim /etc/oinkmaster.conf
打开该文件,发现了snort.conf文件,可以推断这里使用工具Oinkmaster进行了snort的自动升级。
三、学习中遇到的问题及解决
问题1:在任务二中查看报警任务日志文件时,首先查看的是alert文件,发现打开是空的。
解决办法:将/var/log/snort目录下的文件都列出来,一个一个打开看,最后发现在文件snort.alert.fast中。
问题2:在任务三中执行“获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数”任务时,直接输入命令iptables -L,显示找不到命令。
解决办法:通过查询资料发现是环境变量没有加入,于是使用/sbin/iptables -L
命令可以看到完整规则链。在后续类似命令中都加上/sbin/则可以正常运行。
四、实践总结
1、这次的实验总体感觉比较简单,做起来速度比较快,但也会遇到一些细小的问题,在解决问题的途中要有耐心仔细分析,既解决问题又学习到了新知识。
2、掌握了防火墙、snort、虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则等相关知识,感觉自己的知识面更广了,对网络攻防的相关操作也更加熟悉,实验做起来也更加快捷,在遇到一些问题时,不再是一头雾水了,可以有一个大致的方向进行解决。
3、在实验过程中因为粗心出现一些不必要的问题,比如忘记进入root模式,导致运行命令时出现error。所以意识到自己在后续的学习与实验中,应该更加细心。
标签:iptables,规则,防火墙,实践,20212818,Snort,2021,inline,snort 来源: https://www.cnblogs.com/fairry/p/16132151.html