20199111 2019-2020-2 《网络攻防实践》第六周作业

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表

20199111 2019-2020-2 《网络攻防实践》第六周作业_第1张图片

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通

20199111 2019-2020-2 《网络攻防实践》第六周作业_第2张图片

在kali中输入:

iptables -A INPUT -p icmp -j DROP #使得主机不接受icmp的数据包

此时再尝试ping接,失败

20199111 2019-2020-2 《网络攻防实践》第六周作业_第3张图片

输入iptables -L查看规则,看到不接受icmp的数据包的规则

20199111 2019-2020-2 《网络攻防实践》第六周作业_第4张图片

配置成功

最后输入iptables -F删除自定义规则,此时又可ping通

20199111 2019-2020-2 《网络攻防实践》第六周作业_第5张图片

2.1.2只允许特定IP地址访问主机的某一网络服务,而其他IP地址无法访问

使用kali与seed进行telnet连接,此时可以连接

20199111 2019-2020-2 《网络攻防实践》第六周作业_第6张图片

在seed中输入:

iptables -P INPUT DROP #拒绝一切的数据包流入

iptables -A INPUT -p tcp -s 192.168.6.3 -j ACCEPT #接受来自kali的数据包

20199111 2019-2020-2 《网络攻防实践》第六周作业_第7张图片

此时,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数据包

20199111 2019-2020-2 《网络攻防实践》第六周作业_第8张图片

在/var/log/snort/目录下打开alert文件,得到很多其他信息

20199111 2019-2020-2 《网络攻防实践》第六周作业_第9张图片

2.3分析蜜网网关的防火墙和IDS/IPS配置规则

  • 数据控制

打开iptables配置文件,输入:

vim /etc/init.d/rc.firewall

20199111 2019-2020-2 《网络攻防实践》第六周作业_第10张图片
20199111 2019-2020-2 《网络攻防实践》第六周作业_第11张图片

  • 对于属于黑名单的主机,丢弃所有包

  • 对于属于白名单的主机,接受数据包

  • 对于属于防护名单中的,是不允许被外部访问的蜜罐主机

  • 输入iptables -L可以查看实际规则列表,看到默认的规则OUTPUT、INPUT、FORWARD都已经被关闭了

20199111 2019-2020-2 《网络攻防实践》第六周作业_第12张图片

  • 输入vim /etc/init.d/snortd,查看snort的脚本文件,可以看到实际运行时候的参数

20199111 2019-2020-2 《网络攻防实践》第六周作业_第13张图片

  • 输入vim /etc/init.d/hw-snort_inline 打开snort_inline的脚本文件,可以获取Snort_inline实际执行参数

20199111 2019-2020-2 《网络攻防实践》第六周作业_第14张图片

  • 输入chkconfig --list | grep [服务]来查询当前服务是不是开启的,可以看到防火墙和NIPS(snort_inline)是跟随系统启动的,NIDS是需要手动启动的

  • 输入vim /etc/honeywall.conf,打开honeywall配置文件,可以看到snort默认为不自动更新

20199111 2019-2020-2 《网络攻防实践》第六周作业_第15张图片

3.学习中遇到的问题及解决

  • 问题1:2.3中部分指令无法执行

  • 问题1解决方案:获取更高权限(仍有无法执行的命令还未解决)

4.实践总结

本次实验操作部分偏少,分析内容偏多,做起来有些吃力,借鉴了一些同学的博客之后才有所进展,还需继续加深原理方面的理解。

参考资料

  • 《网络攻防技术与实践》
  • 《Snort入侵检测系统简介》

你可能感兴趣的:(20199111 2019-2020-2 《网络攻防实践》第六周作业)