我在给定的端口运行服务(让我们说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
......
这些SYN_RECV连接中约有30个。如果我的假设是正确的,它似乎是一个非常复杂的僵尸网络,通过Tor网络。
我可以对这种攻击做些什么?任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
有许多可能的方法可以有效防御DDOS攻击。大多数涉及网络流量的分析,但区分了已知的'防御软件能够匹配的攻击/技术,导致不规则活动的新攻击,以及健康活动的概况。
毫无疑问,有效的防御将取决于您可用的工具和您正在使用的系统。也许这个视频可以给你一些想法。
答案 1 :(得分:0)
您可能希望实施SYNPROXY iptables规则,该规则会在添加conntrack条目之前执行3WHS,当您处于synflood攻击时它会饱和。
我亲自测试并确认它确实有效。这是Red Hat开发人员在Linux内核中推送SYNPROXY的解释: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,则需要进行一些更改,因为使用conntrack的NAT和第一个数据包上的SYNPROXY阻止conntrack。
如果你需要它,我在某个地方解决了这个问题(它只需要一些时间才能找到它们)。
编辑:基本上,你需要将tcp流的nat从-t nat -A PREROUTING
移到-t nat -A OUTPUT