23

即使在重新启动服务器后,运行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?或者什么是最好的解决方案?

谢谢。

4

1 回答 1

66

这个问题似乎得到了很多意见,但没有答案,所以我决定为任何寻求解决方案的人回答我自己的问题。

首先,知道原因是解决方案的一半。我遇到了所谓的 SYN 洪水攻击,它使用 HTTP 协议行为来攻击自己

简而言之,远程客户端尝试通过发送 SYN 与您的服务器建立连接,您的服务器以 SYN_ACK 回复(在您的日志中您将看到 SYN_SENT)并等待它收到 ACK。如果在 xx 秒内未收到 ACK,您的服务器将再次发送 SYN_ACK,....再一次....再一次。它最终会达到配置的阈值并停止接受任何更多的 SYN 请求,从而使您的服务器无响应。发生在我身上的症状之一是我的网站响应了一次,好像没有任何问题,但在接下来的 xx 次中没有响应。

HTTP 协议 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,我认为上述解决方案适用于所有发行版,但如果它没有为您的 linux 发行版搜索“如何停止 SYN Flooding Attack”

附带说明一下,阻止发起 SYN 请求的 IP 可能无济于事,因为攻击者很可能已经欺骗了 IP

于 2014-06-11T20:14:14.277 回答