20199111 2019-2020-2 《网络攻防实践》第六周作业
1.实践内容
1.1安全模型
-
静态安全模型:对网络进行风险分析,制定相应的安全策略,然后采取安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点。
-
PDR安全模型:基于闭环控制理论的时间动态可适应网络安全模型,以经典的网络安全不等式P>D+R(保护、检测、响应)为本质基础,并提出安全性可量化和可计算的观点。
-
P2DR安全模型:基于PDR安全模型提出,增加了Policy分析制定安全策略,并以此为核心,所有的防护、检测、响应都是依据安全策略实施的。
1.2防火墙技术
防火墙指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备,达到保护特定网络安全域免受非法访问和破坏的安全目标
Linux系统中提供了开源的netfilter/iptables解决方案,可以帮助网络管理员在自己的网络中快速实施防火墙边界保护。具体提供:
-
检查控制进出网络的网络流量
-
防止脆弱或不安全的协议和服务
-
防止内部网络信息的外泄
-
对网络存取和访问进行监控审计
-
防火墙可以强化网络安全策略并集成其他安全防御机制
netfilter/iptables工作原理:
在nefilter/iptables防火墙系统中,netfilter组件位于Linux的内核空间中,实现了静态包过滤和状态报文检查(即动态包过滤)基本防火墙功能,此外也支持NAT网络地址转换等其他额外功能,并提供了多层API接口以支持第三方扩展,netfilter具备构建防火墙、NAT共享上网、利用NAT构建透明代理,以及构建QoS或策略路由器等安全功能。Iptables则是工作在Linux用户空间中的防火墙配置工具,通过命令行方式允许用户为nefilter配置各种防火墙过滤和管理规则
netfilter/iptables中包含三个最基本的规则表,分别为用于包过滤处理的filter表、用于网络地址转换处理的nat表,以及用于特殊目的数据包修改的mangle表
iptables的命令的语法为:
iptables -t [table] command [match] [target]
-t指定配置规则所在的表
command部分是iptables命令的最重要部分,它告诉iptables命令要做什么
Match部分为规则匹配条件,指定数据包与规则匹配所应具有的特征,匹配条件分为两大类:通用匹配和特定协议匹配,通用匹配为可用于采用任何协议的数据包进行的匹配条件
Target部分指定满足匹配条件之后的目标操作,即对与那些规则匹配的数据包执行的处理操作
防火墙也有不足,由于它的先天而无法防范的有:
-
来自网络内部的安全威胁
-
通过非法外联的网络攻击
-
计算机病毒传播
由于技术瓶颈技术而无法防范的有:
-
针对开放服务安全漏洞的渗透攻击
-
针对网络客户端程序的渗透攻击
-
基于隐蔽通道进行通信的特洛伊木马或僵尸网络
1.3网络入侵检测
评估指标:
-
检测率:系统捕获到的攻击行为与全部攻击行为比值
-
误报率:对正常行为的误报数与全部报警数的比值
检测技术:
-
误用检测:假设所有的入侵行为都有可以被检测的特征。通过收集已知入侵行为的特征,形成指纹库,对每个行为进行比对来判定是不是入侵
-
异常检测:假设入侵者的行为和正常用户的行为具有差异,利用这些差异可以检测出入侵行为
Snort 体系结构:
-
数据包嗅探模块——负责监听网络数据包
-
预处理模块——该模块用相应的插件来检查原始数据包,从中发现原始数据的“行为”,如端口扫描,IP碎片等,数据包经过预处理后才传到检测引擎
-
检测模块——该模块是Snort的核心模块。当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块
-
报警/日志模块——经检测引擎检查后的Snort数据需要以某种方式输出。如果检测引擎中的某条规则被匹配,则会触发一条报警,这条报警信息会通过网络、UNIXsocket、WindowsPopup(SMB)、SNMP协议的trap命令传送给日志文件,甚至可以将报警传送给第三方插件(如SnortSam),另外报警信息也可以记入SQL数据库
Snort的每条规则都可以分成逻辑上的两个部分:规则头和规则体
规则头:
-
pass—动作选项pass将忽略当前的包,后继捕获的包将被继续分析
-
log—动作选项log将按照自己配置的格式记录包
-
alert—动作选项alert将按照自己配置的格式记录包,然后进行报警。它的功能强大,但是必须恰当的用,因为如果报警记录过多,从中攫取有效信息的工作量增大,反而会使安全防护工作变得低效
-
dynamic—动作选项dynamic是比较独特的一种,它保持在一种潜伏状态,直到activate类型的规则将其触发,之后它将像log动作一样记录数据包
-
activate—动作选项activate功能强大,当被规则触发时生成报警,并启动相关的dynamic类型规则
规则体:
规则体的作用是在规则头信息的基础上进一步分析,有了它才能确认复杂的攻击
下面是一个规则实例
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”
2.实践过程
2.1防火墙配置
机器 | IP地址 |
---|---|
Kali | 192.168.6.3 |
MetaSploitable Linux | 192.168.6.125 |
SEED Ubuntu | 192.168.6.5 |
2.1.1过滤ICMP数据包,使主机不接受ping包
首先使用 seed ping接kali ,此时可以ping通
在kali中输入:
iptables -A INPUT -p icmp -j DROP #使得主机不接受icmp的数据包
此时再尝试ping接,失败
输入iptables -L
查看规则,看到不接受icmp的数据包的规则
配置成功
最后输入iptables -F
删除自定义规则,此时又可ping通
2.1.2只允许特定IP地址访问主机的某一网络服务,而其他IP地址无法访问
使用kali与seed进行telnet连接,此时可以连接
在seed中输入:
iptables -P INPUT DROP #拒绝一切的数据包流入
iptables -A INPUT -p tcp -s 192.168.6.3 -j ACCEPT #接受来自kali的数据包
此时,kali与seed可以telnet连接,meta无法与seed进行telnet连接
设置成功
同上进行自定义规则删除
2.2Snort
将之前实验使用过的listen.pcap文件拖拽入kali桌面,输入命令:
snort -r listen.pcap -c /etc/snort/snort.conf -K ascii #对listen.pacp进行入侵检测
看到检测出的数据包大多为Tcp数据包
在/var/log/snort/目录下打开alert文件,得到很多其他信息
2.3分析蜜网网关的防火墙和IDS/IPS配置规则
- 数据控制
打开iptables配置文件,输入:
vim /etc/init.d/rc.firewall
-
对于属于黑名单的主机,丢弃所有包
-
对于属于白名单的主机,接受数据包
-
对于属于防护名单中的,是不允许被外部访问的蜜罐主机
-
输入
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:2.3中部分指令无法执行
-
问题1解决方案:获取更高权限(仍有无法执行的命令还未解决)
4.实践总结
本次实验操作部分偏少,分析内容偏多,做起来有些吃力,借鉴了一些同学的博客之后才有所进展,还需继续加深原理方面的理解。
参考资料
- 《网络攻防技术与实践》
- 《Snort入侵检测系统简介》