如何停止SYN_SENT?

时间:2012-07-30 21:01:43

标签: linux dedicated-server

正在运行netstat显示数百条此行,即使重新启动服务器后 - 它再次开始发送,导致与该IP的多个连接。

tcp        0      1 server1700.skdedicate:36283 154.45.206.59:https   SYN_SENT
tcp        0      1 server1700.skdedicate:36283 154.45.206.59:https   SYN_SENT
tcp        0      1 server1700.skdedicate:36283 154.45.206.59:https   SYN_SENT
tcp        0      1 server1700.skdedicate:36283 154.45.206.59:https   SYN_SENT
tcp        0      1 server1700.skdedicate:36283 154.45.206.59:https   SYN_SENT

我停止了所有脚本,但它仍在继续尝试。

我知道这意味着IP没有响应SYN_SENT但是如何阻止SYN_SENT?或者最佳解决方案是什么?

感谢。

1 个答案:

答案 0 :(得分:39)

这个问题似乎得到了很多观点但却没有答案,所以我决定回答我自己的问题,寻找解决方案。

首先,了解原因是解决方案的一半。我处于所谓的SYN Flooding Attack之下,它使用针对自身的HTTP协议行为

缺点是,远程客户端尝试通过发送SYN与您的服务器建立连接,您的服务器回复SYN_ACK(在您的日志中您将看到SYN_SENT)并将等待它收到ACK。如果在xx秒内没有收到ACK,您的服务器将再次发送SYN_ACK,....再次发送....它最终将达到配置的阈值并停止接受任何更多的SYN请求,使您的服务器无响应。发生在我身上的一个症状是,我的网站在没有错误的情况下做出响应,但在接下来的xx时间没有响应。

HTTP Protocol SYN

对我有用的解决方案是启用SYN Cookie,SSH到您的服务器,使用您喜欢的编辑器打开以下文件。我在这个例子中使用了vi

vi /etc/sysctl.conf

将这些行添加到文件中,然后重新启动服务器。希望这会像对我一样阻止攻击

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3

我使用的是CentOS,我认为上述解决方案适用于所有发行版,但万一它没有搜索"如何停止SYN Flooding Attack"为您的Linux发行版

另一方面,阻止启动SYN请求的IP可能无济于事,因为攻击者很可能欺骗了IP