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

《网络攻防实践》第六周作业


一、前言


二、知识点总结

1.安全模型

  • 静态安全模型:对网络进行风险分析,制定相应的安全策略,然后采取安全技术作为防护措施,主要针对固定、静态的威胁和环境弱点。
  • PDR安全模型:基于闭环控制理论的时间动态可适应网络安全模型,以经典的网络安全不等式P>D+R(保护、检测、响应)为本质基础,并提出安全性可量化和可计算的观点。
  • P2DR安全模型:基于PDR安全模型提出,增加了Policy分析制定安全策略,并以此为核心,所有的防护、检测、响应都是依据安全策略实施的。

2.网络安全防范与系统

2.1 防火墙技术概述

防火墙指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备。防火墙属于一种网络上的访问控制机制,通过在不同的网络安全域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求和策略设置决定是否允许网络访问通过防火墙,达到保护特定网络安全域免受非法访问和破坏的安全目标。

防火墙的技术关键特性
  • 由于防火墙只能对流经它的网络数据进行检查和控制,因此必须将防火墙部署在不同网络安全域之间(比如外部公共互联网和企业内部网络)的唯一通道上
  • 防火墙并不具备主动检测区分网络攻击数据与合法数据的能力,只是实施预先定义的网络安全访问策略的一种技术,因此只有网络安全管理员根据安全需求合理地设计安全策略规则,才能充分发挥防火墙的功能,保护网络安全
  • 防火墙也存在一些缺陷和弱点,如无法防护来自网络内部的攻击等等,因此防火墙并非是“一劳永逸”的“安全最终解决方案”。
防火墙的安全功能
  • 检查控制进出网络的网络流量
  • 防止脆弱或不安全的协议和服务
  • 防止内部网络信息的外泄
  • 对网络存取和访问进行监控审计
  • 防火墙可以强化网络安全策略并集成其他安全防御机制
防火墙的不足:

作为网络边界防护机制而先天无法防范的安全威胁包括如下

  • 来自网络内部的安全威胁
  • 通过非法外联的网络攻击
  • 计算机病毒传播
    由于技术瓶颈问题目前还无法有效防范的安全威胁包括如下
  • 针对开放服务安全漏洞的渗透攻击
  • 针对网络客户端程序的渗透攻击
  • 基于隐蔽通道进行通信的特洛伊木马或僵尸网络
    防火墙部署方法包过滤路由器、双宿主堡垒主机、屏蔽主机、屏蔽子网

2.2 防火墙技术与产品

2.2.1 包过滤技术

包过滤技术在路由功能基础上进行扩展,通过对网络层和传输层包头信息的检查,根据用户定义的安全策略规则集,确定是否应该转发该数据包,将一些不符合安全策略的数据包阻挡在网络的边界处。
这种技术并不关注数据包是否是网络流的一部分,也就是说并不存储关于网络连接状态的任何信息,而仅仅根据数据包自身包含的信息进行检查和过滤。通常检查的信息包括数据包的源地址和目的地址、网络协议号、网络端口号、ICMP报文类型和号码等。
包过滤技术实现简单,但检查内容较少,安全功能较为有限。

2.2.2 基于检测状态的包过滤技术

也称为动态包过滤。维护所有通过防火墙的网络连接记录,并依此确定数据包是否属于一个新建的连接,或是已建连接的一部分,或是一个非法数据包。会试图跟踪数据包在网络连接上的上下文关系,并以网络连接状态作为一个附加的匹配标准,以确定是否允许和拒绝通信,即在网络连接层次上匹配和实施防火墙规则。
基于状态检测的包过滤技术具有更强大的安全功能,而且规则的设置也更为简单,同时也保留了包过滤对用户透明的特性。与此同时,由于根据数据包的上下文进行相关的检查和过滤,数据的合法性得到了更有效的保障。但是状态检测包过滤需要跟踪和维护所有网络连接的状态,因此其实现复杂度较高、对网络传输性能影响较大,并可能受到拒绝服务攻击的影响。是目前应用最为广泛的防火墙技术。

2.2.3 代理技术

代理(Proxy)技术是一种重要的计算机安全防护功能,允许客户端通过它与另一一个网络服务进行非直接的连接,也称“网络代理”。代理技术具体过程为:客户端首先与代理服务器创建连接,接着发出一个对另外的目标服务器的文件或其他资源的连接请求,代理服务器通过与目标服务器连接或从缓存中取得请求的资源,并返回给客户端。根据工作的网络协议栈层次的不同,代理技术包括应用层代理、电路级代理和NAT代理等。

2.2.4 Linux开源防火墙netfilter/iptables

netfilter/iptables组合是目前Linux开源操作系统中普遍使用的防火墙技术解决方案。netfilter是Linux内核中实现的防火墙功能模块,iptables是应用态的防火墙管理工具。
netfilter/iptables工作原理:
在nefilter/iptables防火墙系统中,netfilter组件位于Linux的内核空间中,实现了静态包过滤和状态报文检查(即动态包过滤)基本防火墙功能,此外也支持NAT网络地址转换等其他额外功能,并提供了多层API接口以支持第三方扩展,netfilter具备构建防火墙、NAT共享上网、利用NAT构建透明代理,以及构建QoS或策略路由器等安全功能。Iptables则是工作在Linux用户空间中的防火墙配置工具,通过命令行方式允许用户为nefilter配置各种防火墙过滤和管理规则。
netfilter/iptables中包含三个最基本的规则表,分别为用于包过滤处理的filter表、用于网络地址转换处理的nat表,以及用于特殊目的数据包修改的mangle表。在每张规则表中包含一些已缺省定义的规则链,以及可由用户自定义的规则链。

Match部分为规则匹配条件,指定数据包与规则匹配所应具有的特征,匹配条件分为两大类:通用匹配和特定协议匹配,通用匹配为可用于采用任何协议的数据包进行的匹配条件,如-i/-o 进入网络接口/发出网络接口,-s/-d 源和目的地址、-p协议类型、-m网络连接状态等,特定协议匹配为某种.上层协议特定字段的匹配条件,如--sport--dport为TCP/UDP端口匹配设置条件等,在配置多个匹配条件是采用“与”关系,即同时满足后,才触发目标操作行为。
Target部分指定满足匹配条件之后的目标操作,即对与那些规则匹配的数据包执行的处理操作。netfilter/iptables 除了允许用户定义的目标之外,还有许多缺省已定义的常用目标操作选项。常用的一些目标及其示例和说明如下:
ACCEPT:当信息包与具有ACCEPT目标操作的规则完全匹配时,会被接受(允许它前往目的地),并且它将停止遍历规则链。该目标操作被指定为-j ACCEPT
DROP:当信息包与具有DROP目标操作的规则完全匹配时,会阻塞该信息包,并且不对它做进一步处理。该目标操作被指定为-j DROP
REJECT: 该目标操作的工作方式与DROP目标操作类似,但与DROP不同的是,REJECT不会在服务器和客户机上留下死套接字。另外,REJECT将错误消息发回给数据包的发送方。该目标操作被指定为-j REJECT。示例:iptables -A FORWARD -p TCP --dport 22 j REJECT
RETURN :在规则中设置的RETURN目标操作让与该规则匹配的信息包停止遍历包含该规则的链。如果链是如INPUT之类的主链,则使用该链的缺省策略处理信息包。它被指定为-jump RETURNiptables -A FORWARD -d 203.16.1.89 -jump RETURN

3 网络检测技术与系统

入侵检测技术:对入侵行为进行检测与发现,它是防火墙之后的第二道安全屏障。分为误用检测和异常检测。入侵检测系统可分为基于主机的入侵检测系统(HIDS)和基于网络的入侵检测系统(NIDS),这两者可以互相补充成为分布式入侵检测系统(DIDS)。
评估指标:检测率(系统捕获到的攻击行为与全部攻击行为比值)和误报率(对正常行为的误报数与全部报警数的比值)。
技术类型:特征检测(匹配特征库)、异常检测(检测与正常用户在统计方面的差别)。二者通常结合使用,提高入侵检测系统的整体检测性能。同时,基于这两种技术,也可以对入侵检测系统进行分类。
入侵防御系统:也叫内嵌式入侵检测,即对检测到的异常行为或者与特征库匹配的行为直接进行阻断,断开访问。

3.1 开源网络入侵检测系统Snort

Snort是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配,可以检测各种不同的攻击方式,对攻击进行实时报警等。
四个主要部件:

  • 数据包嗅探:将网卡设置为混杂模式,用libpacp函数来进行数据包监听和抓包。
  • 预处理器:用于弥补检测引擎检测能力的不足。主要有TCP/IP协议栈模拟、应用层协议解码、异常检测。
  • 检测引擎:是主题模块,主要包括规则库解析、多模式匹配、规则插件。
  • 输出模块:进行各种多样化的报警和日志记录。
    主要功能:
  • 嗅探模式(从网络上读取数据包,常用命令snort -dev)
  • 数据包记录模式(把数据包记录到硬盘上,常用命令snort -b)
  • 网络入侵检测模式(载入规则库才能工作,Snort并不记录所有捕获的包,而是将包与规则对比,仅当包与某个规则匹配的时候,才会记录日志或产生报警)

3.2 VPN技术

VPN即虚拟专用网,指利用大规模公共网络搭建虚拟链路来代替物理链路进行私密通信的技术,VPN主要采用隧道技术、加密技术、密钥管理和交换技术、身份认证技术等。
常见的VPN分类有:IPSec VPN;SSL VPN;MPLS VPN


三、实验内容

任务一:防火墙配置

下述实验我们以SEED Ubuntu作为服务器,利用Kali访问SEED Ubuntu,Kali作为信任主机,Linux MetaSploitable作为不可信任主机。下述是三台电脑的IP和MAC:
Kali 192.168.200.2 00:0c:29:e6:86:47
MetaSploitable 192.168.200.125 00:0c:29:b4:e5:9b
SEED Ubuntu 192.168.200.5 00:0c:29:95:bc:25
1.首先在SEED Ubuntu上通过iptables -L查看规则,发现都是默认规则。

2.通过指令iptables -A INPUT -p icmp -j DROP使得主机不接受icmp的数据包。指令详解:-A是追加一条规则,INPUT表示数据包入口(规则),-p用于匹配协议,-j用于指定如何处理(ACTION)。更多的指令参照上面理论部分给的链接。

3.此时通过KalipingSEED Ubuntu,无法ping通,并且可以查看规则,发现多了一条icmp针对任何位置不允许访问的规则。


4.使用iptables -F删除自定义规则。

任务二:只允许Kali访问SEED Ubuntu的telnet服务。

1.实验前两台机器都可以使用telent登录seed ubuntu


2.使用iptables -P INPUT DROP指令拒绝一切的数据包流入(修改的是默认规则-P),此时应该两台电脑都无法进行访问。
3.使用指令iptables -A INPUT -p tcp -s 192.168.3.19 -j ACCEPT开启192.168.3.19对本机的tcp服务。并用iptables -L查看规则。

4.我们发现Kali是可以正常访问telnet服务的,但是MetaSploitable却是无法访问的。


5.最后执行iptables -Fiptables -P INPUT ACCEPT两条指令恢复之前的状态。

任务三:使用Snort对给定的pcap文件进行入侵检测,并对检测出的攻击进行说明

1.利用指令snort -r listen.pcap -c /etc/snort/snort.conf -K ascii对listen.pacp进行入侵检测。
2.查看输出,可以看到检测出的数据包大部分为TCP数据包。

3.在/var/log/snort/目录下可以查找到alert文件,这个文件即输出的日志文件,通过vim打开可以发现这个攻击是nmap发起的。

任务四:分析蜜网网关的防火墙和IDS/IPS配置规则

问题:说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求:

  • 上述脚本是如何实现蜜网的数据捕获和数据控制?
  • 获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数。
  • 蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
  • Snort规则是如何自动升级的?

1.数据控制

查看防火墙的文件,可以看到创建了黑名单和白名单的规则链,还创建了很多协议数据包的处理规则链

create_chains() {
   if [ -n "${HwFWBLACK}" ] && [ -e ${HwFWBLACK} ] &&
      [ "${HwBWLIST_ENABLE}" == "yes" ]; then
      # 黑名单
      iptables -N BlackList
   fi
   if [ -n "${HwFWWHITE}" ] && [ -e ${HwFWWHITE} ] &&
      [ "${HwBWLIST_ENABLE}" == "yes" ]; then
      # 白名单
      iptables -N WhiteList
   fi
   if [ -n "${HwFWFENCE}" ] && [ -e ${HwFWFENCE} ] &&
      [ "${HwFENCELIST_ENABLE}" == "yes" ]; then
      # 防护名单
      iptables -N FenceList
      # 防护日志删除
      iptables -N FenceLogDrop
   fi
   if [ -n $HwTCPRATE ] && [ $HwTCPRATE -gt 0 ]; then
      # 创建TCP处理链
      iptables -N tcpHandler
   fi
   if [ -n $HwUDPRATE ] && [ $HwUDPRATE -gt 0 ]; then
      # 创建UDP处理链
      iptables -N udpHandler
   fi
   if [ -n $HwICMPRATE ] && [ $HwICMPRATE -gt 0 ]; then
      # 创建ICMP处理链
      iptables -N icmpHandler
   fi
   if [ -n $HwOTHERRATE ] && [ $HwOTHERRATE -gt 0 ]; then
      # 创建其他协议处理链
      iptables -N otherHandler
   fi
}

2.数据捕获

数据捕获主要包括:

  • 防火墙的日志记录:记录的只是简单的信息如目的地址/端口、源地址/端口、协议、长度等。
  • Snort记录的网络流。

3.获取IPTables的实际规则列表、Snort 和Snort_ inline的实际执行参数

3.1 获取IPTables的实际规则列表

通过iptables -t filter -L | less来查看规则列表,可以看到默认的规则入INPUT、FORWARD、OUTPUT都已经被关闭了

3.2 获取Snort实际执行参数

查询snort文件vim /etc/rc.d/init.d/snortd

可以看到些参数的选项:默认使用默认目录下的snort.conf规则,默认监听网卡为eth0,默认存储日志路径为/var/log/snort

3.3 获取Snort_inline实际执行参数

执行命令vim /etc/init.d/hw-snort_inline打开snort_inline的脚本文件,可以看到到实际执行的参数

-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置

4.蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的

chkconfig命令主要用于检查,设置系统的各种服务。使用chkconfig -list命令来对linux上运行的服务进行查询。
根据chkconfig --list | grep [服务]可以查询到开启服务的情况,其中1表示单用户模式,2表示无网络连接的多用户命令行模式,3表示有网络连接的多用户命令行模式,4表示不可用,5表示带图形界面的多用户模式,6表示重新启动。

可以发现NIPS(snort)的0-6都是off,说明是需要手动启动的,而防火墙(iptables)和NIPS(snort_inline)不全是off,是随系统开机而开启的

5.密网网关中的Snort规则是如何自动升级的

可以从vim /etc/honeywall.conf打开honeywall配置文件,来看snort的rule是否自动更新,默认为不更新

Snort社区中的实际规则更新工具是免费的Oinkmaster
使用vim /etc/oinkmaster.conf打开该文件,发现了snort.conf文件,可以推断这里使用工具Oinkmaster进行了snort的自动升级


四、学习中遇到的问题及解决

  • 有些指令需要在root权限下执行,经常会忘记,提示没有此指令。
  • 对与iptables和snort两种工具的使用还不太熟练,参考了同学博客和网上教程予以解决。

五、学习感想和体会

本次主要学习了网络协议攻击的相关技术手段,用到了iptables以及snort等工具,实践的过程还是比较顺畅的,并没有遇到什么大的问题。原理部分还需要加强,大多还是参照网上博客学习。


2020 年 4月 8日

posted @ 2020-04-09 10:15  朱星帆20199329  阅读(304)  评论(0编辑  收藏  举报