问题 | 回答 |
---|---|
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10589 |
我在这个课程的目标是 | 学习教材第六章,了解相关的网络防御技术 |
这个作业在哪个具体方面帮助我实现目标 | 相关知识点和实践任务 |
1. 实践内容
1.1 安全模型
- 信息安全金三角:机密性、完整性和可用性
- 动态可适应网络安全模型:包括PDR (Protection、 Detection、Response) 模型以及在其基础上提出的P2DR(Policy、 Protection、 Detection 、 Response) 模型等。
- 防护机制:采用一切手段保护信息系统的机密性、完整性、可用性、真实性和不可抵赖性
- 检测机制:动态响应和加强防护的依据, 是强制落实安全策略的工具。
- 响应措施:包括应急处理、备份恢复、灾难恢复等
1.2 网络安全防范技术与系统
网络安全防范技术对应 P2DR 中的 “ 防护“ 环节,设立在被保护主机与外部网络中间。它是被保护主机的屏障, 为主机的安全提供最基础的保护。
1.2.1 防火墙技术
-
防火墙的定义:防火墙属于一种网络上的访问控制机制,通过在不同的网络安全域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求和策略设置决定是否允许网络访问通过防火墙,达到保护特定网络安全域免受非法访问和破坏的安全目标。
-
防火墙的功能:
- 检查控制进出网络的网络流量
- 防止脆弱或不安全的协议和服务
- 防止内部网络信息的外泄
- 对网络存取和访问进行监控审计
- 防火墙可以强化网络安全策略并集成其他安全防御机制
-
防火墙的不足:目前的防火墙技术并不能有效地应对某些类犁的安全威胁, 一方面是因为防火墙作为网络边界访问控制机制的先天不足, 另一方面则是目前防火墙技术方面存在的瓶颈。
- 作为网络边界防护机制而先天无法防范的安全威胁包括如下
- 来自网络内部的安全威胁
- 通过非法外联的网络攻击
- 计算机病毒传播
- 由于技术瓶颈问题目前还无法有效防范的安全威胁包括如下
- 针对开放服务安全漏洞的渗透攻击
- 针对网络客户端程序的渗透攻击
- 基于隐蔽通道进行通信的特洛伊木马或僵尸网络
- 作为网络边界防护机制而先天无法防范的安全威胁包括如下
1.2.2 防火墙技术和产品
主要有包过滤技术、基于状态检测的包过滤(或称动态包过滤)技术、代理技术等。
-
包过滤技术:包过滤技术在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包,将一些不符合安全策略的数据包阻挡在网络的边界处。
-
基于状态检测的包过滤技术:除了使用静态规则进行安全进行安全策略匹配,还进行数据包的网络连接的上下文关系探测,来确定是否允许通信。这种技术相比较传统的包过滤技术安全性更高,数据合法性得到了更有效的保障(对网络性能有一定的影响)。
-
代理技术:代理(Proxy)技术是一种重要的计算机安全防护功能,允许客户端通过它与另一个网络服务进行非直接的连接,也称 “网络代理”。代理技术具体过程为: 客户瑞首先与代理服务器创建连接,接着发出一个对另外的目标服务器的文件或其他资源的连接请求,代理服务器通过与目标服务器连接或从缓存中取得请求的资源,并返回给客户端。根据工作的网络协议栈层次的不同,代理技术包括应用层代理、电路级代理和NAT代理等。
-
防火墙产品:
- 集成包过滤功能的路由器
- 基于通用操作系统的防火墙软件产品
- 基于安全操作系统的防火墙
-
防火墙部署方法:
- 包过滤路由器:将带有包过滤防火墙功能的路由器作为内部网络和外部网络之间唯一的连接点,路由器在完成其数据包路由转发基本功能的同时,将依据网络管理员配置的访问控制列表,对数据包进行过滤。
- 双宿主堡垒主机:它与包过滤路由器的部署方式北常类似,所不同的是使用应用代理网关作为双宿主堡垒主机,代替了包过滤路由器。双宿主堡垒主机具有两个网络接口,一个使用公网 IP 地址连接外部网络, 另—个使用私有 IP 地址连接内部网络,两个网络接口之间并不具备路由转发功能,而仅仅由应用代理服务然程序为特定的网络应用提供代理。
- 屏蔽主机:实际上是包过滤防火墙和应用代理技术的集成部署,包过滤防火墙和应用代理技术的集成部署,采用了屏蔽路由和堡垒主机双重安全设施,所有进出内部网络的数据都要经过包过滤防火墙和堡垒主机,由包过滤防火墙进行网络层的访问控制,由堡垒主机进行应用安全控制,保证了网络层和应用层的双重安全。
- 屏蔽子网:是在屏蔽主机模式的基础上进行改进的防火墙部署模式。它与屏蔽主机模式的区别在于在应用代理及对外服务器所构成网段和内部主.机之间安装了第二个包过滤防火墙,应用代理及对外服务器所处的网段也被称为DMZ(非军事区)。在这种部署模式中,内部的包过滤防火墙能够在应用代理和对外服务器被攻破之后提供对内部网络的进一步安全防护能力。
1.2.3 Linux 开源防火墙: netfilter/iptables
netfilter/iptables 组合是目前 Linux 开源操作系统中普遍使用的防火墙技术解决方案,其中 netfilter 是 Linux 内核中实现的防火墙功能模块, iptables 则是应用态的防火墙管理工具。
- netfilter/iptables 开源防火墙工作原理:netfilter/iptables 中包含三个最基本的规则表,分别为用于包过滤处理的 filter 表 、用于网络地址转换处理的 nat 表, 以及用于特殊目的数据包修改的 mangle 表。在每张规则表中包含一些已缺省定义的规则链,以及可由用户自定义的规则链。下表中所列出的 INPUT 、 OUTPUT 、FORWARD 、 PREROUTING 和 POSTROUTING 五条在各个表中缺省内建的各类规则链实际上对应着 netfilter 在 TCP/IP 协议栈实现中的五个 Hook 检查点。不同来源和目的网络数据包在协议栈处理时会通过不同的 netfilter 检查链, 并依据 iptables 在这些规则链上配置的检查、 过滤和处理规则,进行相关的数据包修改与操作。通过 netfilter 配置防火墙转发的网络流量将经由 PREROUTING 、 FORWARD 和 POSTROUTING,传入防火墙本机的网络流量通过 PREROUTING 进入 INPUT 链, 而防火墙本机对外传出的网络流量则由 OUTPUT 链开始, 通过 POSTROUTING 链发出。在每条规则链上会设置一个缺省的处理操作,通常情况下为接受(ACCEPT),并由用户通过 iptables 添加一些实现安全过滤、NAT 及其他目的的配置规则,在 netfilter 对数据包进行处理时,将在各个 Hook 检查点上对流经的数据包进行检查,并逐次查看数据包是否匹配了配置规则的条件,如果符合,则执行规则所规定的操作,如过滤 (DROP) 数据包 等,最后不符合该链表上所有配置规则的数据包将执行缺省处理操作。
- iptables 的命令:参照课本和参考资料
1.3 网络检测技术与系统
在 PDR 模型中, 检测技术 (Detection) 在整个模型中扮演了重要的角色。单纯的安全保护措施 (Protection) 并不意味着系统的绝对安全。在入侵者攻陷保护措施之前, 一个安全的系统需要检测出入侵的行为并采取相应的安全响应 (Response) 措施, 所以检测是响应的前提。检测技术主要包括漏洞评估、入侵检测等。
1.3.1 入侵检测技术概述
-
入侵检测技术基本概念:入侵检测, 顾名思义, 就是对入侵行为的检测与发现。在网络攻防技术领域,一次入侵可被定义为任何尝试破坏信息资源的保密性、完整性或可用性的行为。入侵检测即为通过对计算机网络或计算机系统中若干关键点信息的收集和分析, 从中发现入侵行为的一种安全技术。 入侵检测系统 (Intrusion Detection System, IDS) 则是实现入侵检测技术,专门用于入侵行为发现和处理的软件系统或硬件设备。
-
入侵检测技术评估指标:评估入侵检测技术和系统的两个重要参数是检测率 (True Positive) 和误报率 (False Positve)。其中,检测率是指入侵检测系统捕获到的攻击行为数目和全部攻击数目之比;误报率是指入侵检测系统对正常行为的误报数目与入侵检测系统所输出的全部报警数目之比。理想的入侵检测系统应该同时具有较高的正确检出率和较低的误报率。然而由于存在 “基调悖论 (Base-rate Fallacy)" 现象,故提高检测率和降低误报率是互为矛盾的。
-
入侵检测技术:信息收集是入侵检测技术的基础,入侵检测系统的可靠性和准确性在很人程度上依赖于所收集信息的可靠性和完备性。在可靠完备地收集到关键信息之后,入侵检测技术最核心的任务是信息分析,从中识别出攻击行为,入侵检测技术从早期发展至今,都是围绕着两种基本的估息分析技术类型,即误用检测和异常检测来进行的。
- 误用检测:误用检测基于如下假设:所有的入侵行为都有可被检测到的特征。误用检测通过收集已知入侵行为的特征并进行描述,构成攻击特征库,然后对收集信息进行特征模式匹配,所有符合特征描述的行为均被视为入侵。
- 异常检测:异常检测则基于这样的假设:入侵者的行为与正常用户的行为具有差异性,利用这些差异可以检测出入侵行为。异常检测方法是建立起系统的正常模式轮廓,若实时获得的系统或用户的轮廓伯与正常值的差异超出指定的阙值,就进行入侵报警。
-
入侵检测系统的分类与部署:从入侵检测系统的检测数据来源,可以将入侵检测系统分为基于主机的入侵检测系统(Host-based IDS, HIDS)和基于网络的入侵检测系统(Network-based IDS, NIDS)两大类。HIDS 一般用来监视主机信息,其数据源通常包括操作系统审计记录、系统调用序列、应用程序审计信息等;NIDS以其监听到的网络数据包作为分析数据源。HIDS和NlDS右监测视图上都具有缺陷,但两者可以相互补充。
-
入侵防御系统IPS:入侵防御系统 (Intrusion Prevention System, IPS) 是在入侵检测系统基础之上发展出来的一种网络安全技术和产品形态,有时也被称为内嵌 IDS。与入侵检测系统普遍采用旁路监听方式只对入侵行为进行检测与报警不同,入侵防御系统采用直接在网络边界位置内联连接的方式,并在检测到入侵行 为后,直接对所关联的攻击网络连接进行阻断处理。
1.3.2 开源网络入侵检测系统: Snort
-
Snort 的特性与基本架构:Snort 被设计成一个跨平台、轻量级的网络入侵检测系统,用 C 语言编写,并采用了标准的捕获数据包函数库 libpcap,,具有非常好的可移植性。Snort 软件的基本架构如下图所示, 主要由四个基本部分组成:
- 数据包嗅探/解码器 (sniffer);
- 预处理器/插件 (preprocessor):
- 检测引擎/插件 (detection engine);
- 输出模块/插件 (output modules) 。
-
Snort的实现机理:Snort 中四个主要部件以及处理过程描述如下
- 数据包嗅探/解码器。首先, 利用 libpcap 从网卡或离线记录中捕获数据包,然后数据包经过解码器埴入到链路层协议的包结构体中,以便对高层次的协议进行解码,如TCP/UDP 层。
- 预处理器/插件。接着数据包被送到各种各样的预处理插件中,在检测引擎之前对数据包进行检查和橾作。每个预处理插件检查数据包是否应该注意、报警或者修改某些东西。
- 检测引擎/插件。随后,包被送至检测引擎,检测引擎首先通过各种规则文件中定义的匹配字符串特征来对每个包的信息进行快速的模式匹配检测,然后由各种检测插件对包提供额外的检测功能。规则中每个关键字选项对应于检测引擎插件,能够提供不同的检测功能。
- 输出模块/插件。对之前各个部件产生的报警/日志信息,根据用户配置,调用相应的输出插件进行发送和记录。
在 Snort 启动初始化时,会通过 parser.c 中的 ParseRulesFile() 函数对用户配置的规则文件进行读取,并建立起—个三维的规则链表。
1.4 网络安全事件响应技术
网络安全事件响应是P2DR模型中响应环节的关键技术手段。事件响应是指针对网络安全事件发生后,所采取的措施和行动,旨在阻止和减小事件所带来的影响。随着安全事件本质变得越发的多样化,事件响应已经成为成功的网络与信息安全模型和生命周期中的必要组成部分,成功的事件响应需要有丰宫知识和经验的人员基础,充分的组织与计划,以及成熟的方法论指导与技术支撑。
2. 实践过程
2.1 动手实践:防火墙配置
实践任务:配置 Linux 操作系统平台上的 iptables, 或者 Windows 操作系统平台上的个人防火墙,完成如下功能,并进行测试:
- 过滤 ICMP 数据包, 使得主机不接收 Ping 包
- 只允许特定 IP 地址 (如局域网中的 Linux 攻击机 192.168.200.3), 访问主机的某一网络服务(如 FTP、HTTP 、SMB), 而其他的 IP 地址(如 Windows 攻击机 192.168.200.4)无法访间。
本次实验所使用的虚拟机为 kail、seed ubuntu 和 Win XP ,其中 kail 和 Win XP 为测试机,seed 为要配置的主机,ip 地址如下图所示
主机名称 | ip地址 |
---|---|
kail | 192.168.200.3 |
seed | 192.168.200.6 |
Win XP | 192.168.200.4 |
首先查看一下 kail 能否 ping 通 seed
可以ping通
接下来在 seed 中使用命令行iptables -A INPUT -p icmp -j DROP
(ps:-A INPUT
是增加一条规则到 INPUT 链的末尾,-p icmp
是设置链的安全策略,-j DROP
是指定处理方式为丢弃数据包且不通知发送源。)
再次使用 kail ping seed,发现无法ping通(丢包率100%)
使用命令iptables -L
查看规则,发现多了一条 icmp 针对任何位置都不接收访问的规则
最后使用iptables -F
删除自定义规则
完成第一个问题
下面进行第二个实验,只允许 kail 使用 seed 上的 telnet 服务
首先使用 win xp 和 kail 分别使用 telnet 服务连接 seed ,发现都可以连接成功
然后在 seed 上使用命令行iptables -P INPUT DROP
(拒绝一切输入的数据包),这时所有输入 seed 的数据包都被丢弃。
接着使用命令行iptables -A INPUT -p tcp -s 192.168.200.3 -j ACCEPT
(-s
源ip地址,命令行的作用为对源ip地址为192.168.200.3的输入的 tcp 数据包接收),并查看规则表
再次使用 win xp 和 kail 连接 seed ,发现 kail 可以连接成功,win xp 失败
最后使用iptables -F
删除自定义规则,第二个问题完成
2.2 动手实践: Snort
任务: 使用 Snort 对给定 pcap 文件(第 4 章中的解
码网络扫描任一个 pcap 文件)进行入侵检测, 并对检测出的攻击进行说明。
在BT4Linux攻击机或WindowsAttacker攻击机上使用 Snort,对给定的 pcap 文件进行入侵检测,获得报警日志。
Snort运行命令提示如下:
- 从离线的 pcap 文件读取网络日志数据源。
- 在snort.conf中配置明文输出报警日志文件。
- 指定报警日志 log 目录(或缺省 log 目录=/var/log/snort) 。
首先利用指令snort -r listen.pcap -c /etc/snort/snort.conf -K ascii
对 listen.pacp (第四章所用)进行入侵检测(-r listen.pcap
表示从 listen.pcap 中读取数据,-c
表示使用指定配置文件,-K ascii
表示指定输出 log 文件的编码为ascii)
查看输出,可以看到大部分数据包为 tcp 协议的数据包
在/var/log/snort/目录下可以查找到alert文件,这个文件即输出的日志文件
打开文件,可以查看到攻击机和目的机的 ip 地址,以及可以查看到攻击机使用了nmap 扫描工具,并且进行了 DDOS 攻击
实验完成
2.3 实践作业
分析虚拟网络攻防环境中蜜网网关的防火墙和 IDS/IPS 配置规则,并撰写分析报告,说明蜜网网头是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
具体分析配置规则与启动项文件包括:
- 防火墙 (netfilter+IPTables) : /etc/init.d/rc.firewall;
- 入侵检测系统 (Snort) : /etc/init.cl/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 规则是如何自动升级的?
上述脚本是如何实现蜜网网关的数据捕获和数据控制机制
在蜜网网关中,Snort具有实时流量分析和日志IP网络数据包的能力,能够快速地检测网络攻击,及时地发出报警,主要是对整个网络起预警作用。而iptables防火墙主要负责对数据accept(接受),reject(拒绝),drop(丢弃)等规则的制定和执行。因此 snort 制定一系列复杂的监控规则,一旦发现有违反 snort 规则的网络行为就发出预警信息,并通过一定机制将预警信息传送给iptanles,iptables使用这些预警信息生成安全策略并执行。
对于数据控制,下面来具体看一下脚本的代码,首先查看防火墙的配置文件 rc.firewall (对 shell 编程不太了解,所以看不太懂),其中链的创建函数比较重要
其中-N
表示根据用户指定的名字创建新链,该函数分别创建了黑名单、白名单和防护名单(即入侵防御系统中不允许被外部访问的蜜罐主机),以及一些协议数据包的处理规则链。三个名单的作用在后续代码的注释中给出
对于黑名单,对源地址或者目的地址属于黑名单的主机,丢弃所有包且不记录
对于白名单,对源地址或者目的地址属于白名单的主机,接受所有包且不记录
对于防护名单,对源地址或者目的地址属于白名单的主机,丢弃所有包且记录
当然配置文件中还有许多默认规则函数,就不一一列举了
对于数据捕获,主要包括防火墙的日志记录:记录的只是简单的信息如目的地址/端口、源地址/端口、协议、长度等;Snort记录的网络流。
获取 IPTables 的实际规则列表、 Snort 和 Snort_inline 的实际执行参数。
IPTables 的实际规则列表:首先通过命令行iptables -t filter -L
查看 IPTables 的规则表(-t
是指定规则表,-L
表示列表。通过shift键+Fn键+上下键
来翻页),可以看到一些默认的规则链都被关闭了
Snort的实际执行参数:通过命令行vim /etc/init.d/snortd
,snortd是snort启动的脚本文件,snort.conf是具体预警的规则设定
可以看出脚本中定义了许多默认参数,例如默认使用 snort.conf 规则,默认监听网卡为eth0,默认存储日志路径为 /var/log/snort 等等。
Snort_inline 的实际执行参数:通过命令行vim /etc/init.d/hw-snort_inline
查看Snort_inline脚本文件,可以观察到实际运行的参数,以及在最前面定义的参数。
其中-D
表示Daemon模式,-c
表示读取config文件,-Q
表示使用QUEUE模式,-l
表示输出log文件的目录,-t
表示改变程序执行时所参考的根目录位置
蜜网网关开机之后,防火墙、 NIDS、 NIPS 是如何启动的?
通过命令行chkconfig --list | grep [服务]
可以查询到开启服务的情况,其中1表示单用户模式,2表示无网络连接的多用户命令行模式,3表示有网络连接的多用户命令行模式,4表示不可用,5表示带图形界面的多用户模式,6表示重新启动。
可以看到 iptables 和 snort_inline(NIPS)是随系统开机而开启的,而snort(NIDS)需要手动开启
Bonus: 蜜网网关中的 Snort 规则是如何自动升级的?
可以从vim /etc/honeywall.conf来看 snort 的 rule 是否自动更新
可以看到默认为不自动更新
如果想要开启自动更新,需要按照Oinkmaster使用教程来修改/etc/oinkmaster.conf
文件
3. 学习中遇到的问题及解决
- 问题1:对蜜网网关的防火墙与 IDS/IPS 分析过程不了解
- 问题1解决方案:上网搜集资料,同时参考其它同学博客,最终完成
4. 实践总结
通过对防火墙以及入侵检测系统的结构和运行机理的学习,以及实践防火墙的配置和 snort 入侵检测工具的使用,初步了解了网络防御技术的相关知识。实践过程中发现了自己动手能力差的问题,以后还要多多实践。
参考资料
iptables详解
Snort与防火墙Iptables联动
iptables命令详解和举例
Snort 命令参数详解
网络攻防技术与实践