20199114 2019-2020-2 《网络攻防实践》第六周作业
一、实验内容
1.安全模型
概述:
为了保障CIA安全属性,信息安全领域提出了一系列的安全模型来指导信息系统安全体系建设,以增强信息系统的安全性。传统的安全评估和防范方法是通过对网络进行风险分析,制定相应的安全策略,然后采取一种或多种安全技术作为防护措施的。安全是一个相对的、动态的、不断完善的过程,需要适应变化的环境并能做出相应的调整以确保安全防护。基于这种考虑,信息安全领域进一步提出了一系列动态可适应网络安全的模型。
动态可适应网络安全模型基于闭环控制理论,典型模型是:
-
PDR(Protection、Detection、Response)模型:如果Pt(抵御入侵时间)>Dt(检测机制发现入侵的时间)+Rt(响应机制有效应对入侵的时间),那么这个信息系统安全。
-
P²DR(Policy、Protection、Detection、Response)模型:
基本描述为:网络安全=根据风险分析制定安全策略(Policy)+执行安全防护策略(Protection)+实时检测(Detection)+实时响应(Respection)
安全策略是模型的核心,所有的防护、检测、响应都是依据安全策略实施的,安全策略为安全管理提供管理方向和支持手段。
防护机制:采用一切手段保护信息系统的机密性、完整性、可用性、真实性和不可抵赖性。通常采用传统的静态安全技术及方法来实现,主要有防火墙、加密、身份认证和访问控制等方法。
检测机制:是动态响应和加强防护的一句,是强制落实安全策略的工具。通过不断地检测和监控网络和系统,发现新的威胁和弱点,并通过循环反馈来及时做出有效的响应。主要检测技术包括入侵检测(Intrusion Detection)和漏洞评估等。
2.网络安全防范技术与系统
2.1 防火墙技术概述
DEF:置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备。
从技术范畴上说,防火墙属于一种网络上的访问控制机制,通过在不同的网络安全域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求和策略设置决定是否允许网络访问通过防火墙,达到保护特定网络安全域免受非法访问和破坏的安全目标。
防火墙的功能:
防火墙可以在网络协议栈的各个层次上实施网络访问控制机制,对网络流量和访问进行检查和控制。
防火墙最基本的功能就是控制在计算机网络中不同信任程度网络域之间传送的数据流。防火墙技术通常能为网络管理员具体提供如下安全功能:
-
检查控制进出网络的网络流量:最基本的功能,通过检查网络流量的包头和协议状态信息,防火墙能够依据网络管理员设置的安全策略,来做出放行或者拒绝网络流量和网络访问的行为。
-
防止脆弱或不安全的协议和服务:防火墙可以通过过滤脆弱或不安全的服务而降低内部网络的安全风险。
-
防止内部网络信息的外泄:通过利用防火墙对内部网络的划分,可实现内部网重点网段的隔离,从而限制了局部重点或敏感网络安全问题对全局网络造成的影响。再者,隐私是内部网络非常关心的问题,使用防火墙就可以隐藏那些透露的内部细节,如Finger、DNS等服务。
-
对网络存取和访问进行监控审计:如果所有的网络访问都经过防火墙,那么防火墙就能记录下这些访问并做出日志记录,同时也能提供网络使用情况的统计数据。当发生可疑动作时,防火墙能进行适当的报警,并提供网络是否收到监测和攻击的详细信息。
-
防火墙可以强化网络安全策略并集成其他安全防御机制:通过以防火墙为中心的网络边界安全方案配置,能将许多安全机制(如口令、加密、身份认证、审计等)都配置在防火墙上。
防火墙的不足:
目前的防火墙技术并不能有效地应对某些类型的安全威胁,一方面是因为防火墙作为网络边界访问控制机制的先天不足,另一方面则是目前防火墙技术方面存在的瓶颈。
作为网络边界防护机制而先天无法防范的安全威胁包括如下:
- 来自网络内部的安全威胁:防火墙通常是位于内、外网连接处网路边界的安全防护设备,只能对内、外网之间的网络流量进行检查和控制,而对于来自内部网络的安全威胁,则无法进行监视和控制。
- 通过非法外联的网络攻击:防火墙无法阻止内部人员通过拨号等方式私自接入外部网络,也无法监视和控制这条非法增加的外联链路上的网络攻击行为。
- 计算机病毒传播:对于采用磁盘,U盘等非网络形式进行传播的计算机病毒,防火墙无法进行有效防范;对于采用网络传播方式的蠕虫、邮件病毒等恶意代码形态,在防火墙中可以集成反病毒引擎扫描、网络行为检测、应用层代理检测等技术,对这些恶意代码进行检测和防范。
由于技术瓶颈问题目前还无法有效防范的安全威胁包括如下:
- 针对开放服务安全漏洞的渗透攻击:防火墙通常情况下无法区分针对开放服务的正常访问和恶意攻击,除非能够对应用层数据进行深度检查,并结合安全漏洞的本质特征进行攻击检测和防御,但目前还未能有效地做到这一点。
- 针对网络客户端程序的渗透攻击:在防火墙上很难拿能够从这些网络流量中检测出针对客户端的渗透攻击,因为针对客户端程序的渗透攻击代码可以进行高度的混淆,即使防火墙能够对应用层数据进行深度检查,也难以对抗灵活的混淆机制,从而检测并防御这类攻击。
- 基于隐蔽通道进行通信的特洛伊木马或僵尸网络:对于那些使用HTTP隧道或其他隐蔽通道技术进行通信的木马或僵尸网络,防火墙也很难从大量安全策略放行的网络流量中对其进行识别和阻断。
2.2 防火墙技术和产品
在防火墙技术和产品发展过程中,形成和广泛采用的技术主要有:
-
包过滤技术:包过滤技术在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否转发该数据包,将一些不符合安全策略的数据包阻挡在网络边界处。
-
基于状态检测的包过滤技术:也称动态包过滤,维护所有通过防火墙的网络连接记录,并依此确定数据包是否属于一个新建的连接,或是已建连接的一部分,或是一个非法数据包。尽管该技术仍然使用一组静态规则进行安全策略匹配,但除了检查每个独立的数据包之外,还会试图跟踪数据包在网络连接上的上下文关系,并以网络连接状态作为一个附加的匹配标准,以确定是否允许和拒绝通信。
-
代理(Proxy)技术:允许客户端通过它与另一个网络服务进行非直接的连接,也称“网络代理”。提供代理服务的计算机或其它类型的网络节点称为代理服务器(Proxy Server)。
具体过程:客户端首先于代理服务器创建连接,接着发出一个对另外的目标服务器的文件或其他资源的连接请求,代理服务器通过与目标服务器连接或从缓存中取得请求的资源,并返回给客户端。
根据工作的网络协议栈层次的不同,代理技术包括:
-
应用层代理技术:针对某一种具体的应用层网络服务提供细致而安全的网络保护,能够理解应用层协议的数据内容,并进行深入全面的安全检查,从而为网络访问提供更好的安全保障。由于应用层代理必须理解应用层的协议,才能实现对应用层数据的检查和过滤,因此对于不同的应用服务必须配置不同的代理服务器。
优点:
- 网络内部的用户不直接与外部服务器通信,可以隐藏内部网络信息;
- 客户与服务器之间所有通信数据必须通过代理进行中转,而应用代理能够理解应用层数据内容格式,可以对应用层数据进行严格的检查;
- 应用代理代用存储转发机制,可以容易的实现在线审计;
- 可以提供用户级身份认证机制。
缺点:
- 对于不同的应用层服务,需要相应的应用代理服务程序,对用户不透明,需要用户配置代理;
- 解析和处理内容多,处理速度较慢,不适合应用在主干网络中;
- 不同服务的代理因为安全和效率方面的原因不同布置在同一服务器上,需要为每种服务单独配置代理服务器,代价较高;
- 通常无法支持非公开协议的服务。
-
电路级代理技术:技术原理和工作过程基本相似,不同的是,电路级代理工作在传输层,使用电路级代理可以同时为多种不同的应用服务提供支持,而不需要为不同的服务配置不同的代理程序。电路级代理类似于一个工作在TCP层上的中继,能够在两个TCP连接之间复制数据。电路级代理能够在中继过程中检查和处理各种异常的IP数据包,并能隐藏内部网络信息,同时也可以使用用户级的身份认证机制提供安全保障,但由于工作在传输层,故无法提供对应用服务协议内容的解析和安全性检查。
-
NAT(Network Address Translation)代理技术:网络地址转换时防火墙上通常实现的一项特殊代理技术,经常用于小型办公网络和家庭网络,用来允许多个用户分享少量或单一的IP地址,NAT技术工作在网络层。
原理:由内部网络发往外部网络的IP数据包,使用了私用IP地址段作为其源地址,在到达NAT代理后,将会把源IP地址和源端口部分替换成代理服务器的IP地址和另一指定的源端口,同时NAT代理将维护地址转换映射列表,将转换之前的私有网段源地址和原先端口号及转换之后的源端口号之间的映射关系记录在这个列表中,以供NAT代理在接受到该网络连接的响应包时,将其目的地址和目标端口转换为私有网段地址和源端口号,并发送给私有网段中的客户端主机。
优势:方便和安全
-
防火墙产品:
- 集成包过滤功能的路由器
- 基于通用操作系统的防火墙软件产品
- 基于安全操作系统的防火墙
- 硬件防火墙设备
- 个人防火墙产品
防火墙部署方法:
- 包过滤路由器:将带有包过滤防火墙功能的路由器安装在内部网络和外部网络的唯一连接点上。
- 双宿主堡垒主机:与包过滤路由器的部署方法类似,使用应用代理网关作为双宿主堡垒主机代替包过滤路由器。
- 屏蔽主机:相当于包过滤路由器和堡垒主机的集成,所有的访问数据都要经过两者。
- 屏蔽子网:在屏蔽主机模式的基础上,在内部主机之前又加了第二个包过滤防火墙。
2.3 Linux开源防火墙:netfilter/iptables
iptables与netfilter:iptables 是运行在用户空间的防火墙配置工具,是 netfilter 项目的一部分,通过控制运行在 Linux 内核空间的 netfilter 模块,来管理网络数据包的处理和转发。之所以称之为配置工具是因为实际的防火墙过滤功能由内核模块 netfilter 提供,iptables 只是负责提供用户可操作的过滤 rules 配置接口。
简而言之,用户空间的 iptables 制定防火墙规则,内核空间的 netfilter 实现防火墙功能,iptables/netfilter组合才是真防火墙。
iptables存在“表”、“链”和“规则”三个层面
-
规则(rules):规则其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
ACCEPT:运行通过
DEOP:直接丢弃
REJECT:拒绝通过
SNAT:源地址转换
DNAT:目标地址转换
MASQUERADE:特殊的 SNAT,适用于动态变更的 IP
LOG:记录日志信息
QUEUE:将数据包移交到用户空间
RETURN:防火墙停止执行当前链中的后续规则,并返回到调用链
REDIRECT:端口重定向
MARK:做防火墙标记 -
链(chain):是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
iptables 提供了以下 5 条链:
- INPUT 链:输入链。发往本机的数据报文通过此链。
- OUTPUT 链:输出链。从本机发出的数据报文通过此链。
- PORWARD 链:转发链。由本机转发的数据报文通过此链。
- PREROUTING 链:路由前链(Pre-Routing),在处理路由规则(Routing)前通过此链,通常用于目的地址转换(DNAT)。
- POSTOUTING 链:路由后链(Post-Routing),完成路由规则后通过此链,通常用于源地址转换(SNAT)。
-
表(tables):本质就是规则集的组织形式。用户在实际的使用中,往往是通过表作为操作入口,对规则进行定义,将不同的表挂载到链上,实现了作用域更大的规则应用效果。
iptables 提供了以下五种表:
iptables传输数据包的过程
- 当一个数据包进入网卡时,它首先进入Prerouting链,内核根据数据包目的IP地址判断是否需要转送出去。
- 如果数据包就是进入本机的,它就会沿着图向下移动,到达Input链,数据包到达Input链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过Output链,然后到达Postrouting链输出。
- 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过Forward链,然后到达Postrouting链输出。
iptables命令格式
iptables的命令格式比较复杂,一般的格式如下:
iptables [-t table] 命令 [chain] [Parameter] [-j target]
table选项:用于指定命令应用于哪个iptables内置表。
命令选项iptables命令格式:
- -P:定义默认规则
- -L:查看规则列表
- -A:在规则列表的最后增加一条规则
- -I:在指定的位置插入一条规则
- -D:在规则列表中删除一条规则
- -R:替换规则列表中的某条规则
- -F:删除表中所有规则
- -Z:将表中数据包计数器和流量计数器归零
匹配选项:
- -i:指定数据包从哪个接口进入
- -o:指定数据包从哪个网络接口输出
- -p:指定数据包匹配的协议
- -s:指定数据包匹配的源地址
- -sport <源端口号>:指定数据包匹配的源端口号,可以使用[起始端口号:结束端口号]的格式指定一个范围的端口
- -d:指定数据包匹配的目标地址
- -dport <目标端口号>:指定数据包匹配的目标端口号,可以使用[起始端口号:结束端口号]的格式指定一个范围的端口
动作选项:
- ACCEPT:接收数据包
- DROP:丢弃数据包
- REDIRECT:与DROP基本一样,区别在于它除了阻塞包之外,还像发送者返回错误信息
- SNAT:源地址转换,即改变数据包的源地址
- DNAT:目标地址转换,即改变数据包的目的地址
- MASQUERADE:IP伪装,即是常说的NAT技术,MASQUERADE只能用于ADSL等拨号上网的IP伪装,也就是主机的IP是由ISP分配动态的;如果主机的IP地址是静态固定的,就要使用SNAT
- LOG:日志功能,将符合规则的数据包的相关信息记录在日志中,以便管理员的分析和排错
3. 网络监测技术与系统
3.1 入侵检测技术概述
入侵检测作为网络防护体系中检测环节的关机支撑技术,已经成为防火墙等网络防御技术的必要补充,能够帮助信息系统应对网络攻击和入侵,扩展了系统管理员的安全感知能力,提高了网络安全防护体系架构的完整性。
入侵检测技术评估指标
- 检测率(True Positive):指入侵检测系统捕获到的攻击行为数目和全部攻击数目之比
- 误报率(False Positive):指入侵检测系统对正常行为的误报数目与入侵检测系统所输出的全部报警数目之比。
入侵检测技术
- 误用检测(Misuse Detection):也称特征检测,基于所有入侵行为都有可能被检测到的特征,通过收集已知入侵行为的特征并进行描述,构成攻击特征库,然后对收集信息进行特征模式匹配,所有符合特征描述的行为均被视为入侵。
- 异常检测:假设入侵者的行为和正常用户的行为具有差异,利用这些差异可以检测出入侵行为。此技术由于误报率较高通常无法单独承担入侵检测任务,而是与无用检测技术结合使用,以提高入侵检测系统的整体检测性能。
入侵检测系统
从入侵检测系统的检测数据来源,可以将入侵检测系统分为:
- 基于主机的入侵检测系统(Host-based IDS,HIDS):一般用来监视主机信息。
- 基于网络的入侵检测系统(Network-based IDS,NIDS):以其监听到的网络数据包作为分析数据源。
3.2 开源网络入侵检测系统:Snort
概述: Snort IDS(入侵检测系统)是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配。它能够检测各种不同的攻击方式,对攻击进行实时报警。此外,Snort是开源的入侵检测系统,并具有很好的扩展性和可移植性。
体系结构
Snort的结构由4大软件模块组成
- 数据包嗅探/解码器:负责监听网络数据包,对网络进行划分;
- 预处理器/插件:用相应的插件来检查原始数据包,从中发现原始数据的“行为”,经过预处理后才传到检测引擎;
- 检测引擎/插件:该模块是Snort的核心模块。当数据包从预处理器送来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块;
- 输出模块/插件:经检测引擎检查后的Snort数据需要以某种方式输出。
功能:数据包嗅探、数据包记录和分析、入侵检测
二、实践过程
1.实践一:防火墙配置
Q:配置Linux平台上的iptables,完成如下功能并测试
- 过滤ICMP数据包,使主机不接受ping包。
- 只允许特定IP地址访问主机的某一网络服务,而其他IP地址无法访问。
A1:
此次实践选用SEEDUbuntu、Kali和Meta三台虚拟机
VM | Role | IP Address |
---|---|---|
SEEDUbuntu | 服务器 | 192.168.200.4 |
Kali | 可信主机 | 192.168.200.2 |
Meta | 不可信主机 | 192.168.200.125 |
首先,在Kali上ping 192.168.200.4
,可以ping通
启动SEED,输入iptables -L
查看规则,发现都是默认规则。
此处需要先提权才可以查看
输入 iptables -A INPUT -p icmp -j DROP
,使SEED不接受ICMP数据报文。
命令格式在上文中有详细解释
打开Kali,在Kali上ping 192.168.200.4
,发现ping不通
再次在SEED上查看规则,多了一条来自任何位置发往任何位置的ICMP报文均丢弃的规则
最后输入iptables -F
删除自定义规则。
A2:
在Kali和Meta上均使用telnet登录SEED,均可以成功连接。
之后在SEED中输入iptables -P INPUT DROP
即丢弃一切输入的数据包,连接均断开,再输入iptables -A INPUT -p tcp -s 192.168.200.2 -j ACCEPT
,即开放Kali对SEED的tcp服务,再次查看规则,发现规则增加。
再次进行telnet访问,发现Kali可以正常访问,但是Meta不行
最后,输入iptables -F
和iptables -P INPUT ACCEPT
恢复初始状态。
2. 实践二:Snort
Q:使用Snort对给定的pcap文件进行入侵检测,并对检测出的攻击进行说明
A:
在Kali中输入snort -r /home/kali/Downloads/listen.pacp -c /etc/snort/snort.conf -K ascii
对listen.pacp
进行入侵检测,-K ascii
是为了使日志文件的编码为ASCII
查看日志,可以看到检测到的数据包大部分为TCP类型。
之后输入 cd /var/log/snort/
,在此目录下打开alert文件,可以看到这是nmap类型的攻击。
3. 实践三:分析蜜网网关的防火墙和IDS/IPS配置规则
Q:说明蜜网网关是如何利用防火墙喝入侵检测技术完成其攻击数据捕获和控制需求
- 上述脚本是如何实现蜜网的数据捕获和数据控制?
- 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
- 蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
- Snort规则是如何自动升级的?
A1:
-
数据控制
打开蜜罐网关,输入
su -
进行提权,输入vim /etc/init.d/rc.firewall
,打开iptables的配置文件各种参数(除-e),均在上文中有解释
在这张截图中,可以看到创建黑名单(BlackList)、白名单(WhiteList)和保护名单(FenceList)的条件。
-
数据捕获
A2:
在蜜罐输入iptables -L
可以查看实际规则列表
输入vim /etc/init.d/snortd
,查看snort的脚本文件,下图就是实际运行的参数。
输入 vim /etc/init.d/hw-snort_inline
打开snort_inline的脚本文件
A3:
输入chkconfig --list
即可查看哪些是自动启动的,如果从0~6全是off,那就不自动启动,查看NIDS为不自动启动,防火墙和NIPS为跟随系统自动启动。
A4:
输入vim /etc/honeywall.conf
,打开honeywall配置文件,可以看到snort规则自动更新的地方
默认为不自动更新
三、学习中遇到的问题及解决
Q:实践三的分析有点难,不知道咋分析。
A:通过百度和参考同学的博客稍微看的懂一点。
四、实践总结
本次动手实践部分比起前几次简单一些,但是实操起来还是有些课本上没法执行的命令。