计算机网络安全与管理实验(5)

2019-02-17 18:06

以及任何未知协议,都可以防止此类攻击。

顺便提一下,记得99 年有“爱国主义黑客”(“红客”的前辈)发动全国网民在某一时 刻开始ping 某美国站点,试图ping 死远程服务器。这其实是一种ping flood 攻击,用大量 的Echo Request 包减慢主机的响应速度和阻塞目标网络,原理和ping of death 是不一样的。

2.4.2 Jolt2

Jolt2 通过发送大量相同的碎片化的IP 数据包对目标机进行拒绝服务攻击。这种攻击使 用相同的IP 包碎片,当目标机试图处理这些非法的数据包时,系统就会死锁,直到攻击者 停止发送非法数据包,目标机才恢复正常。

观察Jolt2 发送的数据包,可以发现分片标志位MF 被置为0,说明是最后一个分片,

偏移量为65520,IP 分组大小为29 字节,包括20 字节的IP 头和9 个字节的净荷。按照这 些数据可以计算整个数据包的长度应该为:20+65520+9= 65549 > 65535,就是说已经超出了 IP 数据包的最大长度。Jolt2 发送的IP 包的ID 为1109,可以作为IDS 检测的一个特征。 Jolt2 的影响相当大,通过不停的发送这个偏移量很大的数据包,不仅死锁未打补丁的

Windows 系统(9x、NT4、2K 和XP),同时也大大增加了网络流量。曾经有人利用jolt2 模 拟网络流量,测试IDS 在高负载流量下的攻击检测效率,就是利用这个特性

防御:Windows 系统必须安装最新的补丁,目前的Linux 内核已经不受影响。 如果可

能,在网络边界上禁止碎片包通过,或者限制每秒通过碎片包的数目。如果防火墙有重组碎 片的功能,必须确保自身的算法没有问题,否则被DoS 就会影响整个网络。 Win2K 系统中, 自定义IP 安全策略,设置“碎片检查”。

类似的有teardrop,它也比较简单:默认发送两个UDP 数据包,就能使某些早期Linux 内核崩溃。

2.4.3 Land 攻击

在Land 攻击中,攻击者发送一个特别定制的SYN 分组,此分组的源地址和目的地址都 被设成目标机的地址,源端口号和目的端口号也相同。接收到此分组的目标机将向它自己的 地址发送SYN/ACK 分组,结果这个地址又发回ACK 消息并创建一个空连接,每一个这样 的连接都将保留直到超时掉,对Land 攻击反应不同,许多UNIX 实现将崩溃,NT 变的极 其缓慢(大约持续五分钟)。

防御:为操作系统安装最新的补丁。对防火墙进行配置,过滤那些从外部接口进入的、 含有内部源地址的分组,但是这并不能阻止攻击者闯入一台内部主机向另一台内部主机发起 攻击。

2.4.4 WinNuke 攻击

WinNuke 的唯一目标就是破坏Internet 上未受保护的Windows 机器。其具体方法是向

Windows PC 的任何处于监听中的IP 端口发送非法的数据,常见的是139 端口(被NetBIOS 所使用)。当PC 被攻击之后,常常出现蓝屏,并显示如下信息。 Fatal exception 0E at 0028: in VxD MSTCP(01) + 000041AE.

This was called from 0028: in VxD NDIS(01) + 00000D7C.

21

2.4.5 Smurf

Smurf 攻击是一种向广播地址发送伪造的ICMP 数据包的攻击方式。攻击者使用经过欺

骗的目标机的IP 地址向广播地址发送ICMP 回响请求(ping)。这可能会造成潜在的数以千 计的计算机对攻击者伪造的源地址作出响应。由于大量的数据包发往目标机,会产生大量的 通信业务,导致网络带宽拥塞或网络设备拒绝服务。

与Smurf 类似的有一种叫做Fraggle 攻击,Fraggle 攻击对Smurf 攻击作了简单的修改, 使用的是UDP 应答消息而非ICMP。

防御:为了防止攻击者利用你的网络作为smurf 放大器攻击他人,应当关闭外部路由器

或防火墙的广播地址特性,即禁止从其他网络到用户网络的广播地址通信。如果可能的话, 在操作系统上设置不对发往广播地址的ICMP 分组进行响应,这样就不会被这种攻击所利 用。

为防止被攻击,可以在防火墙上设置规则,丢弃掉ICMP 包,但是这样就会使防火墙成 为被DoS 的对象。这也是DoS 攻击的一个特点:不论在哪里阻止攻击,都会导致该部分受 到DoS 攻击。

2.4.6 SYN Flood

SYN Flood 是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的

方式之一,这是一种利用TCP 协议缺陷,发送大量伪造的TCP 连接请求,从而使得被攻击 方资源耗尽(CPU 满负荷或内存不足)的攻击方式。

介绍这种攻击的基本原理要从TCP 连接建立的过程开始。建立TCP 连接的标准过程是

这样的:首先,请求端(客户端)发送一个包含SYN 标志的TCP 分组,此同步报文会指明 客户端使用的端口以及TCP 连接的初始序号;第二步,服务器在收到客户端的SYN 分组后, 将返回一个SYN/ACK 分组,表示客户端的请求被接受。第三步,客户端也返回一个确认分 组ACK 给服务器端,到此一个TCP 连接完成。以上的连接过程在TCP 协议中被称为三次 握手(Three-way Handshake)。

问题就出在TCP 连接的三次握手中,假设一个用户向服务器发送了SYN 分组后突然死 机或掉线,那么服务器在发出SYN/ACK 应答后是无法收到客户端的ACK 分组的(第三次 握手无法完成),这种情况被称为半开TCP 连接状态。此时服务器端一般会重试(再次发送 SYN/ACK 给客户端)并等待一段时间后丢弃这个半开TCP 连接,这段时间的长度我们称为 SYN Timeout,一般来说这个时间是分钟的数量级(大约为30 秒-2 分钟);一个用户出现异 常导致服务器的一个线程等待1 分钟并不是什么很大的问题,但如果有一个恶意的攻击者大 量模拟这种情况,服务器端将为了维护一个非常大的半开连接列表而消耗非常多的资源—— 数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU 时间和内存,何况还 要不断对这个列表中的IP 进行SYN/ACK 的重试。实际上如果服务器的TCP/IP 栈不够强大, 最后的结果往往是堆栈溢出崩溃。即使服务器端的系统足够强大,服务器端也将忙于处理攻 击者伪造的TCP 连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之 小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了 SYN Flood 攻击。

SYN SYN/ACK ACK

22

客户服务器 SYN 客户服务器 队列已满 无法响应

图2 TCP 三次握手 图3 典型的Syn Flood 攻击

实施这种攻击有两种方法,第一种,向目标机发送SYN 分组并确保发送分组的地址不

会应答SYN/ACK 分组,这需要监听数据包并在主机或路由器上阻断。第二种,伪装成当时 不在线的IP 地址向目标机发动攻击,这样也不会有应答(RST 分组)回应给目标机。 防御:从防御角度来说,有几种简单的解决方法。

第一种是缩短SYN Timeout 时间,由于SYN Flood 攻击的效果取决于服务器上保持的 SYN 半连接数,这个值=SYN 攻击的频度 × SYN Timeout,所以通过缩短从接收到SYN 报文到确定这个报文无效并丢弃改连接的时间,例如设置为20 秒以下(过低的SYN Timeout 设置可能会影响客户的正常访问),可以成倍的降低服务器的负荷。

第二种方法是增加TCP Backlog 容量,即增加TCP 连接的队列长度。增加TCP Backlog 容量是一种治标不治本的做法。它一方面要占用更多的系统内存,另一方面延长了TCP 处 理缓存队列的时间。攻击者只要不停地的进行SYN Flood 一样可以达到拒绝服务的目的。 可是上述的两种方法只能对付比较原始的SYN Flood 攻击,缩短SYN Timeout 时间仅

在对方攻击频度不高的情况下生效,SYN Cookie 更依赖于对方使用真实的IP 地址,如果攻 击者以数万/秒的速度发送SYN 报文,同时利用SOCK_RAW 随机改写IP 报文中的源地址, 以上的方法同样没有用处。 Syn-Cookie / Syn-Gate

在服务器和外部网络之间部署代理服务器(在大多数号称具有防Syn Flood 攻击的防火

墙所采用的方式),通过代理服务器发送Syn/Ack 报文,在收到客户端的Syn 包后,防火墙 代替服务器向客户端发送Syn/Ack 包,如果客户端在一段时间内没有应答或中间的网络设备 发回了ICMP 错误消息,防火墙则丢弃此状态信息;如果客户端的Ack 到达,防火墙代替 客户端向服务器发送Syn 包,并完成后续的握手最终建立客户端到服务器的连接。通过这种 Syn-Cookie 技术,保证每个Syn 包源的真实有效性,确保服务器不被虚假请求浪费资源, 从而彻底防范对服务器的Syn-Flood 攻击。但是对于海量的连接请求,它本身处理也构成一 个瓶颈。

防范SYN Flood 攻击的另一个方法是:设置路由器和防火墙在给定的时间内只允许数

量有限的半开TCP 连接发往主机,这样半开TCP 连接就无法填满目标机的缓冲区,攻击无 法成功。

2.4.7 DRDoS

2002 年1 月11 日凌晨两点,grc.com 被一些更先进的恶意洪水数据包攻击。这种新型 的DDoS 攻击可以被称为分布式反射拒绝服务攻击(Distributed Reflection Denial of Service Attack,DRDoS)。网站接收到的攻击包都是完全合法的SYN/ACK 连接回应包,其显示的 是同一个TCP 源端口:179。换句话说,就像一个网页服务器的数据包会从HTTP 的80 号 端口返回一样,这些数据包是从BGP 的179 号端口返回的。

经过对日志的审查,不难发现是一个分布式的DoS 攻击,但是基于SYN/ACK 数据包 的数据,这一点和传统的SynFlood 攻击不一样。具体的实现机制参见图4,攻击者冒充目

23

标机器的IP 地址向网络中的各个机器发出SYN 包,导致它们都将SYN/ACK 发给了受害的 目标机器。从原理上看,它和Smurf 有着异曲同工之妙。 图4 DRDoS 的攻击原理

需要注意的是,被利用的主机和受害者主机打开的端口和运行的服务需要事先采集信

息。目前这种攻击实现容易,操作简单,有一定的威胁性,相关人员应加强防范意识。具体 的防范措施,目前主要的是过滤部分端口的数据和使用IDS。

2.5 防范拒绝服务攻击

由于DoS 攻击的威力和攻击原理,完全阻止DoS 攻击是不可能的。即便正确设置了防

火墙,内部网络仍然可能是脆弱的,但是可以做一些防范工作来减少被攻击的机会。下面是 防范DoS 攻击的一些措施。

2.5.1 有效完善的设计网络

理想情况下,站点应该具有多条与Internet 的连接,最好这些连接通过不同的地理区域。 而且站点的服务位置越分散,IP 地址越分散,则攻击者同时寻找和定位所有服务器的难度 就越大。这样的网络在实际环境的一个体现就是内容配送网(Content Distributed Network, CDN),把网络内容分发到多个地理上分散的服务器上,在全球范围内实现内容的有秩序流 动。

其他的类似方法有服务器端的负载均衡,具体可以使用反向Cache、第4/7 层交换机等

设备置于服务器集群之前,可以有效的降低负载,甚至有些四层交换机设备本身具有检测拒 绝服务攻击的功能。

2.5.2 带宽限制

在拒绝服务攻击发生的时候,针对单个协议的攻击会耗尽站点的所有带宽,使得其他合 法用户的请求被拒绝。一种防范办法是按照协议划分带宽,限制每个协议能够占用的带宽。 例如设置端口23 使用20%,而端口80 使用50%等。但是这种方法并不完善,攻击者仍然 可以同时发起针对这些端口的攻击。

2.5.3 及时安装系统补丁

当新的DoS 攻击出现并威胁计算机时,厂商一般会很快确定问题并发布补丁。如果总

是关注最新的补丁,并及时安装,则被攻击者利用的机会就会减少。还要注意在安装补丁之 前要首先进行测试,即使厂商生命它可以解决问题,但这并不意味着不会产生新问题。

2.5.4 运行尽可能少的服务

运行尽可能少的服务可以减少被成功攻击的机会,而且当运行的服务和开放的端口都很 少的时候,管理员的安全维护工作也更简单。

2.5.5 只允许必要的通信

这一防御机制与上一条有些类似,不过这里侧重于周边的环境,主要是指防火墙和路由 器。关键是不仅要对系统实施最少权限原则,对网络也要实施最少权限原则。确保防火墙只 允许必要的通信出入网络。例如,大多数网络都允许ICMP 通信出入网络,但是这种范围广 泛的通信对网络功能的正常发挥兵没有很大帮助。

24

2.5.6 封锁敌意IP 地址

当站点发现自己受到攻击时,应该马上确定发起攻击的IP 地址,并在其外部路由器上 封锁此IP 地址。但是这样做存在问题,路由器仍然会因为数据量太多而产生拥塞,导致合 法用户被拒绝对其他系统或网络的访问。因此,一旦发现攻击应该立刻通知上游的网络提供 商封锁敌意数据包,因为ISP 拥有较大的带宽和多点访问,即便它们封锁了敌意通信,仍然 可以保持合法用户的通信,也可以恢复被攻击站点的连接。

2.5.7 Random Drop 算法

它是当流量达到一定的数量限度时,所采取的一种通过降低性能,保证服务的不得已的 方法,其过程是这样的:当流量达到一定的阈值的时候,开始按照一定的算法丢弃后续的报 文,保持主机的处理能力,这样对于用户而言,许多合法的请求可能被主机随机丢弃,但是 有部分请求还是可以得到服务器响应,保证服务是不间断运行的。

2.6 防范分布式拒绝服务攻击

前面已经讲过,可以采取一些措施来减少成为DoS 攻击目标的机会,无论受害者是单 台还是多台计算机,它们采取的防御措施都是一样的,因为防范机制是相同的。

考虑到分布式拒绝服务攻击把攻击者分散到不同的网络中,并利用这些网络上的计算机实施 攻击,所以防范分布式拒绝服务攻击还应当确保自己的机器没有被攻击者用作DDoS 傀儡来 攻击其他站点。下面是一些补充措施。

2.6.1 保持网络安全

从根本上来说,如果攻击者无法获得网络的访问权,无法攻克主机,他就无法在系统上 安装DDoS 代理。就是说如果周边的网络环境不容易突破,系统就可以保持安全。

2.6.2 安装入侵检测系统

对于安全来说,防范不足以保证所需的安全,检测也是必需的。只要站点接入到了网络 中,要阻止所有的攻击是不可能的,总是会有薄弱的地方被攻击者利用。因此,尽快检测到 正在进行的攻击是非常关键的,这就需要安装入侵检测系统(IDS)。有关入侵检测系统的 相关内容可以在本实验讲义的后续实验中找到。

2.6.3 使用扫描工具

为了确定自己的网络没有被攻克并安装了DDoS 代理程序,应该对网络进行扫描以查找 DDoS 代理。有一些工具可以做到这一目的,而且大多数的商业漏洞扫描程序都能够检测到 系统是否被用作DDoS 代理。下面是一些可以获得的工具:

Find_ddos:这一程序有运行于各种系统上的不同版本,它可以扫描多种操作系统并检 测到许多的DDoS 程序。

Security Auditor’s Research Assistant(SARA,安全审计调查助理):SARA 是一个漏洞 扫描器,可以支持检测广泛的系统漏洞,并可以检测存放在计算机系统上的DDoS 软件。 DDoSPing:运行于Windows 系统之上,有简单易用的GUI 图形界面,可以扫描多种 DDoS 代理。

使用这些扫描工具需要注意的是,只有当DDoS 程序安装在默认端口时这些工具才会起

25


计算机网络安全与管理实验(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:其年级上册第四单元教案 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: