一、实践内容:
1.安全防范
为了保障"信息安全金三角"的CIA属性、即机密性、完整性、可用性,信息安全领域提出了一系列安全模型。其中动态可适应网络安全模型基于闭环控制理论,典型的有PDR和P^2DR模型。
1.1 PDR模型
信息系统的防御机制能抵抗入侵的时间P,能超过检测机制发现的入侵的时间D和响应机制有效应对入侵的时间R之和。
1.2 P^2DR模型
网络安全=根据风险分析制定安全策略(policy)+执行安全防护策略(Procation)+实时监测(Detection)+实时响应(Response)。其中安全策略是核心。
2.防火墙
(1)基本概念
所谓“防火墙”是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种建立在现代通信网络技术和信息安全技术基础上的应用性安全技术,隔离技术。越来越多地应用于专用网络与公用网络的互联环境之中,尤其以接入Internet网络为最甚。
(2)功能
网络安全的屏障。一个防火墙(作为阻塞点、控制点)能极大地提高一个内部网络的安全性,并通过过滤不安全的服务而降低风险。由于只有经过精心选择的应用协议才能通过防火墙,所以网络环境变得更安全。
强化网络安全策略。通过以防火墙为中心的安全方案配置,能将所有安全软件(如口令、加密、身份认证、审计等)配置在防火墙上。与将网络安全问题分散到各个主机上相比,防火墙的集中安全管理更经济。例如在网络访问时,一次一密口令系统和其它的身份认证系统完全可以不必分散在各个主机上,而集中在防火墙一身上。
监控审计。如果所有的访问都经过防火墙,那么,防火墙就能记录下这些访问并作出日志记录,同时也能提供网络使用情况的统计数据。当发生可疑动作时,防火墙能进行适当的报警,并提供网络是否受到监测和攻击的详细信息。
防止内部信息的外泄。通过利用防火墙对内部网络的划分,可实现内部网重点网段的隔离,从而限制了局部重点或敏感网络安全问题对全局网络造成的影响。再者,隐私是内部网络非常关心的问题,一个内部网络中不引人注意的细节可能包含了有关安全的线索而引起外部攻击者的兴趣,甚至因此而暴漏了内部网络的某些安全漏洞。使用防火墙就可以隐蔽那些透漏内部细节如Finger,DNS等服务。Finger显示了主机的所有用户的注册名、真名,最后登录时间和使用shell类型等。
日志记录与事件通知。进出网络的数据都必须经过防火墙,防火墙通过日志对其进行记录,能提供网络使用的详细统计信息。当发生可疑事件时,防火墙更能根据机制进行报警和通知,提供网络是否受到威胁的信息。
3.开源网络入侵检测系统snort基本介绍:
-
简介:Snort是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配,可以检测各种不同的攻击方式,对攻击进行实时报警等。
-
四个主要部件:
1.数据包嗅探:将网卡设置为混杂模式,用libpacp函数来进行数据包监听和抓包。
2.预处理器:用于弥补检测引擎检测能力的不足。主要有TCP/IP协议栈模拟、应用层协议解码、异常检测。
3.检测引擎:是主题模块,主要包括规则库解析、多模式匹配、规则插件。
4.输出模块:进行各种多样化的报警和日志记录。 -
主要功能:
1.嗅探模式(从网络上读取数据包,常用命令snort -dev)
2.数据包记录模式(把数据包记录到硬盘上,常用命令snort -b)
3.网络入侵检测模式(载入规则库才能工作,Snort并不记录所有捕获的包,而是将包与规则对比,仅当包与某个规则匹配的时候,才会记录日志或产生报警)
snort采用标准的捕获数据包的函数库libpcap,具有数据包嗅探、数据包记录和分析、入侵检测功能。软件基本构架如图1.4所示:
在snort运行时,首先,将捕获的数据包经过解码器填入到链路层协议的包结构体之中,以便对高层协议解码;然后送入各种各样的预处理插件中,对数据进行检查和操作;随后检测引擎对每个包的信息进行快速模式匹配检测;对之前各个部件产生的报警/日志信息,调出相应的输出插件进行发送和记录。检测引擎与插件是snort入侵的主体模块,包含规则库解析、多模式匹配和规则插件检查三部分。
二、实践过程:
- 防火墙配置
配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包
使用iptables -L查看seed所有规则,确认是默认的:
此时,用kali(192.168.1.101)ping seed(192.168.1.103),没有问题:
使用命令iptables -A INPUT -p icmp -j DROP使得主机不接收ICMP包:
-A INPUT:将input规则添加到链尾;
-p icmp:指定icmp协议;
-j DROP:指定对应数据包进行丢弃。
再次查看规则:
此时用kali再次ping seed ,可见已经不能成功了:
成功后,使用iptables -F 清除所有规则,此时,用攻击机ping靶机又能够成功ping通:
(2)只允许特定IP地址,访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址无法访问。
首先给Kali安装FTP服务,输入指令"apt-get install vsftpd"。再输入"service vsftpd start"开启FTP服务。
然后用其他主机访问Kali主机的ftp服务,都可成功;
使用命令iptables -P INPUT DROP拒绝一切数据流入;
使用命令iptables -A INPUT -p tcp -s 192.168.1.101 -j ACCEPT只允许kali(192.168.1.101)访问主机。查看如下:
设置好后,用kali和winXPattacker访问seed,可见只有kali可以成功访问:
之后输入"iptables -F"和"iptables -P INPUT ACCEPT"恢复之前的状态。
- 动手实践:Snort
使用Snort对给定pcap文件(listen.pcap文件)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或 Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
执行snort -r listen.pcap -c /etc/snort/snort.conf -K ascii从离线的pcap文件读取网络日志数据源:
可见,TCP包占绝大多数。
snort会在默认目录 /var/log/snort 生成一个日志文件,cd/var/log/snort 查看日志文件 vim snort.alert.fast,可看到本次攻击是用nmap发起的。攻击机IP地址是 172.31.4.178,靶机IP地址是 172.31.4.188 ,还可以看到端口号等:
- 分析配置规则
(1)数据捕获
蜜罐网关通过三种方式捕获数据:防火墙日志、网络通讯、系统活动
防火墙日志:防火墙能够记录所有的进入和外出本网络的连接。所有进出防火墙的日志信息记录在/var /log /messages 文件中。但防火墙能记录的数据是有限的,主要是报头信息,如攻击的时间、源和目的IP地址以及源和目的端口,对于入侵者的击键行为、数据包的载荷等无能为力。
IDS能够捕获所有的网络活动,记录每一个包和载荷。IDS 能够充分发挥其数据捕获的能力,得到蜜网环境中所有的数据包。Snort捕获所有IP通信,并将其转储到日志文件tcpdump中留待以后分析。将嗅探器与外部网口eth0绑定,那么记录下的将不仅是与Honeynet相关的数据,还会有外部网络的通信。
(2)数据控制
蜜网网关实现数据控制的主要方法有:基于IPTables的外出连接数限制和snort-inline入侵检测系统。
基于re.firewall脚本的IPTables防火墙可以限制外出的TCP连接和UDP、ICMP协议的数据包数.限制时间可以是秒,分钟,小时或天为单位,方便灵话,易于合理控制。还可以修改外出连接的数据包使其不能到达目的地,让入侵者认为数据包正常发出。
具体分析配置规则与启动项文件包括:
防火墙(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
打开蜜罐,输入:vim /etc/init.d/rc.firewall
看到create_chains函数中新建了许多规则链,包括黑名单、白名单、防护名单等:
对于属于黑名单的主机,丢弃所有包;对于属于白名单的主机,接受数据包;对于属于防护名单中的,是不允许被外部访问的蜜罐主机
输入iptables -L查看实际规则列表,但是蜜罐没有iptables,查阅了资料没能解决
查看roo的防火墙规则 cd /etc/init.d,输入./iptables status查看规则列表:
输入vim /etc/init.d/snortd,查看snort的脚本文件,可以看到实际运行时候的参数:
输入vim /etc/init.d/hw-snort_inline打开snort_inline的脚本文件,可以获取Snort_inline实际执行参数:
输入vim /etc/honeywall.conf,打开honeywall配置文件,可以看到snort默认为不自动更新:
输入chkconfig --list即可查看哪些是自启动的,如果从0到6全是off,那就不自启动。
chkconfig --list | grep iptables,chkconfig --list | grep snort。
防火墙和NIPS不全是off,是自统启动的,NIDS的0-6都是off,是需要手动启动的。
三、学习中遇到的问题及解决:
- 问题1:再打开蜜罐,输入vim /etc/init.d/rc.firewall没有显示
- 问题1解决方案:需要先su给管理员权限,之后能正常显示
- 问题2:在只允许特定IP地址访问主机的某一网络服务,而其他的IP地址无法访问这一实验中,第一次实验没成功,后来发现是忘记先输入命令iptables -P INPUT DROP,使虚拟机丢弃一切输入的数据包,连接均断开,然后进行下一步。
- 问题2解决方案:实验开始先输入命令iptables -P INPUT DROP,问题解决。
四、实践总结:
本次实践主要运用了iptables进行防火墙配置、snort工具进行入侵检测以及通过分析脚本文件大致明白了蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。相对来说本次实践难度适中,实践过程中发现对命令的各个参数的使用还是容易混淆,还需要多加实践才能更好的掌握。