20199113 2019-2020-2 《网络攻防实践》第6周作业
1 实践内容
安全模型
静态安全模型:对网络进行风险分析,制定相应的安全策略,然后采取安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点。
PDR安全模型:基于闭环控制理论的时间动态可适应网络安全模型,以经典的网络安全不等式P>D+R(保护、检测、响应)为本质基础,并提出安全性可量化和可计算的观点。
P2DR安全模型:基于PDR安全模型提出,增加了Policy分析制定安全策略,并以此为核心,所有的防护、检测、响应都是依据安全策略实施的。
网络安全防范技术与系统
防火墙技术
定义:指置于不同网络安全域之间,对网络流量和访问行为实施访问控制的一种安全设备或者软件。从技术范畴上说,防火墙属于一种网络上的访问控制机制,通过在不同的网络安全域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求和策略设置决定是否允许网络访问通过防火墙,达到保护特定网络安全域免受非法访问和破坏的安全目标。
功能:
- 检查控制进出网络的流量。
- 防止脆弱或不安全的协议和服务。
- 防止内部网络信息的外泄。
- 对网络存取和访问进行监控审计。
- 强化网络安全策略并集成其他安全防御机制。
技术的关键特性:
- 只能对流经他的网络数据进行检查和控制,必须将防火墙部署在不同网络安全域之间的唯一通道上;
- 不具备主动检测区分网络攻击数据与合法数据的能力,因此要根据安全需求合理地设计安全策略规则;
- 无法保护来自网络内部的攻击。
不足:
- 先天无法防范的安全威胁包括:来自网络内部的安全威胁、通过非法外联的网络攻击和计算机病毒传播传播。
- 由于技术瓶颈问题目前还无法防范的安全威胁包括:针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击、隐蔽通道进行通信的特洛伊木马或僵尸网络。
部署方法:
- 包过滤路由器:带有包过滤防火墙功能的路由器。
- 双宿主堡垒主机:应用代理网关作为双宿主堡垒主机。
- 屏蔽主机:堡垒主机和包过滤的结合。
- 屏蔽子网:在屏蔽主机的基础上增加第二道包过滤路由器。
Linux开源防火墙netfilter/iptables
概念:netfilter/iptables 组合是目前Linux开源操作系统中普遍使用的防火墙技术解决方案,其中 netfilter 是Linux内核中实现的防火墙功能模块, iptables 是应用态的防火墙管理工具。
工作原理:iptables中有三个基本规则表:处理包过滤的filter、网络地址转换nat、特殊目的包修改的mangle。filter包含INPUT、OUTPUT、FORWARD三条规则链。分别是发往本地、本地发出、经过本主机的转发的数据包处理的规则。nat表有PREROUTING、POSTROUTING、OUTPUT三条规则链。分别是:对未经路由选择的数据包转换IP地址和目标端口、对已经经过陆幽轩的数据包进行转换IP地址和目标端口,OUTPUT规则链的本地数据包的IP地址和端口转换。
iptables的命令的语法: iptables [-t table] command [match] [target]
。 -t
指定配置规则所在的表,缺省表包括gilter、nat、mangle、raw等。 cammand
就是告诉iptables命令要做什么,比如 -A
就是在链表之后插入规则, -D
就是指定匹配的规则从链中删除该规则。 match
部分为规则匹配条件,满足规则的数据包才会被采取措施。 target
是满足规则之后要做什么,比如放行数据包ACCEPT。
netfilter/iptables的NAT机制
IP伪装:在内部网络使用私有IP,而通过防火墙可以绑定一个外部IP,对数据包进行源IP伪装。
SNAT机制:SNAT记住可以按照用户制定的规则,将源IP灵活的变成各种IP,IP伪装是一种SNAT机制。值得注意,SNAT机制需要在POSTOUTING链中完成,这样才能让路由、包过滤在源IP改变之前做完。iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.254.2
的意思是将发出的源IP改为192.168.254.2。
DNAT机制:DNAT在PREROUTING链中完成,需要用到-i
.iptables -t nat -A PEROUTING -i eth1 -j DNAT --to 192.168.254.128
将目的地址转换为192.168.254.128.
网络检测技术与系统
入侵检测技术评估指标:检测率和误报率
- 检测率是指入侵检测系统捕获到的攻击行为数目和全部攻击数目之比
- 误报率是指入侵检测系统对正常行为的误报数目与入侵检测系统所输出的全部报警数目之比
技术类型:特征检测(匹配特征库)、异常检测(检测与正常用户在统计方面的差别)。二者通常结合使用,提高入侵检测系统的整体检测性能。同时,基于这两种技术,也可以对入侵检测系统进行分类。
入侵检测系统的分类:
- 基于主机的入侵检测系统(HIDS):监视主机信息;
- 基于网络的入侵检测系统(NIDS):以监听到的网络数据包作为分析数据源。
开源网络入侵检测系统:Snort:Snort除了是一款跨平台、轻量级的网络入侵检测软件之外,还具备数据包嗅探、数据包分析与记录等多种功能,还支持内联模式,可作为网络入侵防御系统使用。
snort功能:数据包嗅探、数据包记录和分析以及各种入侵检测功能。
snort的四个主要部件
数据包嗅探:将网卡设置为混杂模式,用libpacp函数来进行数据包监听和抓包。
预处理器:用于弥补检测引擎检测能力的不足。主要有TCP/IP协议栈模拟、应用层协议解码、异常检测。
检测引擎:是主题模块,主要包括规则库解析、多模式匹配、规则插件。
输
出模块:进行各种多样化的报警和日志记录。
2.实践过程
实践任务:配置Linux操作系统平台上的iptables,完成如下功能,并进行测试:
主机 | ip地址 |
kali | 192.168.200.8 |
MetaSploitable | 192.168.200.125 |
SEED | 192.168.200.4 |
1.过滤ICMP数据包,使得主机不接受Ping包;
先在SEED上 ping
主机kali,发现在正常状态下可以 ping
通
在主机kali上通过 iptables -L
查看规则,发现都是默认规则。
执行 iptables -A INPUT -p icmp -j DROP
指令使得主机不接受icmp的数据包。其中 -A
是追加新规则于指定链的尾部, INPUT
表示数据包入口(规则), -p
用于匹配协议, -j
用于指定如何处理(ACTION)。再次查看规则,发现多了一条icmp针对任何位置不允许访问的规则。
再次通过SEED ping
主机kali,发现 ping
不通了
把添加的规则删除iptables -D INPUT -p icmp -j DROP
现在可以看到,又能ping了
只允许特定IP地址访问服务,其他的不行。
分别测试SEED和WinXP是否可以进行telnet登录kalitelnet 192.168.200.8
在kali使用iptables -P INPUT DROP
指令拒绝一切的数据包流入(修改的是默认规则-P
),此时发现两台机器都无法进行telnet访问
使用指令iptables -A INPUT -p tcp -s 192.168.200.4 -j ACCEPT
开启SEED对主机kali的tcp服务。并用iptables -L
查看规则
这时发现SEED是可以正常访问telnet服务的,但是Winxp是无法访问的
最后执行iptables -F
删除自定义规则,iptables -P INPUT ACCEPT
把没有规定的数据包都接收,恢复之前的状态
Snort
任务:使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件)进行入侵检测,并对检测出的攻击进行说明。
在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
Snort运行命令提示如下:
-
从离线的pcap文件读取网络日志数据源。
-
在snort.conf中配置明文输出报警日志文件。
-
指定报警日志log目录(或缺省log目录=/var/log/snort)。
利用指令snort -r /home/kali/listen.pcap -c /etc/snort/snort.conf -K ascii
对listen.pacp
进行入侵检测, 其中-c
表示选择snort配置文件,-r
表示从pcap格式的文件中读取数据包,-K ascii
是用来指定输出日志文件的为ASCII编码。
可以看到有大量TCP包,但HTTP等应用层协议包却很少
再打开vim /var/log/snort/alert
可以看到判断有nmap扫描,有双方的IP地址端口等信息
分析蜜网网关的防火墙和IDS/IPS配置规则
说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的
具体分析配置规则与启动项文件包括:
- 防火墙(netfilter+IPTables):/etc/init.d/rc.firewall;
- 入侵检测系统(Snort):/etc/init.d/hflow-snort与/etc/snort/snort.conf;
- 入侵防御系统(Snort_inline):/etc/init d/hflow-snort_inline与/etc/snort_inline/snort_inline.conf。
分析内容如下: - 上述脚本是如何实现蜜网网关的数据捕获和数据控制机制?
- 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
- 蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
- Bonus:蜜网网关中的Snort规则是如何自动升级的?
查看防火墙的文件
su -
vim /etc/init.d/rc.firewall
可以看到创建了黑名单和白名单的规则链,还创建了很多协议数据包的处理规则链
对源地址或目的地址属于黑名单的主机,丢弃所有包
对属于白名单的主机,接受包且不记录
对属于防护名单的主机,禁止访问某些不应该被访问的主机
输入iptables -L
可以查看实际规则列表,看到默认的规则OUTPUT、INPUT、FORWARD都已经被关闭了
通过下面的指令来查看规则列表:
iptables -t filter -L
不难发现,默认的规则入 OUTPUT、INPUT、FORWARD 都已经被关闭了,取而代之的是一些自定义的规则(包括之前配置 Roo 的一些参数也反映在规则表上)。
打开 Snort 脚本文件:
vim /etc/init.d/snortd
一些运行参数的执行过程如下:
输入vim /etc/init.d/hw-snort_inline
打开snort_inline的脚本文件,可以获取Snort_inline实际执行参数
输入chkconfig --list | grep [服务]
来查询当前服务是不是开启的,可以看到防火墙和NIPS(snort_inline)是跟随系统启动的,NIDS是需要手动启动的,其中1表示单用户模式,2表示无网络连接的多用户命令行模式,3表示有网络连接的多用户命令行模式,4表示不可用,5表示带图形界面的多用户模式,6表示重新启动。
输入vim /etc/honeywall.conf
,打开honeywall配置文件,可以看到snort默认为不自动更新
3.学习中遇到的问题及解决
telnet 连接不上 然后翻了翻同学的博客 发现李凤仪同学遇到了同样的问题。。里面有解决方案
4.总结
多思考、多动手实践,多查找资料或向同学们咨询解决,还需继续加深原理方面的理解。