20199115 2019-2020-2 《网络攻防实践》第六周作业
1.实践内容
安全模型
-
静态安全模型:对网络进行风险分析,制定相应的安全策略,然后采取安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点。
-
PDR安全模型:基于闭环控制理论的时间动态可适应网络安全模型,以经典的网络安全不等式P>D+R(保护、检测、响应)为本质基础,并提出安全性可量化和可计算的观点。
-
P2DR安全模型:基于PDR安全模型提出,增加了Policy分析制定安全策略,并以此为核心,所有的防护、检测、响应都是依据安全策略实施的。
网络安全防范技术与系统
防火墙技术概述
-
防火墙指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备,达到保护特定网络安全域免受非法访问和破坏的安全目标。
-
功能:
-
检查控制进出网络的流量。
-
防止脆弱或不安全的协议和服务。
-
防止内部网络信息的外泄。
-
对网络存取和访问进行监控审计。
-
强化网络安全策略并集成其他安全防御机制。
-
-
不足:
-
先天:无法防范包括来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播的传播。
-
技术瓶颈:无法防范包括针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击和隐蔽通道进行通信的特洛伊木马或僵尸网络。
-
防火墙技术和产品
-
技术:
-
包过滤技术:在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包(简单、安全功能有限)。
-
基于状态检测的包过滤技术:也称动态包过滤。除了使用静态规则进行安全进行安全策略匹配,还进行数据包的网络连接的上下文关系探测,来确定是否允许通信。这种技术相比较传统的包过滤技术安全性更高,数据合法性得到了更有效的保障(对网络性能有一定的影响)。
-
代理技术:允许客户端通过代理与网络服务进行非直接的连接,也称“网络代理”。主要是客户端与代理服务器连接,代理服务器再与目标服务器连接。代理技术包括应用层代理(工作在应用层)、电路级代理(工作在传输层)和NAT代理(工作在网络层)等。
-
-
产品:
-
集成包过滤功能的路由器
-
基于通用操作系统的防火墙软件产品
-
基于安全操作系统的防火墙
-
硬件防火墙设备
-
-
部署方法:
- 包过滤路由器:带有包过滤防火墙功能的路由器。
- 双宿主堡垒主机:应用代理网关作为双宿主堡垒主机。
- 屏蔽主机:堡垒主机和包过滤的结合。
- 屏蔽子网:在屏蔽主机的基础上增加第二道包过滤路由器。
Linux开源防火墙:netfilter/iptables
-
netfilter是Linux内核中实现的防火墙功能模块,iptables则是应用态的防火墙管理工具。
-
iptables简介
netfilter/iptables(简称为iptables)组成 Linux 平台下的包过滤防火墙,与大多数的Linux 软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
-
iptables基础
规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。 -
iptables传输数据包的过程
-
当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
-
如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
-
如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
-
-
iptables命令格式:
网络检测技术与系统
入侵检测技术概述
-
评估指标:检测率(系统捕获到的攻击行为与全部攻击行为比值)和误报率(对正常行为的误报数与全部报警数的比值)。
-
技术类型:特征检测(匹配特征库)、异常检测(检测与正常用户在统计方面的差别)。二者通常结合使用,提高入侵检测系统的整体检测性能。同时,基于这两种技术,也可以对入侵检测系统进行分类。
-
入侵防御系统:也叫内嵌式入侵检测,即对检测到的异常行为或者与特征库匹配的行为直接进行阻断,断开访问。
开源网络入侵检测系统:Snort
-
简介:Snort是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配,可以检测各种不同的攻击方式,对攻击进行实时报警等。
-
四大模块:数据包嗅探模块、预处理模块(用相应的插件来检查原始数据包)、检测模块(检测引擎依据预先设置的规则检查数据包)、报警/日志模块(经检测引擎检查后的Snort数据输出)。
-
三种工作模式:嗅探模式(从网络上读取数据包,常用命令snort -dev)、数据包记录模式(把数据包记录到硬盘上,常用命令snort -b)、网络入侵检测模式(载入规则库才能工作,Snort并不记录所有捕获的包,而是将包与规则对比,仅当包与某个规则匹配的时候,才会记录日志或产生报警)。
-
分析一个规则实例:
alert tcp !192.168.0.1/24 any ->any 21 (content:"USER";msg: "FTP Login"; ),【alert表示规则动作为报警,tcp表示协议类型为TCP协议,
!192.168.0.1/24
表示源IP地址不是192.168.0.1/24,第一个any表示源端口为任意端口,->
表示发送方向操作符,第二个any表示目的IP地址为任意IP地址,21表示目的端口为21,content:"USER"
表示匹配的字符串为“USER”,msg:"FTPLogin"
表示报警信息为“FTPLogin”,此外,还有一个双向操作符<>,它使Snort对这条规则中,两个IP地址/端口之间的数据传输进行记录/分析。
网络安全事件响应技术
-
网络安全事件响应组织与机构:计算机安全事件响应小组(CSITRT)
-
网络安全事件响应过程中涉及的关键技术包括:计算机取证、攻击追溯与归因、备份恢复与灾难恢复等
2.实践过程
防火墙配置
实践任务:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试:
(1)过滤ICMP数据包,使得主机不接收Ping包:
(2)只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP, HTTP, SMB),而其他的IP地址(如Windows攻击机192.168.200.4)无法访问。
-
首先在SEED Ubuntu上通过
iptables -L
查看一下规则。 -
通过指令
iptables -A INPUT -p icmp -j DROP
指令使得主机不接受icmp的数据包。指令详解:-A
是追加一条规则,INPUT
表示数据包入口(规则),-p
用于匹配协议,-j
用于指定如何处理(ACTION)。 -
此时通过Kali ping SEED Ubuntu,发现是ping不通的,并且可以查看规则,发现多了一条icmp针对任何位置不允许访问的规则。
-
最后使用
iptables -F
删除自定义规则。过滤ICMP数据包实践完成。 -
根据题目要求,首先得确定一下各自虚拟机充当的角色,以SEED Ubuntu(192.168.100.4)作为服务器,利用Kali(192.168.200.2)访问SEED Ubuntu,Kali作为信任主机,Linux MetaSploitable(192.168.200.125)作为不可信任主机。只允许Kali访问SEED Ubuntu的telnet服务。
-
首先确定都可以进行telnet登录。
-
使用
iptables -P INPUT DROP
拒绝seedUbuntu一切的数据包流入(修改的是默认规则-P),此时应该两台电脑都无法进行访问。 -
使用指令
iptables -A INPUT -p tcp -s 192.168.200.2 -j ACCEPT
开启192.168.200.2对本机的tcp服务。并用iptables -L查看规则。 -
此时,我们可以看到kali是可以正常telnet访问的,而MetaSploitable无法访问
Snort
任务:使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件)进行入侵检测,并对检测出的攻击进行说明。
在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
Snort运行命令提示如下:
-
从离线的pcap文件读取网络日志数据源。
-
在snort.conf中配置明文输出报警日志文件。指定报警日志log目录(或缺省log目录=/var/og/snort) 。
-
首先利用指令
snort -r listen.pacp -c /etc/snort/snort.conf -K ascii
对listen.pacp进行入侵检测,-K ascii主要是为了指定输出log文件的编码为ASCII(默认为binary)。我们可以看到检测出的数据包大部分为TCP数据包 -
在/var/log/snort/目录下可以查找到alert文件,这个文件即输出的日志文件,通过vim打开可以发现这个攻击是nmap发起的,当然还有很多其他的信息,譬如源地址、目的地址等等。
实践作业
分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/PS配置规则,并撰写分析报告,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。具体分析配置规则与启动项文件包括:
-
防火墙(netfilter+IPTables) : letc/init.d/rc.firewall;
-
入侵检测系统(Snort) : letc/init.d/hflow-snort与/etc/snort/snort.conf;
-
入侵防御系统(Snort inline) : letc/init.d/hflow-snort inline与/etc/snort inline/snortinline.conf.
分析内容如下:
-
上述脚本是如何实现蜜网网关的数据捕获和数据控制机制?
-
获取IPTables的实际规则列表、Snort和Snort inline的实际执行参数。
-
蜜网网关开机之后,防火墙、NIDS、 NIPS是如何启动的?
-
Bonus:蜜网网关中的Snort规则是如何自动升级的?
-
在蜜罐中使用
su -
提权,vim /etc/init.d/rc.firewall
查看rc.firewall文件,可以看出创建了一个链,如果目的地址属于黑名单的主机,丢弃所有包。如果属于白名单的主机,接受且不记录。如果属于防护名单内的主机,禁止访问某些不希望被访问到的主机。 -
数据捕获:
-
防火墙的日志记录:记录的只是简单的信息如目的地址/端口、源地址/端口、协议、长度等。
-
Snort记录的网络流。
-
-
iptables -L
可以查看实际规则列表,看到默认的规则OUTPUT、INPUT、FORWARD都已经被关闭了 -
输入
vim /etc/init.d/snortd
,查看snort的脚本文件 -
文件的前半部分是一些选项和一些默认的缺省值,后半部分就是需要的实际执行参数
-
输入
vim /etc/init.d/hw-snort_inline
打开snort_inline的脚本文件,可以获取Snort_inline实际执行参数 -
输入
chkconfig --list | grep [服务]
来查询当前服务是不是开启的,可以看到防火墙和NIPS(snort_inline)是跟随系统启动的,NIDS是需要手动启动的 -
输入
vim /etc/honeywall.conf
,打开honeywall配置文件,可以看到snort默认为不自动更新
3.学习中遇到的问题及解决
- 问题:部分代码文件不能看懂
- 问题1解决方案:参考同学们的分析,自己查找资料,慢慢悟吧!
4.实践总结
这章还是有一部分内容认识和理解不到位。。。还得继续原理方面的理解