SYN攻击

最近对 SYN Flood 特别感兴趣,看到一个关于 SYN cookie firewall 的文章,在 google 搜了一下,没中文的,翻译他一下
本文介绍了4个概念
一:介绍 SYN
二:什么是 SYN 洪水攻击
三:什么是 SYN cookie
四:什么是 SYN cookie 防火墙
C=client(
客户器 )
S=Server(
服务器 )
FW=Firewall(
防火墙 )
一:介绍 SYN
SYN cookie
是一个防止 SYN 洪水攻击技术。他由 D. J. Bernstein Eric Schenk 发明。现在 SYN COOKIE 已经是 linux 内核的一部分了(我插一句

,默认的 stat no , 但是在 linux 系统的执行过程中它只保护 linux 系统。我们这里只是说创建一个 linux 防火墙,他可以为整个网络和所有的网

络操作系统提供 SYN COOKIE 保护你可以用这个防火墙来阻断半开放式 tcp 连接,所以这个受保护的系统不会进入半开放状态 (TCP_SYN_RECV) 。当

连接完全建立的时候,客户机到服务器的连接要通过防火墙来中转完成。

二:什么是 SYN 洪水攻击?(来自 CERT 的警告)
当一个系统(我们叫他客户端)尝试和一个提供了服务的系统(服务器)建立 TCP 连接, C 和服务端会交换一系列报文。
这种连接技术广泛的应用在各种 TCP 连接中,例如 telnet,Web,email, 等等。
首先是 C 发送一个 SYN 报文给服务端,然后这个服务端发送一个 SYN-ACK 包以回应 C ,接着, C 就返回一个 ACK 包来实现一次完

整的 TCP 连接。就这样, C 到服务端的连接就建立了,这时 C 和服务端就可以互相交换数据了。下面是上文的图片说明:)
Client Server
------ ------
SYN-------------------->

<--------------------SYN-ACK

ACK-------------------->

Client and server can now
send service-specific data

S 返回一个确认的 SYN-ACK 包的时候有个潜在的弊端,他可能不会接到 C 回应的 ACK 包。这个也就是所谓的半开放连接, S 需要

耗费一定的数量的系统内存来等待这个未决的连接,虽然这个数量是受限的,但是恶意者可以通过创建很多的半开放式连接来发动 SYN 洪水攻击
通过 ip 欺骗可以很容易的实现半开放连接。攻击者发送 SYN 包给受害者系统,这个看起来是合法的,但事实上所谓的 C 根本不会回应这个
SYN-ACK
报文,这意味着受害者将永远不会接到 ACK 报文。
而此时,半开放连接将最终耗用受害者所有的系统资源,受害者将不能再接收任何其他的请求。通常等待 ACK 返回包有超时限制,所以半开放

连接将最终超时,而受害者系统也会自动修复。虽然这样,但是在受害者系统修复之前,攻击者可以很容易的一直发送虚假的 SYN 请求包来持续

攻击。
在大多数情况下,受害者几乎不能接受任何其他的请求,但是这种攻击不会影响到已经存在的进站或者是出站连接。虽然这样,受害者系统

还是可能耗尽系统资源,以导致其他种种问题。
攻击系统的位置几乎是不可确认的,因为 SYN 包中的源地址多数都是虚假的。当 SYN 包到达受害者系统的时候,没有办法找到他的真实地址

,因为在基于源地址的数据包传输中,源 ip 过滤是唯一可以验证数据包源的方法。

三:什么是 SYN cookie
SYN cookie
就是用一个 cookie 来响应 TCP SYN 请求的 TCP 实现,根据上面的描述,在正常的 TCP 实现中,当 S 接收到一个 SYN 数据包,他返回

一个 SYN-ACK 包来应答,然后进入 TCP-SYN-RECV (半开放连接)状态来等待最后返回的 ACK 包。 S 用一个数据空间来描述所有未决的连接,

然而这个数据空间的大小是有限的,所以攻击者将塞满这个空间。
TCP SYN COOKIE 的执行过程中,当 S 接收到一个 SYN 包的时候,他返回一个 SYN-ACK 包,这个数据包的 ACK 序列号是经过加密的,也就

是说,它由源地址,端口源次序,目标地址,目标端口和一个加密种子计算得出。然后 S 释放所有的状态。如果一个 ACK 包从 C 返回,

S
将重新计算它来判断它是不是上个 SYN-ACK 的返回包。如果这样, S 就可以直接进入 TCP 连接状态并打开连接。这样, S 就可以

避免守侯半开放连接了。
以上只是 SYN COOKIE 的基本思路,它在应用过程中仍然有许多技巧。请在前几年的 kernel 邮件列表查看 archive of discussions 的相关详细

内容。
4
,什么是 SYN COOKIE 防火墙
SYN COOKIE
防火墙是 SYN cookie 的一个扩展, SYN cookie 是建立在 TCP 堆栈上的,他为 linux 操作系统提供保护。 SYN cookie 防火墙是 linux

一大特色,你可以使用一个防火墙来保护你的网络以避免遭受 SYN 洪水攻击。
下面是 SYN cookie 防火墙的原理
client firewall server
------ ---------- ------
1. SYN----------- - - - - - - - - - ->
2. <------------SYN-ACK(cookie)
3. ACK----------- - - - - - - - - - ->
4. - - - - - - -SYN--------------->
5. <- - - - - - - - - ------------SYN-ACK
6. - - - - - - -ACK--------------->

7. -----------> relay the ------->
<----------- connection <-------
1:
一个 SYN 包从 C 发送到 S
2
:防火墙在这里扮演了 S 的角色来回应一个带 SYN cookie SYN-ACK 包给 C
3
C 发送 ACK 包,接着防火墙和 C 的连接就建立了。
4
:防火墙这个时候扮演 C 的角色发送一个 SYN S
5
S 返回一个 SYN C
6
:防火墙扮演 C 发送一个 ACK 确认包给 S ,这个时候防火墙和 S 的连接也就建立了
7
:防火墙转发 C S 间的数据
如果系统遭受 SYN Flood ,那么第三步就不会有,而且无论在防火墙还是 S 都不会收到相应在第一步的 SYN 包,所以我们就击退了这次 SYN 洪水攻 击。

你可能感兴趣的:(职场,安全,休闲)