这个作业属于哪个课程 | 《网络攻防实践》 |
---|---|
这个作业的要求在哪里 | 网络攻防第六周作业 |
我在这个课程的目标是 | 学习面对网络攻击时可采取的防御、检测和响应的技术。 |
这个作业在哪个具体方面帮助我实现目标 | 使用防火墙技术,例如netfilter/iptable;实践使用入侵检测技术,例如开源的snort;掌握一些基础响应技术。 |
作业正文 | 见作业 |
其他参考文献 | 见文末 |
一.实践内容
(一)安全防范
为了保障“信息安全金三角”的CIA属性、即机密性、完整性、可用性,信息安全领域提出了一系列安全模型。其中动态可适应网络安全模型基于闭环控制理论,典型的有PDR和P^2DR模型。
- PDR模型:信息系统的防御机制能抵抗入侵的时间P,能超过检测机制发现的入侵的时间D和响应机制有效应对入侵的时间R之和。
- P^2DR:基本描述为:网络安全=根据风险分析制定安全策略(policy)+执行安全防护策略(Procation)+实时监测(Detection)+实时响应(Response)。其中安全策略是核心,如下图。
(二)防火墙
1.防火墙技术概述
- 防火墙:是目前最成熟的网络防御技术之一,属于一种网络上的访问控制机制,通过在不同网络域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求决定是否允许网络访问通过防火墙,达到特定网络安全域免受非法访问和破坏的目标。
- 防火墙功能: 检查进出网络的流量;防止脆弱或不安全的协议和服务;防止内部网络信息外泄;对网络存取和访问进行监控审计;可强化网络安全策略,并集成其他网络安全防御机制。
- 防火墙的不足: 来自网络安全内部的攻击;通过非法外联的网络攻击;计算机病毒传播。
2.防火墙技术和产品
- 包过滤技术:通过网络层和传输层的包头信息检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包,将一些不符合安全策略的数据包阻挡在网络边界处。
- 基于状态检测的包过滤技术:此技术维护所有通过防火墙的网络连接记录,并依此确定数据包是否属于一个新的连接、或是已连接的一部分,或是一个非法数据包。由于根据数据包的上下文进行检查和过滤,数据的合法性得到了更有效的保证,但对网络传输的性能影响较大。如下图所示。
- 代理技术:具体过程为客户端首先与代理服务器建立连接,接着发出一个对外部目标服务器的的文件或请求,代理服务器通过与目标服务器连接或从缓存中取得资源,并返回给客户端。网络用户便不直接与外部服务器通信。具体分为应用层代理技术、电路级代理技术和NAT代理技术。
- 防火墙产品:集成包过滤的路由器、基于通用操作系统的防火墙软件产品、基于安全操作系统的防火墙、硬件防火墙设备。
3.Linux开源防火墙netfilter/iptables
-
工作原理:netfilter/iptables中包含了三个最基本的规则表:包过滤处理的filter表、网络地址转换处理的nat表、以及用于特殊目的数据包修改的mangle表。相应的规则链如下图所示:
iptables提供了命令行接口,语法如下:
$ iptables [-t table] command [match] [target]
command是最重要部分,它告诉iptables命令要做些什么,以下是一些常用命令-A 该命令将一条规则附加到链的末尾。
-D 指定要匹配的规则或者该规则在链中的编号。将其删除。
-P 该命令设置链的缺省目标操作,即策略。
-N 用命令中指定的名称创建一个新链。
-F 如果指定链名,删除该链的所有规则;如未指定链名,删除所有链的所有规则。
-L 列出指定链中所有规则。
Match部分为规则匹配条件,指定数据包与规则匹配所应具有的特征。通用匹配包括-s/-d源和目的地址
Target部分指定满足匹配条件之后的目标操作,即对规则匹配的数据包执行的操作。常用的目标操作为-j ACCEPT
(允许数据包经过协议栈)和-j DROP
(丢弃数据包)。
(三)入侵检测技术
1.入侵检测概述
- 定义:对入侵行为的检测与发现。
- 两个重要参数是检测率和误报率。
- 信息收集是入侵检测技术的基础。
- 收到信息后最核心的任务是信息分析,两种基本的分析技术是梧误用检测和异常检测。
- 入侵检测系统的部署位置如下图所示:
- 入侵防御系统IPS,无需使用者的干预,可以在网络中“即插即用”。
2.入侵检测系统:snort
- snort采用标准的捕获数据包的函数库libpcap,具有数据包嗅探、数据吧记录和分析、入侵检测功能。软件基本构架如图所示
- snort实现机理:首先,将捕获的数据包经过解码器填入到链路层协议的包结构体之中,以便对高层协议解码;然后送入各种各样的预处理插件中,对数据进行检查和操作;随后检测引擎对每个包的信息进行快速模式匹配检测;对之前各个部件产生的报警/日志信息,调出相应的输出插件进行发送和记录。检测引擎与插件是snort入侵的主体模块,包含规则库解析、多模式匹配和规则插件检查三部分。
二.实践过程
(一)动手实践:1.配置Linux平台上的iptables,过滤ICMP数据包,使得主机不接受ping包;2.只允许特定IP地址(如192.168.200.5)访问主机的某一网络服务(如FTPHTTPSMB),而其他IP地址无法访问。
虚拟机 | IP地址 |
---|---|
Windowsattacker | [192.168.200.4 |
SEED_Ubuntu | 192.168.200.3 |
kali | 192.168.200.2 |
-
使用Windowsattacker来ping虚拟机SEED,通过对SEED防火墙的修改来完成实验。
-
刚开始发现可以ping通。
-
在SEED中输入
iptables -A INPUT -p icmp -j DROP
,
-
发现现在Windowsattacker不能ping通SEED。
-
通过
iptables -L
查看一下防火墙的规则,发现任何ICMP报文都不能通过。
-
最后输入
iptable -F
删除设立的规则,以防对后面实验的影响。
-
接下来完成第二个问题,用Windowsattacker和kali通过telnet访问SEED,设置只允许Windowsattacker访问,其余均拒绝。先用两个机子访问,都能成功。
-
然后更改SEED的防火墙设置,输入
iptables -P INPUT DROP
拒绝一切数据包的进入,现在再试一下两台机子均不能访问。
-
再将其设置只能一台主机访问,输入
iptables -A INPUT -p tcp -s 192.168.200.4 -j ACCEPT
表示可以接受Windowsattacker对本机的tcp数据包。顺便用iptables -L
查看一下。
-
用两个机子登录验证,然后发现现在只有一台机子能telnet登录。
-
将上述设置恢复正常状态,输入
iptables -F
和iptables -P INPUT ACCEPT
。
(二)动手实践:1.对snort对给定的pcap文件(第四章解码网络扫描的任一个pcap文件)进行入侵检测,并对检测出的攻击进行说明。2.在BT4Linux攻击机或Windowsattacker攻击机上使用snort,对给定的pcap的文件进行入侵检测,获得报警日志。
- 先在虚拟机中安装snort软件,我的kali安装不了,不知道是为什么。。。换做SEED也是十分曲折才弄好,然后又安装vmtools,将之前下好的文件拷贝到虚拟机里面,终于可以开始实践了。
- 在SEED中输入指令
snort -r listen.pcap -c /rtc/snort/snort.conf -K ascii
对listen.pcap文件进行检测,结果如下:
- 可看出绝大多数数据包为TCP数据包。还有其他检测的情况,包括数据包的总量、检测的警告等等。
- 警报日志可以输入
cd /var/log/snort/
然后再输入vim alert
查看此alert文件。发现这个攻击是由nmap发起的。
(三)分析蜜网网关的防火墙和IDS/IPS配置规则。
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,并撰写分析报告,说明蜜网网头是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
分析内容如下:
(1)上述脚本是如何实现蜜网网关的数据捕获和数据控制机制?
(2)获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
(3)蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
(4)Bonus: 蜜网网关中的Snort规则是如何自动升级的?
1.数据捕获与数据控制机制:
数据捕获是密网的一个重要目的,包括三个层次,分别是防火墙的日志记录、eth1上的嗅探器记录的网络流多和Seek捕获的系统活动;记录的内容主要包括:数据包通过时间、包协议类型、进出的网络接口、源地址、目的地址、源端口、目的端口、包长度等。
Roo的数据控制包含两方面,一是防火墙Iptables对连出(Outbound)的连接数的控制,另一个是网络信息防御系统Snort_inline对连出异常数据的限制,还增加了黑名单、白名单、防护名单的功能。防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包。对于属于白名单的主机,接受且不记录。对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机。
- 首先打开密网网关,输入
vim /etc/init.d/rc.firewall
查看防火墙的文件。
2.IPTables的实际规则列表
- 在网关中输入指令
iptables -t filter -L
可以查看规则列表。列表显示默认的规则如OUTPUT、INPUT、FORWARD都已经被关闭了,有一些其他的规则是打开的。(这里对有哪些具体的规则还不是很懂啊。。。我的密网网关只出来一些ICMP、TCP、UDP相关的链,看不到其他链了不知道为什么~~~)
3.snort实际执行参数与snort_inline的实际执行参数:
-
通过
vim /etc/init.d/snortd
可以打开Snort脚本文件,可以分别看到一些参数的选项,包括实际运行时候的参数。学习一些snort的指令后进行分析,譬如在指定网卡接口后,如果没有其他的参数,将按照默认参数运行。如默认不开启-A模式,使用默认目录的config文件,默认使用eth0、使用二进制模式保存log文件等。
-
使用命令
vim /etc/init.d/hw-snort_inline
可以看到Snort_inline运行时参数。-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置
4.防火墙、NIDS、NIPS启动方式:
- 使用
chkconfig --list | grep [服务]
查看服务情况,如果从0~6全是off,那就不自动启动。可以看到防火墙和NIPS(snort_inline)是自动启动的,NIDS要手动启动。
5.snort规则的升级方式:
- 使用命令vim /etc/honeywall.conf打开配置文件,找到update variables,可以看到其值为no,不自动更新。
三.学习中遇到的问题及解决
- 问题1:SEED_Ubuntu虚拟机安装不了snort。
- 问题1解决方案:分析是网络问题,连接密网时总是不能成功,将网络适配器改为桥接模式。
- 问题2:SEED_Ubuntu安装vmtools时总是卡在压缩包后面不知道怎么做了。
- 问题2解决方案:百度查询到正确的方法,先将压缩文件拷贝到桌面再操作,总结经验,百度搜索问题时,越详细越好,不然老搜不到理想答案!!!!
- 问题3:最后一个实验中,指令几乎都用不了。
- 问题3解决方案:后面使用
su -
提权后,可以查看。这里提权指令和kali的sudo su
不一样。
四.实践总结
- 本章学习了网络上的防御技术,对防火墙了解的比较多一点,对入侵检测技术的一些概念和用法还不是很清晰,比如规则、链啊等等,可能和自己的网络基本知识较少有关。
- 本次实践前两个做得比较简单,通过对教材学习基本能自己解决,对于第三个实践,分析的工作比较多,而且涉及到要知道固定的指令用法和结构什么的,参考了解建国同学的博客完成。