20212820 2021-2022-2 《网络攻防实践》第五周作业
1.实践内容
一、安全防范
为了保障“信息安全金三角”的CIA属性、即机密性、完整性、可用性,信息安全领域提出了一系列安全模型。其中动态可适应网络安全模型基于闭环控制理论,典型的有PDR和P^2DR模型。
- PDR模型:信息系统的防御机制能抵抗入侵的时间P,能超过检测机制发现的入侵的时间D和响应机制有效应对入侵的时间R之和。
- P^2DR:基本描述为:网络安全=根据风险分析制定安全策略(policy)+执行安全防护策略(Procation)+实时监测(Detection)+实时响应(Response)。其中安全策略是核心,如下图。
二、防火墙
1.防火墙技术概述
- 防火墙:是目前最成熟的网络防御技术之一,属于一种网络上的访问控制机制,通过在不同网络域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求决定是否允许网络访问通过防火墙,达到特定网络安全域免受非法访问和破坏的目标。
- 防火墙功能: 检查进出网络的流量;防止脆弱或不安全的协议和服务;防止内部网络信息外泄;对网络存取和访问进行监控审计;可强化网络安全策略,并集成其他网络安全防御机制。
- 防火墙的不足: 来自网络安全内部的攻击;通过非法外联的网络攻击;计算机病毒传播。
2.防火墙技术和产品
- 包过滤技术:通过网络层和传输层的包头信息检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包,将一些不符合安全策略的数据包阻挡在网络边界处。
- 基于状态检测的包过滤技术:此技术维护所有通过防火墙的网络连接记录,并依此确定数据包是否属于一个新的连接、或是已连接的一部分,或是一个非法数据包。由于根据数据包的上下文进行检查和过滤,数据的合法性得到了更有效的保证,但对网络传输的性能影响较大。如下图所示
- 代理技术:具体过程为客户端首先与代理服务器建立连接,接着发出一个对外部目标服务器的的文件或请求,代理服务器通过与目标服务器连接或从缓存中取得资源,并返回给客户端。网络用户便不直接与外部服务器通信。具体分为应用层代理技术、电路级代理技术和NAT代理技术。
- 防火墙产品:集成包过滤的路由器、基于通用操作系统的防火墙软件产品、基于安全操作系统的防火墙、硬件防火墙设备。
3.Linux开源防火墙netfilter/iptables
-
工作原理:netfilter/iptables中包含了三个最基本的规则表:包过滤处理的filter表、网络地址转换处理的nat表、以及用于特殊目的数据包修改的mangle表。相应的规则链如下图所示:
-
iptables提供了命令行接口,语法如下:
$ iptables [-t table] command [match] [target]
command是最重要部分,它告诉iptables命令要做些什么,以下是一些常用命令-A 该命令将一条规则附加到链的末尾。
-D 指定要匹配的规则或者该规则在链中的编号。将其删除。
-P 该命令设置链的缺省目标操作,即策略。
-N 用命令中指定的名称创建一个新链。
-F 如果指定链名,删除该链的所有规则;如未指定链名,删除所有链的所有规则。
-L 列出指定链中所有规则。
Match部分为规则匹配条件,指定数据包与规则匹配所应具有的特征。通用匹配包括-s/-d源和目的地址
Target部分指定满足匹配条件之后的目标操作,即对规则匹配的数据包执行的操作。常用的目标操作为-j ACCEPT
(允许数据包经过协议栈)和-j DROP
(丢弃数据包)。
三、入侵检测技术
1.入侵检测概述
- 定义:对入侵行为的检测与发现。
- 两个重要参数是检测率和误报率。
- 信息收集是入侵检测技术的基础。
- 收到信息后最核心的任务是信息分析,两种基本的分析技术是梧误用检测和异常检测。
- 入侵检测系统的部署位置如下图所示:
- 入侵防御系统IPS,无需使用者的干预,可以在网络中“即插即用”。
2.入侵检测系统:snort
- snort采用标准的捕获数据包的函数库libpcap,具有数据包嗅探、数据吧记录和分析、入侵检测功能。软件基本构架如图所示
- snort实现机理:首先,将捕获的数据包经过解码器填入到链路层协议的包结构体之中,以便对高层协议解码;然后送入各种各样的预处理插件中,对数据进行检查和操作;随后检测引擎对每个包的信息进行快速模式匹配检测;对之前各个部件产生的报警/日志信息,调出相应的输出插件进行发送和记录。检测引擎与插件是snort入侵的主体模块,包含规则库解析、多模式匹配和规则插件检查三部分。
2.实践过程
一、防火墙配置
主机名 | IP | MAC |
Metasploitable_ubuntu | 192:168:11:226 | 00:0c:29:80:25:81 |
seedubuntu | 192.168.11.84 | 00:0c:29:94:73:c9 |
kali | 192.168.11.240 | 00:0c:29:49:ec:17 |
sudo iptables -F
清空规则,然后使用sudo iptables -L
查看确认清空ii.现在加入题目要求的规则,拒绝ICMP请求。输入命令格式如下sudo iptables -A INPUT -p icmp -j DROP
,其中-A INPUT
表示追加规则到input,-P icmp
指定过滤协议,-j DROP
指定对应数据包的动作。之后通过sudo iptables -L
查看插入结果
iii.接下来我们使用kali去ping seedubuntu这台机器,发现无法ping成功
iv.在一旁使用kali的wireshark嗅探,得到如下的信息
iptables -P INPUT DROP
禁止所有的input数据包,接下来通过iptables -A INPUT -p tcp -s 192.168.11.226 -j ACCEPT
允许.226的机器的tcp数据包连接ii.接下来分别使用windowsAttacker和Metasploitable_ubuntu登录seedubuntu,结果如下:
二、动手实践:Snort
- ①从离线的pcap文件读取网络日志数据源
- ②在snort.conf中配置明文输出报警日志文件
- ③指定报警日志log目录(或缺省log目录=/var/log/snort)
i.打开终端,运行命令sudo snort -c /etc/snort/snort.conf -r listen.pcap
ii.运行命令vim /var/log/alert
查看结果。可以从中找到SCAN nmap XMAS
的关于nmap的报警信息。
三、分析配置规则
1.数据捕获与数据控制机制:
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
等文件来导入其他的定义参数。
ii.数据捕获:这里分为两个部分一个是这里提到的iptables
,另一个是下文提到的snort
-
iptables通过相关的
-log
参数来保存相关的日志,通过命令vim /etc/init.d/rc.firewall
后/log
可以看到相关的参数设置 -
在下文分析
snort
的运行参数的过程中会提到snort
的网络流纪录
2.IPTables的实际规则列表
在网关中输入指令/sbin/iptables-L
可以查看规则列表。由于我的键盘并没有pageup,所以这里使用命令/sbin/iptables -L > 1.txt
后vim 1.txt
查看
3.snort实际执行参数与snort_inline的实际执行参数
i.通过vim /etc/init.d/snortd
可以打开Snort脚本文件,可以分别看到一些参数的选项,包括实际运行时候的参数。学习一些snort的指令后进行分析,譬如在指定网卡接口后,如果没有其他的参数,将按照默认参数运行。如默认不开启-A模式,使用默认目录的config文件,默认使用eth0、使用二进制模式保存log文件等。
ii.翻找上文找到定义的相关参数,基本上变量名就是变量所代表的含义,会不会shell编程没什么影响。基本来说就是定义了执行操作的用户、用户组、二进制log文件位置、配置文件和默认网卡等等。
iii.使用命令vim /etc/init.d/hw-snort_inline
可以看到Snort_inline运行时参数。-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置
4.防火墙、NIDS、NIPS启动方式
使用chkconfig --list | grep [服务]
查看服务情况,如果从0~6全是off,那就不自动启动。可以看到防火墙和NIPS(snort_inline)是自动启动的,NIDS要手动启动。
5.snort规则的升级方式
使用命令vim /etc/honeywall.conf打开配置文件,找到update variables,可以看到其值为no,不自动更新。
3.学习中遇到的问题及解决
问题1:蜜罐终端下使用iptables显示common on found
问题1解决方案:使用iptables命令都必须加/sbin/
问题2:kali查看文件失败
问题2解决方案:需要提权,sudo去查看就成功了
4.学习感想和体会
本章学习了网络上的防御技术,对防火墙了解的比较多一点,对入侵检测技术的一些概念和用法还不是很清晰,主要是自己的网络基本知识较少有关。本次实践前两个做得比较简单,通过对教材学习基本能自己解决,对于第三个实践,分析的工作比较多,而且涉及到要知道固定的指令用法和结构什么的,花费了较多的时间去查找资料询问同学终于解决。