EGN*_*EGN 14 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
Run Code Online (Sandbox Code Playgroud)
我停止了所有脚本,但它仍在继续尝试.
我知道这意味着IP没有响应,SYN_SENT但我怎么能阻止它们SYN_SENT呢?或者最佳解决方案是什么?
谢谢.
EGN*_*EGN 47
这个问题似乎得到了很多观点但却没有答案,所以我决定回答我自己的问题,寻找解决方案的任何人.
首先,了解原因是解决方案的一半.我处于所谓的SYN Flooding Attack之下,它使用针对自身的HTTP协议行为
缺点是,远程客户端尝试通过发送SYN与您的服务器建立连接,您的服务器回复SYN_ACK(在您的日志中您将看到SYN_SENT)并将等待它收到ACK.如果在xx秒内没有收到ACK,您的服务器将再次发送SYN_ACK,....再次发送.... 它最终将达到配置的阈值并停止接受任何更多的SYN请求,使您的服务器无响应.发生在我身上的一个症状是我的网站曾经响应一次没有错,但在接下来的xx时没有响应.

对我有用的解决方案是启用SYN cookie,SSH到您的服务器,使用您喜欢的编辑器打开以下文件.我在这个例子中使用vi
vi /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)
并将这些行添加到文件中,然后重新启动服务器.希望这会像对我一样阻止攻击
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3
Run Code Online (Sandbox Code Playgroud)
我正在使用CentOS,我认为上述解决方案适用于所有发行版,但万一它没有为你的linux发行版搜索"如何停止SYN Flooding攻击"
另外,阻止启动SYN请求的IP可能无济于事,因为攻击者很可能欺骗了IP