20199102 2019-2020-2 《网络攻防实践》第六周作业
1.实践内容
1.1 安全模型
- PDR模型:是一种基于时间的动态安全模型,并提出安全性可量化和可计算的观点
- $P^2DR$安全模型:基本描述为:网络安全=根据风险分析制定安全策略(Policy)+ 执行安全防护策略(Protection)+ 实时检测(Detection)+ 实时响应(Response)
1.2 网络安全防范技术与系统
-
防火墙技术:防火墙技术属于一种网络上的访问控制机制,通过在不同网络安全域之间建立起安全控制点,通过对网络传输数据进行检查,根据具体的安全需求和策略设置是否允许网络访问通过防火墙。
- 防火墙的功能:检查控制进出的网络的网络流量、防止脆弱或不安全的协议和服务、防止内部网络信息的外泄、对网络存取和访问进行监控审计和防火墙可以强化网络安全策略并集成其他安全访问机制。
- 防火墙的不足:来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播、针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击和基于隐蔽通道进行通信的特洛伊木马和僵尸网络。
-
防火墙技术和产品:
- 包过滤技术:运行在网络互连层,通过对网络层和传输层的包头信息进行检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包,将一些不符合安全策略的数据包阻挡在网络的边界处。
- 基于状态检测的包过滤技术:维护所有通过防火墙的网络连接纪录,并依此确定数据包是否属于一个新建的连接,或是已建连接的一部分,或是一个非法数据包。
- 代理技术:分为应用层代理数据、电路级代理技术和NAT代理技术
- 应用层代理技术工作在应用层,针对某一种拘役的应用层网络服务提供细致而安全的网络保护,能够理解应用层协议的数据内容,并进行深入的安全检查
- 电路级代理技术:工作在传输层,可以同时对多种应用服务提供支持。
- NAT代理技术:工作在网络层,将内外网络传递的数据进行网络地址和端口的映射,将公网信息的目的地址转换为私有网段地址和源端口号。
- 防火墙产品:集成包过滤功能的路由器、基于通用操作系统的防火墙软件产品、基于安全操作系统的防火墙和硬件防火墙设备
- 防火墙部署方法:为了更好的达到安全保护效果,对常见的防火墙部署方式进行简要介绍:
- 包过滤路由器:将带有包过滤功能的路由器作为内部网络和外部网络之间的唯一连接点,路由器在完成数据包转发的基本功能的同时,依据访问控制表对数据包进行过滤。
- 双宿主堡垒主机:使用应用代理网关作为双宿主堡垒主机,代替了包过滤路由器。双宿主堡垒主机有两个网络接口,一个使用公网IP地址连接外部网络,另一个使用私有IP地址进行连接内部网络。
- 屏蔽主机:采用屏蔽路由和堡垒主机双重安全措施
- 屏蔽子网:采用屏蔽路由---堡垒主机---屏蔽路由的防火墙部署模式。其中应用代理服务器和对外开放服务器所处的网段也被成为DMZ。
-
Linux开源防火墙:netfilter/iptables
-
简介:IP信息包过滤系统,实际上由两个组件netfilter和iptables组成,其中netfilter是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集;iptables是一种工具,用来插入、修改和删除信息包过滤表中的规则变得更容易。下面将从数据流向、链、表、链表关系和处理规则等方面来介绍。
-
数据流向:iptables将数据的流动分为五个“关卡”, 分别是
prerouting
用于目标地址转换(DNAT)进站进行的过滤、forward
处理转发数据包、postrouting
用于源地址转换(SNAT)出站进行的过滤、input
处理输入数据包和output
处理输出数据包。相关的五个“关卡”按照如下的方式进行设置。来源见水印 -
链:上文所说的“关卡”就是一种报文通过的规则以通过时执行的动作,但是每个关卡上可能有不止一个规则,我们将这些规则串到同一条链上,就形成了“链”。具体表示如下图,来源见水印
-
表:表和链更像是从两个不同的维度对规则进行分类。我们将具有相同功能的规则的集合叫做表,不同功能的规则放置在不同的表中进行管理。
iptables
已经预先定义了四个表filter表用于包过滤
、nat表用于地址转换
、mangle表用于数据包修改
和raw表用于高级功能
。每个表对应的操作功能需要在不同的关卡进行操作,例如,包过滤功能需要对input、output和forward流量进行过滤,所以在filier表
分别包含input链
、output链
和forward链
的一部分。详细细节如下,来源见水印 -
表链关系:上文说到,表和链是从不同的维度对规则链进行划分,链是每一个“关卡”需要进行的操作的集合,表是相同功能的操作的集合。也就是说,我们可以将一个链划分为多个表的势力范围,而每个表也包含多个链的一部分。从下图我们可以看到,链被分段存放在不同的表中,实际上我们可以将其整理成如下所示的表格,链和表的关系如下图,来源见水印。
-
规则:规则包含两个部分:
匹配条件
和处理动作
。匹配条件
就是指定什么样的包需要执行对应的动作,基本条件包括源端口、目的端口、源IP和目标IP等等。处理动作
也包含基础动作和扩展动作:ACCEPT
允许数据包通过、DROP
直接丢弃数据包且不响应、REJECT
丢弃数据包但响应、SNAT
源地址转换、MASQIERADE
IP伪装、DMAT
目标地址转换、REDORECT
重定向映射透明代理和LOG
日志记录 -
iptables常用命令说明及其示例
参数 说明 示例 -F 清空规则链 iptables -F -L 查看规则链 iptables -L -A 追加规则 iptables -A INPUT -D 删除规则 iptables -D INPUT 1 -R 修改规则 iptable -R INPUT 1 -s 192.168.120.0 -j DROP -I 在头部插入规则 iptables -I INPUT 1 --dport 80 -j ACCEPT -L 查看规则 iptables -L INPUT -N 新的规则 iptables -N allowed -V 查看iptables版本 iptables -V -p 协议(tcp/udp/icmp) iptables -A INPUT -p tcp -s 匹配原地址,加" ! "表示除这个IP外 iptables -A INPUT -s 192.168.1.1 -d 匹配目的地址 iptables -A INPUT -d 192.168.12.1 --sport 匹配源端口流入的数据 iptables -A INPUT -p tcp --sport 22 --dport 匹配目的端口流出的数据 iptables -A INPUT -p tcp --dport 22 -i 匹配入口网卡流入的数据 iptables -A INPUT -i eth0 -o 匹配出口网卡流出的数据 iptables -A FORWARD -o eth0 -j 要进行的处理动作:DROP(丢弃),REJECT(拒绝),ACCEPT(接受),SANT(基于原地址的转换) iptable -A INPUT 1 -s 192.168.120.0 -j DROP --to-source 指定SANT转换后的地址 iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SANT --to-source 172.16.100.1 -t 表名(raw、mangle、nat、filter) iptables -t nat -m 使用扩展模块来进行数据包的匹配(multiport/tcp/state/addrtype) iptables -m multiport
-
1.3 网络检测技术与系统
-
入侵检测技术概述
- 入侵检测评估指标:
检测率
和误报率
。检测率
是指入侵检测系统捕获到的攻击行为数目和全部攻击数目之比;误报率
是指入侵检测系统对正常行为的误报数目与入侵检测系统所输出的全部报警数目之比。 - 入侵检测常用的种类划分:
误用检测
和日常检测
- 入侵检测评估指标:
-
Snort:开源网络入侵检测系统
-
简介:SNORT是一个强大的轻量级的网络入侵检测系统,它具有实时数据流量分析和日志IP网络数据包的能力,能够进行协议分析,对内容搜索或者匹配。它是一个基于特征检测的入侵检测系统。
-
具有功能:
嗅探器
、数据包记录器
和网络入侵检测系统
三种模式 模式功能 嗅探器 仅仅是从网络上读取数据包并作为连续不断的流显示在终端上 数据包记录器 把数据包记录到硬盘上 网络入侵检测系统 分析网络数据流以匹配用户定义的一些规则, 并根据检测结果采取一定的动作。 -
结构说明:snort符合基于模式的匹配的入侵检测系统的基本结构。
-
snort规则解析:
alert tcp any any -> 192.168.1.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd access";)
alert
:表示这是一条规则执行的动作是报警tcp
:规则针对TCP连接第一个any
:源IP任意第二个any
:源端口任意192.168.1.0/24
:目的IP111
:目的端口content:xxxxxx
:规则匹配的字符串msg
:报警信息
-
1.4 网络安全事件响应技术
- 网络安全事件响应方法和技术概述
- 计算机取证:TCT\TSK
- 攻击追溯:IP Traceback
- 攻击恢复:通过多介质备份
2.实践过程
主机名 | IP地址 | MAC地址 |
---|---|---|
Ubuntu 18.04 | 192.168.200.9 | 00:0c:29:1f:45:3b |
seed | 192.168.200.5 | 00:0c:29:0e:46:5a |
windowsAttacker | 192.168.200.4 | 00:0c:29:18:6f:6d |
kali | 192.168.200.6 | 00:0c:29:e3:10:93 |
2.1 动手实践:防火墙配置
-
实践任务一:配置linux操作系统平台上的iptables,
-
过滤ICMP数据包,使得主机接收不到Ping包。
-
只允许特定IP地址访问主机的某一网络服务,而其他IP地址无法访问。
-
-
实践任务一过程:
-
首先使用
sudo iptables -F
清空规则,后使用sudo iptables -L
查看确认清空 -
现在加入题目要求的规则,拒绝ICMP请求。格式如下
sudo iptables -A INPUT -p icmp -j DROP
,具体的参数含义在上文已经介绍过了,-A INPUT
表示追加规则到input,-P icmp
指定过滤协议,-j DROP
指定对应数据包的动作。之后通过sudo iptables -L
查看插入结果 -
接下来我们使用kali去ping seedubuntu这台机器。
-
在一旁使用kali的wireshark嗅探,得到如下的信息
-
接下来开始第二问。首先我们通过命令
iptables -P INPUT DROP
禁止所有的input数据包 -
接下来通过
iptables -A INPUT -p tcp -s 192.168.200.9 -j ACCEPT
允许.9的机器的tcp数据包连接 -
接下来分别使用windowsAttacker和ubuntu登录seed,结果如下
windowsAttacker Ubuntu 18.04 -
通过kali下的wireshark抓包登录过程,结果如下
-
2.2 动手实践:snort
- 实践操作二:使用snort对给定的pcap文件进行入侵检测,并对检测出的攻击进行说明。
- 使用seed攻击机上使用snort,对给定的pcap文件进行入侵检测,并获得报警日志。
-
实践操作二过程:
2.3 分析蜜网网关的防火墙和IDS/IPS配置规则
-
实践作业三:具体分析配置规则与启动项文件包括:
-
防火墙:
/etc/init.d/rc.firewall
-
入侵检测系统:
/etc/init.d/hflow-snort
和/etc/snort/snort.conf
-
入侵防御系统:
/etc/init.d/hflow-snort_inline
和/etc/snort_inline/snort_inline.conf
-
上述脚本是如何实现蜜网网关的数据捕获和数据控制机制
-
获取IPTables的实际规则表、snort和snort_inline的实际执行参数
-
蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的
-
蜜网网关的snort是如何自动升级的。
-
-
实践作业三步骤:
-
数据控制:通过命令
vim /etc/init.d/rc.firewall
可以看到roo在开机启动的过程中对iptables
初始话进行的操作。首先说shell文件没有一个明确的进入点,排除掉函数定义段其他部分是顺序执行的,所以我们要倒着来看,先看最后一个函数。我们不难看出,首先代码的在820行进入程序,然后进入start
函数,这个函数就长度而言可以堪称是代码届的泥石流了,但是逻辑却异常清晰。这里的东西都在代码里,就不放过多的图片了。-
首先是
create_chains
函数,定义了下述程序中使用的规则。BlackList
、WhiteList
、FenceList
和XXXHandler
。它们分别用来存储源地址和目的地址黑名单,源地址和目的地址的白名单,源地址和目的地址的防护名单,以及供下述policy使用的各种协议对应的Handler链。 -
接下来通过
default_policy
、localhost_policy
和management_policy
创建了不同情况下的三种代理转发模式。 -
接下来进入
start
程序的正文,通过读取预定义的白名单HwFWWHITE
、黑名单HwFWBLACK
和防护名单HwFWFENCE
,添加相关的规则. -
最后通过读取类似
HwHPOT_PRIV_IP_FOR_NAT
和HwHPOT_PUBLIC_IP
等文件来导入其他的定义参数。
-
-
数据捕获:这里分为两个部分一个是这里提到的
iptables
,另一个是下文提到的snort
-
iptables
规则表:鉴于我的键盘是是68键的并没有pageup,所以这里使用命令iptables -L > 1.txt
后vim 1.txt
查看。 -
snort
实际执行参数。 -
snort_inline
实际执行参数:vim /etc/init.d/hw-snort_inline
可以看到相关的运行脚本,按照上文的查找方法,我们找到了start
函数,再判断过大量的意外情况之后,我们找到了实际的启动命令。参数我们再上文的snort常用参数中提到过。这里不过多介绍。这里通过修改初始化文件可以在启动的过程中输出使用参数echo ${snort} -D -c ${CONF} -Q -I $DIR/$DATE -t $DIR
-
防火墙、NIDS、NIPS启动:运行命令
chkconfig --list|grep [服务]
。这里我们通过查找相关的服务,可以看到防火墙和NIDS是开机启动的,并通过上述分析的相关脚本的自动运行试试配置, -
snort自动更新方法:这里运行命令
grep -r "XXXXXXX" /etc/* > 1.txt
然后vim 1.txt
。命令中的XXX是你想的可能的关键字, 我选的是updata rule
。最后得到如下结果,从中可以看到,Required by Oinkmaster to retrieve VRT rule updates
。
-
3.学习中遇到的问题及解决
- 问题1:本周经历坎坷,自己作死外出拍星星,距离被隔离观察就差0.2°C。
- 问题1解决方案:没什么大问题,艰难完成了作业。
- 问题2:启动的相关脚本实在是太长了
- 问题2解决方案:基本上阅读起来就是跟着感觉走,大致看懂就写了博客
4.实践总结
- 首先就是蜜网网关资料较少,只能自己慢慢摸索着来,特别是最后一题,有种大海捞针的感觉
- 自己对linux的理解还是不够全面,本想写个输出脚本,在蜜网网关开机的时候打印出相关信息,结果无奈搞崩了两次之后放弃。
参考资料
- iptables概念详解
- iptables参数详解
- Linux下iptables防火墙配置详解