20199324 2019-2020-2 《网络攻防实践》第6周作业
作业说明
这个作业属于哪个课程 :课程链接
这个作业的要求在哪里 :作业要求链接
我在这个课程的目标是 :学习网络攻防相关技术并进行实践
这个作业在哪个具体方面帮助我实现目标:学习网络安全防范的相关技术
作业正文
1.实践内容
安全模型
- 传统的安全评估和防范方法:通过对网络进行风险分析,制定相应的安全策略,然后采取一种或多种安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点,但忽略了网络安全的重要特征。
- 动态可适应网络安全模型:基于闭环控制理论,典型模型是 \(PDR\) 模型以及在其基础上提出的 \(P^2DR\) 模型。
- \(PDR\)安全模型:基于时间的动态安全模型,以经典的网络安全不等式 $ P_t>D_t+R_t$ 为本质基础,并提出安全性可量化和可计算的观点。
- \(P^2DR\) 安全模型:基于 \(PDR\) 安全模型,安全策略是模型核心,所有的防护、检测、响应都是依据安全策略实施的。
网络安全防范技术与系统
防火墙技术
- 定义:防火墙是目前最为成熟的网络防御技术之一。指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备。
- 检查的对象是网络流量或访问行为。
- 技术的关键特性:
- 只能对流经他的网络数据进行检查和控制,必须将防火墙部署在不同网络安全域之间的唯一通道上;
- 不具备主动检测区分网络攻击数据与合法数据的能力,因此要根据安全需求合理地设计安全策略规则;
- 无法保护来自网络内部的攻击。
- 功能:在网络协议的各个层次上实施网络访问控制机制,对网络流量和访问进行检查和控制。最基本的功能是控制在计算机网络中不同信任程度网络域之间传送的数据流。
- 为网络管理员提供的安全功能:
- 检查控制进出网络的流量
- 防止脆弱或不安全的协议和服务
- 防止内部网络信息的外泄
- 对网络存取和访问进行监控审计
- 可以强化网络安全策略并集成其他安全防御机制
- 不足:
- 先天无法防范的安全威胁包括:来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播传播。
- 由于技术瓶颈问题目前还无法防范的安全威胁包括:针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击、隐蔽通道进行通信的特洛伊木马或僵尸网络。
- 技术:
- 包过滤技术:在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包,将一些不符合安全策略的数据包阻挡在网络的边界处。
- 基于状态检测的包过滤技术:也称动态包过滤,仍然使用一组静态规则进行安全策略匹配,除了检查每个独立的数据包之外,还会试图跟踪数据包在网络连接的上下文关系,以确定是否允许通信。相比较传统的静态包过滤具有更加强大的安全功能,规则设施更加简单,同时保留了包过滤对用户的透明性,数据的合法性得到了有效的保障。
- 代理技术:允许客户端通过代理与另一个网络服务进行非直接的连接,也称“网络代理”。具体过程:客户端先与代理服务器创建连接,接着发出一个对另外的目标服务器的文件或其他资源连接请求,代理服务器与目标服务器连接或从缓存中取得请求的资源,返回给客户端。代理技术包括应用层代理(工作在应用层)、电路级代理(工作在传输层)和NAT代理(工作在网络层)等。
- 部署方法:
- 包过滤路由器:带有包过滤防火墙功能的路由器。
- 双宿主堡垒主机:应用代理网关作为双宿主堡垒主机。
- 屏蔽主机:堡垒主机和包过滤的结合。
- 屏蔽子网:在屏蔽主机的基础上增加第二道包过滤路由器。
Linux开源防火墙netfilter/iptables
- 概念:netfilter/iptables 组合是目前Linux开源操作系统中普遍使用的防火墙技术解决方案,其中 netfilter 是Linux内核中实现的防火墙功能模块, iptables 是应用态的防火墙管理工具。
- netfilter/iptables包含三个最基本的规则表:用于包过滤处理的filter表、用于网络地址转换处理的nat表、用于特殊目的数据包修改的mangle表。
- iptables的命令的语法为
iptables [-t table] command [match] [target]
。-t
指定配置规则所在的表,缺省表包括gilter、nat、mangle、raw等。cammand
就是告诉iptables命令要做什么,比如-A
就是在链表之后插入规则,-D
就是指定匹配的规则从链中删除该规则。match
部分为规则匹配条件,满足规则的数据包才会被采取措施。target
是满足规则之后要做什么,比如放行数据包ACCEPT - 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协议栈模拟、应用层协议解码、异常检测。
- 检测引擎:是主题模块,主要包括规则库解析、多模式匹配、规则插件。
- 输出模块:进行各种多样化的报警和日志记录。
网络安全事件响应技术
- 计算机取证:在安全事件的调查中对计算机系统进行详细检查,并对计算机犯罪的电子证据进行保护、确认、提取和归档的过程
- 攻击追溯与归因:找出真正实施网络攻击的来源,并确定出攻击者真实身份
- 备份恢复:在遭受网络安全事件之后快速恢复业务运转
2.实践过程
动手实践:防火墙配置
实践任务:配置Linux操作系统平台上的iptables,完成如下功能,并进行测试:
主机 | ip地址 |
---|---|
SEED | 192.168.200.6 |
Windxp | 192.168.200.2 |
kali | 192.168.200.3 |
1.过滤ICMP数据包,使得主机不接受Ping包;
- 先在SEED上
ping
主机kali,发现在正常状态下可以ping
通
- 在主机kali上通过
iptables -L
查看规则,发现都是默认规则。
- 执行
iptables -A INPUT -p icmp -j DROP
指令使得主机不接受icmp的数据包。其中-A
是追加新规则于指定链的尾部,INPUT
表示数据包入口(规则),-p
用于匹配协议,-j
用于指定如何处理(ACTION)。再次查看规则,发现多了一条icmp针对任何位置不允许访问的规则。
- 再次通过SEED
ping
主机kali,发现ping
不通了
- 使用
iptables -F
删除自定义规则。
2. 只允许特定IP地址(如局域网中的Linux攻击机192.168.200.6)访问主机的某一网络服务,而其他的IP地址(如Windows攻击机192.168.200.2)无法访问。
- 打开主机kali上的telnet服务
- 测试SEED和Winxp这两台机器是否可以进行telnet登录
- 接下来使用
iptables -P INPUT DROP
指令拒绝一切的数据包流入(修改的是默认规则-P
),此时发现两台机器都无法进行telnet访问。
- 使用指令
iptables -A INPUT -p tcp -s 192.168.200.6 -j ACCEPT
开启192.168.200.6
对主机kali的tcp服务。并用iptables -L
查看规则。
- 这时发现SEED是可以正常访问telnet服务的,但是Winxp是无法访问的。
- 最后执行
iptables -F
删除自定义规则,iptables -P INPUT ACCEPT
把没有规定的数据包都接收,恢复之前的状态。
动手实践:Snort
实践任务:使用Snort对给定的pcap文件进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机上使用Snort,对给给定的pcap文件进行入侵检测,获得报警日志。
- Snort运行命令提示如下:
- 从离线的pcap文件读取网络日志数据源;
- 在snort.conf中配置明文输出报警日志文件;
- 指定报警日志log目录(或缺省log目录=/var/log/snort)。
实践过程
- 还是使用之前实验的
listen.pcap
- 首先利用指令
snort -r /home/kali/listen.pcap -c /etc/snort/snort.conf -K ascii
对listen.pacp
进行入侵检测, 其中-c
表示选择snort配置文件,-r
表示从pcap格式的文件中读取数据包,-K ascii
是用来指定输出日志文件的为ASCII编码。 - 然后可以查看输出里检测出的数据包,可以看到大部分数据流为tcp会话
- 此时snort会在默认目录生成一个日志文件,进入报警日志目录
cd /var/log/snort
, 查看日志文件vim alert
,可以发现本次攻击是使用nmap发起的。攻击主机的IP地址是172.31.4.178
,网络扫描的目标IP地址是172.31.4.188
。
实践作业
分析虚拟网络攻防环境中密网网关的防火墙和IDS/IPS配置规则,并撰写分析报告,说明密网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
分析内容如下:
上述脚本是如何实现密网网关的数据捕获和数据控制机制?
-
数据捕获机制:iptables可以通过记录日志的形式来捕获网络连接信息,包括源地址,目的地址,使用的端口和进行连接的协议、长度等等;Snort对符合入侵检测特征的攻击数据包发出响应的报警信息,从而标识网络流中存在的攻击事件。
-
查看防火墙的文件
vim /etc/init.d/rc.firewall
-
可以看到创建了黑名单和白名单的规则链,还创建了很多协议数据包的处理规则链。
获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
-
获取IPTables的实际规则列表:通过
iptables -t filter -L
来查看规则列表。可以看到默认的规则入INPUT、FORWARD、OUTPUT都已经被关闭了。
-
获取Snort实际执行参数:通过
vim /etc/init.d/snortd
打开Snort脚本文件,可以看到些参数的选项:默认使用默认目录下的snort.conf规则,默认监听网卡为eth0,默认存储日志路径为/var/log/snort。
-
获取Snort_inline实际执行参数:执行命令
vim /etc/init.d/hw-snort_inline
打开snort_inline的脚本文件,可以看到到实际执行的参数。
密网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
- 使用
chkconfig -list
命令来对linux上运行的服务进行查询,可以发现NIDS的0~6都是off,说明是需要手动启动的,而防火墙和NIPS不全是off,是跟随系统启动的。
密网网关中的Snort规则是如何自动升级的?
- 经过查阅资料得知有一个免费的工具Oinkmaster是Snort社区中的实际规则更新工具。通过文件查找发现了
oinkmaster.conf
文件。
- 使用
vim /etc/oinkmaster.conf
打开该文件,发现了snort.conf文件,可以推断这里使用工具Oinkmaster进行了snort的自动升级。
3.学习中遇到的问题及解决
- 问题1:执行
vim /etc/init.d/rc.firewall
后发没有内容。 - 问题1解决方案:在蜜罐中要使用
su -
提权之后才能查看rc.firewall
文件。 - 问题2:蜜罐如何进行翻页
- 问题2解决方案:shift+page up/down
4.实践总结
本次实践内容不太多,和前几次实践时间相比较花费时间较少,最后一个实验有点费力,对于分析脚本是如何实现密网网关数据控制机制这里看不太懂,基本上是参考前面同学博客进行学习和分析的,理解不够。