使用命令 netstat 手动缓解 DDOS。如何确定真正的攻击者?

使用命令 netstat 手动缓解 DDOS。如何确定真正的攻击者?

当我的服务器很慢时,我被告知运行此命令并检查是否有人发出 SYN_RECV 请求来减慢我的服务器速度:

netstat -npt  | grep SYN_RECV | awk '{print $5}' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | cut -d: -f1 | sort | uniq -c | sort -nr | head | tee -a $REPORT_FILE 

输出示例:

Single attack IP - DOS:
  262 187.7.214.146
  1   95.90.250.96
  1   83.215.15.150
  1   203.160.112.239
  1   124.197.39.213

Multiple attack IPs - DDOS:  
  316 187.7.214.146
  94  187.7.214.96
  44  187.7.214.150
  90  203.160.112.239
  22  203.160.112.222

我读到过一篇文章,说如果某个 IP 的 SYN_RECV 请求数超过 4,则考虑发起 SYN 洪水攻击 (DOS)。我有几个问题:

1) 使用此 netstat 命令时,我们可以声明 IP(DOS)或 IP(DDOS)发起攻击的确切数字是多少? 如果 IP 以 SYN_RECV 状态连接,是否意味着他正在进行 SYN 洪水攻击? 这可能是假象吗?

2)SYN_RECV 是 DDOS 攻击者使用的唯一监听状态吗?ESTABLISHED 状态呢?我很困惑,因为其他文章说如果一些外国 IP 以 ESTABLISHED 状态连接,那么我的服务器就受到攻击了。什么样的攻击

3) 我问这个问题是因为我想制作一个简单的 bash 脚本,可以手动报告 IP 是否是攻击者,并且我被告知使用 SYN_RECV 状态来评估攻击者。这是我们唯一可以使用的状态吗?可以被视为安全(不是 DOS 攻击者)的 SYN_RECV 值的最小值是多少?

希望我的问题清楚。如果有不清楚的地方,请问我。

谢谢你,我希望有人能解答这个噩梦。

答案1

  1. 当某个 IP 地址(攻击者)向您的服务器发送大量 SYN 数据包时,就会发生拒绝服务,然后您的服务器设置为响应每个数据包并保持端口开放(准备接收响应)。您的服务器需要 ACK 数据包才能正确关闭响应,但攻击者从未发送 ACK 数据包,他会继续发送更多的 SYN 数据包,这些数据包会在一定时间内打开更多的新端口连接,最终填满所有可用端口,从而降低您的服务器速度。因此,带有 SYN_RECV 请求的 IP 意味着他正在向您的服务器发送坏数据包,所以是的,这是一次 DOS 攻击,但是对于数字 4,它被认为是一次微小的 DOS 攻击,可能不会对拥有大量资源的服务器产生负面影响。

  2. 对此,实际上存在多种类型的 DOS 或 DDOS 攻击,SYN_FLOOD 只是一种流行的 SYN FLOOD 攻击的名称。

  3. 在生产服务器中手动进行 DDOS 缓解并不好。您可以使用其他内置自动化解决方案(如Suricata或 cloudflare)来实现这一点。

SYN FLOOD DDOS 攻击 - CLOUD FLARE

相关内容