20199106 2019-2020-2 《网络攻防实践》第六周作业
20199106 2019-2020-2 《网络攻防实践》第六周作业
作业说明
这个作业属于哪个课程 | 网络攻防实践 |
---|---|
这个作业的要求在哪里 | 第六次作业: 网络安全防范技术 |
我在该课程的目标 | 对网络攻防技术有一个比较全面的认识,能够掌握基本的攻防操作。 |
这个作业在哪个具体方面帮助我实现目标 | 学习了网络安全防范技术与系统和网络监测技术与系统。 |
作业正文
实践内容
安全模型:
- 传统安全评估和防范模型:通过对网络进行风险分析,制定相应的安全策略,然后采取一种或多种安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点,但忽略了网络安全的重要特征。
- 动态可适应网络安全模型:基于闭环控制理论,典型模型是\(PDR\)模型以及在其基础上提出的\(P^2DR\)模型。
- \(PDR\)安全模型:基于时间的动态安全模型,以经典的网络安全不等式\(P_t>D_t+R_t\)
(如果防御机制能够抵御入侵的时间\(P_t\)能够超过监测机制发现入侵的时间\(D_t\)和防御机制有效应对入侵的时间\(R_t\)之和,则 这个信息系统是安全的)为本质基础,并提出安全性可量化和可计算的观点。 - \(P^2DR\)安全模型:基于\(PDR\)安全模型,安全策略是模型核心,所有的防护、检测、响应都是依据安全策略实施的。
- \(PDR\)安全模型:基于时间的动态安全模型,以经典的网络安全不等式\(P_t>D_t+R_t\)
网络安全防范技术与系统
- 防火墙技术
-
定义:防火墙指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备,达到保护特定网络安全域免受非法访问和破坏的安全目标。检查的对象是网络流量或访问行为。
-
功能:
- 检查控制进出网络的流量。
- 防止脆弱或不安全的协议和服务。
- 防止内部网络信息的外泄。
- 对网络存取和访问进行监控审计。
- 强化网络安全策略并集成其他安全防御机制。
-
不足:
- 先天不足:无法防范来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播传播。
- 技术瓶颈问题带来的不足:无法防范针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击、隐蔽通道进行通信的特洛伊木马或僵尸网络。
-
技术:
- 包过滤技术:在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,将一些不符合安全策略的数据包阻挡在网络的边界处。
- 基于状态检测的包过滤技术:也称动态包过滤,仍然使用一组静态规则进行安全策略匹配,除检查每个独立的数据包外,还试图跟踪数据包在网络连接的上下文关系,以确定是否允许通信。相比较传统的静态包过滤,功能更强大,规则设施更简单,同时保留了包过滤对用户的透明性,数据的合法性得到了有效的保障。
- 代理技术:允许客户端通过代理与另一个网络服务进行非直接的连接,客户端先与代理服务器创建连接,接着发出一个对另外的目标服务器的文件或其他资源连接请求,代理服务器与目标服务器连接或从缓存中取得请求的资源,返回给客户端。
-
部署方法:包过滤路由器、双宿主堡垒主机、屏蔽主机、屏蔽子网。
-
Linux开源防火墙netfilter/iptables
netfilter/iptables组合是目前Linux开源操作系统中普遍使用的防火墙技术解决方案,其中 netfilter是Linux内核中实现的防火墙功能模块, 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伪装、透明代理、端口转发和其他形式的网络地址转换技术。
-
网络检测技术与系统
- 入侵检测技术:最核心的任务是信息分析,从中识别出攻击行为。包括误用检测和异常检测。二者通常结合使用,提高入侵检测系统的整体检测性能。
- 入侵检测系统的分类:基于主机的入侵检测系统(HIDS)、基于网络的入侵检测系统。
- 入侵防御系统IPS:也叫内嵌式IPS,即对检测到的异常行为或者与特征库匹配的行为直接进行阻断,断开访问。
- 开源网络入侵检测系统Snort:
- 功能:数据包嗅探、数据包记录和分析以及各种入侵检测功能。
- 主要部件:数据包嗅探、预处理器、检测引擎、输出模块/插件。
实验过程
实践一:防火墙配置
任务:配置Linux平台上的iptables,完成如下功能并测试:
1、过滤ICMP数据包,使主机不接受ping包。
2、只允许特定IP地址访问主机的某一网络服务,而其他IP地址无法访问。
实验环境
实验环境 | IP地址 |
---|---|
seedUbuntu | 192.168.200.4 |
linux Metasploitable | 192.168.200.125 |
kali | 192.168.200.2 |
过滤icmp数据包:
- 首先在SEED Ubuntu上通过
iptables -L
查看规则,发现都是默认规则。 - 通过指令
iptables -A INPUT -p icmp -j DROP
指令使得主机不接受icmp的数据包。-A
是追加一条规则,INPUT
表示数据包入口(规则),-p
用于匹配协议,-j
用于指定如何处理(ACTION)。此时再用iptables -L
指令查看规则,发现已经更改,多了一条icmp针对任何位置不允许访问的规则。
- 分别用kali和linux靶机ping seed Ubuntu,发现ping不通。
允许特定IP地址访问主机的某一网络服务
这里选择:只允许Ubuntu访问Linux靶机的telnet服务。
1、首先使用iptables -D INPUT 1
删除自定义规则。试着用kali ping一下ubuntu发现又可以ping通了。
2、分别在seed Ubuntu和kali上通过telnet
登陆linux靶机,发现都可以登陆。
3、在Linux靶机中,使用iptables -I INPUT -p tcp --dport 23 -j DROP
指令,拒绝所有tcp数据包访问Linux靶机telnet
端口,此时,两个虚拟机都无法登陆Linux。
4、再执行指令iptables -I INPUT -P tcp --dport 23 -s 192.168.200.4 -j ACCEPT
,允许seed Ubuntu访问telnet
端口。使用iptables -L
可查看到更新后的规则。
5、此时,kali就不能登陆linux靶机了。
实践二:Snort
任务:使用Snort对给定的pcap文件进行入侵检测,并对检测出的攻击进行说明。
在BT4 Linux攻击机上使用Snort,对给给定的pcap文件进行入侵检测,获得报警日志。
Snort运行命令提示如下:
- 从离线的pcap文件读取网络日志数据源;
- 在snort.conf中配置明文输出报警日志文件;
- 指定报警日志log目录(或缺省log目录=/var/log/snort)。
这里件离线的pcap文件用的还是第四章的listen.pcap文件。
-
首先利用指令
snort -r listen.pacp -c /etc/snort/snort.conf -K ascii
对listen.pacp进行入侵检测,其中-c
表示选择snort配置文件,-r
表示从pcap格式的文件中读取数据包,-K ascii
主要是为了指定输出log文件的编码为ASCII(默认为binary)。 -
查看输出,我们可以看到检测出的数据包大部分为TCP数据包。
- 在
/var/log/snort/
目录下可以查找到alert
文件,这个文件即输出的日志文件,通过vim打开可以发现这个攻击是nmap发起的,还可以找出源地址、目的地址等等。
实践三:分析蜜网网关的防火墙和IDS/IPS配置规则。
任务:说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求
- 上述脚本是如何实现蜜网的数据捕获和数据控制?
- 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
- 蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
- Snort规则是如何自动升级的?
1、上述脚本是如何实现蜜网的数据捕获和数据控制?
通常数据控制包括防火墙对数据的控制和IPS对异常数据的限制(snort_inline)。使用命令vim /etc/init.d/rc.firewall
查看防火墙的文件,我们可以看到创建了三个链,分别是黑名单、白名单、防护名单(FenceList),
- 防火墙对源地址或者目的地址属于黑名单的主机:丢弃所有包。
- 对于属于白名单的主机:接受且不记录。
- 对于属于防护名单内的主机:禁止访问某些不希望被访问到的主机。
2、获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
获取IPTables的实际规则列表:通过 iptables -t filter -L
来查看规则列表。没有找到命令。加入环境变量,使用/sbin/iptables -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的脚本文件,可以看到到实际执行的参数。
3、密网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
使用 chkconfig -list
命令来对linux上运行的服务进行查询,没有找到命令。同样的,还是加入环境变量,使用/sbin/chkconfig --list命令,就可以查询成功。可以发现NIDS的0~6都是off,说明需要手动启动,而防火墙和NIPS不全是off,是跟随系统启动的。
4、密网网关中的Snort规则是如何自动升级的?
工具Oinkmaster是Snort社区中的实际规则更新工具。使用命令find /etc/ -name "oinkmaster.*"
查找到oinkmaster.conf 文件。
使用指令vim /etc/oinkmaster.conf
打开该文件,发现了snort.conf文件,可以推断这里使用工具Oinkmaster进行了snort的自动升级。
学习中遇到的问题及解决
问题一:虚拟机开机总显示内存不足。
解决:将虚拟机的内存改小。
问题二:Linux靶机老是ping不通。
解决:网络适配器改为NAT模式。
问题三: 没有找到iptables
和chkconfig
命令。
解决:执行命令时需使用完整路径,因为存放命令的/sbin目录不在环境变量中。
问题四:编辑公式显示出问题。
解决:没有开启公式编辑支持模式。
学习感想和体会
这次实验操作不太多,除了问题三外其他部分做得还比较顺,但是如果要我独立分析一些文件,还是比较困难的,主要还是因为学得不系统,原理不够理解。最后感谢同学们的帮助。