防范可能的 syn-flood DDoS 攻击

Protection against possible syn-flood DDoS attack

提问人:user994612 提问时间:1/23/2018 更新时间:1/23/2018 访问量:1614

问:

我正在给定端口(假设 1234)运行服务。有时无法访问。当我检查 dmesg 时,我看到:

TCP:端口 1234 上可能存在 SYN 泛洪。发送 Cookie。检查SNMP计数器

net.ipv4.tcp_max_syn_backlog设置为 1024

当我检查netstat时,我看到:

TCP 0 0 exampledomainname.com:5008 IP190-5-138-234.I:56772 SYN_RECV
TCP 0 0 exampledomainname.com:5008 IP190-5-138-234.I:56771 SYN_RECV
TCP 0 0 exampledomainname.com:1234 216.218.222.14:18687 SYN_RECV
TCP 0 0 exampledomainname.com:1234 185.234.218.50:59848 SYN_RECV
TCP 0 0 exampledomainname.com:1234 tor-exit.r2.apx.p:45992 SYN_RECV
tcp 0 0 exampledomainname.com:1234 tor-exit1.signal.:42747 SYN_RECV
tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:29545 SYN_RECV tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:19883 SYN_RECV tcp 0 0 exampledomainname.com:1234 5.188.86.30:53106 SYN_RECV tcp 0 0 exampledomainname.com:1234 lh28409.voxility.:59899 SYN_RECV tcp 0 0 exampledomainname.com:1234 tor-exit1.signal.:40048 SYN_RECV




tcp 0 0 exampledomainname.com:1234 62.176.4.10:48546 SYN_RECV
tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:52326 SYN_RECV tcp 0 0 exampledomainname.com:1234 sunfire-cape.gate:44592 SYN_RECV tcp 0 0 exampledomainname.com:1234 sunfire-cape.gate:44590 SYN_RECV tcp 0 0 exampledomainname.com:1234 chomsky.torserver:45374 SYN_RECV tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:60156 SYN_RECV




tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:47522 SYN_RECV
tcp 0 0 exampledomainname.com:1234 tor-exit.r2.apx.p:38568 SYN_RECV tcp 0 0 exampledomainname.com:1234 chulak.enn.lu:34309 SYN_RECV tcp 0 0 exampledomainname.com:1234 185.100.86.128:35623 SYN_RECV


tcp 0 0 exampledomainname.com:1234 tor-exit1.signal.:42921 ...

其中大约有 30 个SYN_RECV连接。如果我的假设是正确的,它似乎是一个非常复杂的僵尸网络,它通过 Tor 网络。

我能做些什么来应对这种攻击?任何帮助将不胜感激。

安全 iptables DDoS 泛洪 僵尸网络

评论


答:

0赞 Leo Naylor 1/23/2018 #1

有许多可能的方法可以对DDOS攻击进行有效的防御。大多数涉及对网络流量的分析,但对防御软件能够匹配的“已知”攻击/技术的配置文件、导致异常活动的新型攻击和健康活动的配置文件进行了区分。

毋庸置疑,有效的防御将取决于您可用的工具和您使用的系统。也许这个视频可以给你一些想法。

https://www.youtube.com/watch?v=AqY3UxXyQTY

评论

0赞 user994612 1/23/2018
谢谢你的回答..不幸的是,我使用的是具有root访问权限的VPS,无法“购买并安装”更多硬件。
0赞 setenforce 1 1/23/2018 #2

您可能希望实现 SYNPROXY iptables 规则,该规则将在添加 conntrack 条目之前执行 3WHS,当您受到 synflood 攻击时,该条目会饱和。

我亲自测试过,可以确认它确实有效。这是在 linux 内核中推送 SYNPROXY 的 Red Hat 开发人员的解释: https://rhelblog.redhat.com/2014/04/11/mitigate-tcp-syn-flood-attacks-with-red-hat-enterprise-linux-7-beta/#more-273

来自文章:

sysctl -w net/netfilter/nf_conntrack_tcp_loose=0
iptables -t raw -I PREROUTING -i $DEV -p tcp -m tcp --syn --dport $PORT -j CT --notrack
iptables -A INPUT -i $DEV -p tcp -m tcp –dport $PORT -m state --state INVALID,UNTRACKED -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460
iptables -A INPUT -m state --state INVALID -j DROP
sysctl -w net/ipv4/tcp_timestamps=1

请注意,如果需要使用 NAT,则需要进行一些更改,因为 NAT 在第一个数据包上使用 conntrack 和 SYNPROXY 阻止 conntrack。

如果你需要它,我在某个地方有一些脚本可以解决这个问题(只是需要一些时间才能找到它们)。

编辑:基本上,您需要将 tcp 流的 nat 从 移动到-t nat -A PREROUTING-t nat -A OUTPUT

评论

0赞 user994612 1/28/2018
可悲的是,这对我来说不是一个正确的解决方案。我已经按照描述设置了它。使用“eth0”而不是$DEV。 DDoS 仍然可以把我带走。