20199301 2019-2020-2 《网络攻防实践》 第六周作业
第六章:网络安全防范技术
一、实践内容
安全模型
-
静态安全模型:对网络进行风险分析,制定相应的安全策略,然后采取安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点。
-
PDR安全模型:基于闭环控制理论的时间动态可适应网络安全模型,以经典的网络安全不等式P>D+R(保护、检测、响应)为本质基础,并提出安全性可量化和可计算的观点。
-
P^2 DR安全模型:基于PDR安全模型提出,增加了Policy分析制定安全策略,并以此为核心,所有的防护、检测、响应都是依据安全策略实施的。
网络安全防范技术与系统
防火墙技术概述
- 防火墙是目前最成熟的网络防御技术之一,在网络便捷安全防护方面得到了非常广泛的应用。指的是置于不同网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备。从技术范畴上说防火墙属于一种网络上的访问控制机制,通过在不同的网络安全域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求和策略设置决定是否允许网络访问通过防火墙,达到保护特定网络安全域免受非法访问和破环的安全目标。
- 防火墙的功能;控制在计算机网络中不同信任程度网络域之间传送的数据流。
- 检查控制进出网络的网络流量
- 防止脆弱或不安全的协议和服务
- 防止内部网络信息的外泄
- 对网络存取和访问进行监控审计
- 防火墙可以强化网络安全策略并集成其他安全防御机制
- 防火墙的不足(先天无法防范的安全威胁):
- 来自网络内部的安全威胁
- 通过非法外联的网络攻击
- 计算机病毒传播
- 防火墙的不足(针对技术问题目前还无法有效防范的安全威胁):
- 针对开放服务安全漏洞的渗透攻击
- 针对网络客户端程序的渗透攻击
- 给予隐蔽通道进行的特洛伊木马或僵尸网络
- 防火墙的技术:
- 防火墙产品
- 集成包过滤功能的路由器
- 基于通用操作系统的防火墙软件产品
- 基于安全操作系统的防火墙
- 硬件防火墙设备
- 防火墙部署方法
- Linux开源防火墙:netfilter/iptables(netfilter是Linux内核中实现的防火墙功能,iptables则是应用态的防火墙管理工具。)
- 工作原理:在nefilter/iptables防火墙系统中,netfilter组件位于Linux的内核空间中,实现了静态包过滤和状态报文检查(即动态包过滤)基本防火墙功能,此外也支持NAT网络地址转换等其他额外功能,并提供了多层API接口以支持第三方扩展,netfilter具备构建防火墙、NAT共享上网、利用NAT构建透明代理,以及构建QoS或策略路由器等安全功能。Iptables则是工作在Linux用户空间中的防火墙配置工具,通过命令行方式允许用户为nefilter配置各种防火墙过滤和管理规则。
- netfilter/iptables中包含三个最基本的规则表,分别为用于包过滤处理的filter表、用于网络渎职转换处理的nat表,以及用于特殊目的数据包修改的mangle表
- iptables为用户护提供了配置netfilter规则的命令接口,其命令语法为;
$ iptables [-t table] command [match] [target]
其中-t
制定配置规则所在的表,缺省表包括filter、nat、mangle、raw等。 - command```部分是iptables命令的最重要部分,他告诉iptables命令要做什么。
- 以下是最常用的命令:
命令 | 含义 |
---|---|
-A或--append | 将一条规则附加到链的末尾 |
-D或--delete | 通过用-D指定要匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该规则 |
-P或--policy | 该命令设置链的缺省目标操作,即策略。所有与链中任何规则都不匹配的信息包都将被强制使用此链的策略 |
-N或--new-chain | 用命令中所指定的名称创建--个新链 |
-F或--flush | 如果指定链名,该命令删除链中所有的规则,如果未指定链名,该命令删除所有链中所有的规则。此参数用于快速清除 |
-L或--list | 列出指定链中所有的规则 |
- target部分:
- ACCEPT:当信息包与具有ACCEPT目标操作的规则完全匹配时,会被接受(允许它前往目的地),并且它将停止遍历规则链。该目标操作被指定为-j ACCEPT。
- DROP:当信息包与具有DROP目标操作的规则完全匹配时,会阻塞该信息包,并且不对它做进一步处理。 该目标操作被指定为-j DROP。
- REJECT: 该目标操作的工作方式与DROP目标操作类似,但与DROP不同的是,REJECT 不会在服务器和客户机上留下死套接字。另外,REJECT 将错误消息发回给数据包的发送方。该目标操作被指定为j REJECT。
- RETURN:在规则中设置的RETURN目标操作让与该规则匹配的信息包停止遍历包含该规则的链。如果链是如INPUT之类的主链,则使用该链的缺省策略处理信息包。它被指定为-jump RETUR
- netfilter/iptables的NAT机制:包括IP伪装、透明代理、端口转发和其他形式的网络地址转换技术。
- IP伪装:在内部网络使用私有IP,如通过防火墙可以绑定一个外网IP,对数据包进行源IP伪装。
- SNAT机制:SNAT记住可以按照用户制定的规则,将源IP灵活的变成各种IP,IP伪装是一种SNAT机制。值得注意,SNAT机制需要在POSTOUTING链中完成,这样才能让路由、包过滤在源IP改变之前做完。
- DNAT机制:DNAT在PREROUTING链中完成,需要用到-i选项。
网络检测技术与系统
- 入侵检测技术:最核心的任务是信息分析,从中识别出攻击行为。
- 技术类型:误用检测(又叫特征检测)、异常检测(检测与正常用户在统计方面的差别)。二者通常结合使用,提高入侵检测系统的整体检测性能。同时,基于这两种技术,也可以对入侵检测系统进行分类。
- 入侵检测系统的分类;
- 基于主机的入侵检测系统(HIDS):监视主机信息;
- 基于网络的入侵检测系统(NIDS):以监听到的网络数据包作为分析数据源。
- 入侵防御系统IPS:也叫内嵌式IPS,即对检测到的异常行为或者与特征库匹配的行为直接进行阻断,断开访问。
- 开源网络入侵检测系统:Snort:
- Snort除了是一款跨平台、轻量级的网络入侵检测软件之外,还具备数据包嗅探、数据包分析与记录等多种功能,还支持内联模式,可作为网络入侵防御系统使用。
- snort功能:数据包嗅探、数据包记录和分析以及各种入侵检测功能。
- snort的四个主要部件:
- 数据包嗅探:将网卡设置为混杂模式,用libpacp函数来进行数据包监听和抓包。
- 预处理器:用于弥补检测引擎检测能力的不足。主要有TCP/IP协议栈模拟、应用层协议解码、异常检测。
- 检测引擎:是主题模块,主要包括规则库解析、多模式匹配、规
网络安全响应事件技术
- 计算机取证:在安全事件的调查中对计算机系统进行详细检查,并对计算机犯罪的电子证据进行保护、确认、提取和归档的过程
- 攻击追溯与归因:找出真正实施网络攻击的来源,并确定出攻击者真实身份
- 备份恢复:在遭受网络安全事件之后快速恢复业务运转
二、实践过程
实践一:防火墙配置
实践任务:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成
如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收ping包;
(2)只允许特定IP地址访问主机的某一网络服务,而其他的IP地址无法访问。
主机 | IP地址 |
---|---|
kali | 192.168.200.2 |
xp | 192.168.200.3 |
ubantu | 192.168.200.4 |
1、首先在ubantu中ping kali,如图可以ping通
3、执行iptables -A INPUT -p icmp -j DROP
指令使得主机不接受icmp的数据包。其中 -A 是追加新规则于指定链的尾部, INPUT 表示数据包入口(规则), -p 用于匹配协议, -j 用于指定如何处理(ACTION)。再次查看规则,发现多了一条icmp针对任何位置不允许访问的规则。
4、再次用ubuntu来ping主机kali,发现 ping 不通了。
5、最后我们还是要执行iptables -F
和iptables -P INPUT ACCEPT
两条指令来恢复到之前的状态。
实践二:Snort
实践任务:使用Snort对给定的pcap文件进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机上使用Snort,对给给定的pcap文件进行入侵检测,获得报警日志。
- Snort运行命令提示如下:
- 从离线的pcap文件读取网络日志数据源。
- 在snort.conf中配置明文输出报警日志文件。
- 指定报警日志log目录(或缺省log目录=/var/log/snort)。
2、然后利用指令 snort -r /home/kali/listen.pcap -c /etc/snort/snort.conf -K ascii
对listen.pacp进行入侵检测, 其中-c
表示选择snort配置文件,-r
表示从pcap格式的文件中读取数据包,-K ascii
是用来指定输出日志文件的为ASCII编码。
如上图查看输出里检测出的数据包,可以看到大部分为tcp数据包~
4、进入报警日志目录 cd /var/log/snort , 查看日志文件 vim alert,可以发现本次攻击是使用nmap发起的。攻击主机的IP地址是 172.31.4.178 ,网络扫描的目标IP地址是 172.31.4.188 。
实践三:只允许特定IP访问主机网络服务
1、.使用命令iptables -A INPUT ! -s 192.168.200.4 -p icmp -j REJECT
,以除特定主机192.168.200.4外拒绝ICMP报文。
2、.我们使用ubuntu和Winxp来ping Kali,结果如图
3、可以看到只有Seed可以ping通,此时再查看iptables规则表,不能忘了使用iptables -F
可以删除规则表中内容,回归默认ACCEPT设置。
实践四:分析蜜网网关的防火墙和IDS/IPS配置规则。
实践任务:说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的?
- 上述脚本是如何实现蜜网的数据捕获和数据控制?
- 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
- 蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
- Bonus:蜜网网关中的Snort规则是如何自动升级的?
1、数据控制:
我们先查看防火墙的文件,执行命令vim /etc/init.d/rc.firewall
可以从上图中看到create_chains中新建了许多规则链:黑名单链、白名单链、防护链......
我们得到了;
- 防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包。
- 对于属于白名单的主机,接受且不记录。
- 对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机
2、数据捕获:就是记录的信息如:目的地址或端口、源地址或端口、使用的协议、长度等等
3、iptables的实际规则列表:
执行iptables -L
可以查看到实际的规则列表
我们可以发现默认规则:INPUT、FORWARD、OUTPUT都关闭了~
4、Snort实际执行参数:
我们先打开Snort脚本文件vim /etc/init.d/snortd
如上图我们可以看到:它是默认使用默认目录下的snort规则,监听网卡为eth0,默认储存路径为/var/log/snort~
5、Snort_inline实际执行参数:
执行命令vim /etc/init.d/hw-snort_inline
打开snort_inline的脚本文件查看实际执行参数
得到:各参数定义为:-D
表示Daemon模式,-c
表示读取config文件,-Q
表示使用QUEUE模式,-l
表示输出log文件的目录,-t
表示改变程序执行时所参考的根目录位置
6、防火墙、NIDS、NIPS启动:
执行命令chkconfig --list | grep [服务]
来查询当前服务是否开启
我们可以看到防火墙和NIPS(snort_inline)是跟随系统启动的,并且开机自动配置刚才的脚本文件。NIDS是需要手动启动的。
7、Snort规则如何自动升级:
在/etc
目录下执行命令vim honeywell.conf
来打开honeywall配置文件
我们可以找到snort规则更新的地方。可以看到默认是不自动更新的。可以推断它使用Oinkmaster进行了snort的自动升级。
三、学习中遇到的问题及解决方法
- 问题一、打开每一个虚拟机时总时会提示打不开
- 解决方法:百度说是网络适配器的设置有问题,但是我发现并不是这个问题。我发现只要提示打不开时就退出在重新进几次就能打开了。但实际的问题出在哪儿我没找出来~~~
- 问题二、几度在实验的过程中电脑卡死、黑屏。
- 解决方法;每次只能不厌其烦的重新开机重新实践,花了多出N倍的时间~
- 问题三、在做只允许特定ip访问的实践时在输入命令之后发现winxp依然可以ping的通
四、实践总结
这一次的实践在动手过程中还算是比较顺利,没有出现大问题。这次的实践作业对理解各工具、各参数的意义要求较高。还是需要提高自己的理解能力~
参考资料:
- Snort 命令参数详解:https://blog.csdn.net/jack237/article/details/6899465
- ptables命令使用详解:https://www.cnblogs.com/vathe/p/6973656.html