我的网站一直都有多个用户在线。服务器使用 Apache/PHP、数据库和 Memcached。在正常使用时,该应用程序运行良好且快速。
但是,服务器有时会受到“SYN 泛洪”攻击。我真的相信/怀疑这些是故意的,而不是由我们的合法用户造成的。(因为它们似乎发生在某些人注册新帐户并试图制造麻烦时)
6 月 27 日 22:12:21 xxxx 内核:[xxxx.xxxx] 端口 443 上可能发生 SYN 泛洪。正在发送 cookie。6 月 27 日 22:13:22 xxxx 内核:[xxxx.xxxx] 端口 443 上可能发生 SYN 泛洪。正在发送 cookie。6 月 27 日 22:14:25 xxxx 内核:[xxxx.xxxx] 端口 443 上可能发生 SYN 泛洪。正在发送 cookie。
不幸的是,当这种情况发生时,我的整个流量都会受到影响:
[2016 年 6 月 27 日星期一 22:15:28.842067] [mpm_event:error] [pid 12022:tid 132875292207712] AH00485:记分牌已满,未达到 MaxRequestWorkers
我的 MaxRequestWorkers 是 600。过去我曾多次增加过它。
最近我还将net.ipv4.tcp_max_syn_backlog
其增加到ListenBackLog
了 5000。
我的服务器有 16GB RAM 和 1 Gbps 带宽。
我很不高兴似乎有人可以轻易控制我的网站是否正常运行。
我们能做些什么来阻止这种情况?
另外,netstat
似乎会给我提供当前连接到服务器的 IP。
是否可以获取过去某个时间的顶级 IP?
答案1
- Syn Flood 是一种在单个主机上几乎不可能防范的攻击。
检查 SynCookies
cat /proc/sys/net/ipv4/tcp_syncookies
如果禁用则启用(设置为 1)。它可以帮助合法用户继续工作。
您也可以尝试设置 lover /proc/sys/net/ipv4/tcp_synack_retries
https://stackoverflow.com/a/26674591/205355
- 关于 IP
Synflood 通常使用伪造的随机源 IP,因此无法根据源 IP 进行过滤。
只要你的服务是公开的,任何人都可以轻松检查它的活跃度
您可以购买专业的 DDOS 保护服务。它使用巨大的区域分布式集群、地理位置感知 DNS、关联、ISP 合作等。它将干净的用户流量重定向到您的服务,而这些 IP 是公众(和黑客)未知的。但它的成本可能很高,并且取决于生存和减轻攻击所需的能力。