我有一个问题与我的Apache Web服务器有IP地址,而不是连接到我的服务器,使用大量的连接,并不会死,最终使我的Web服务器超时。 如果我检查使用,连接将保持SYN_SENT状态
netstat -netapu
我什至冲我的iptables和使用基本的规则,它仍然无法正常工作。 当我启动我的Apache时,IP将被连接
我使用的基本规则:
iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
iptables -A INPUT -s 89.149.244.117 -j REJECT
iptables -A OUTPUT -s 89.149.244.117 -j REJECT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT iptables -A INPUT -j REJECT iptables -A FORWARD -j REJECT
大胆的部分是有问题的规则。
不知道这是相关的,但tcp_syncookies值是1。
有人能指出我的错误吗? 有没有办法阻止它的好处。
你能告诉我们的输出吗?
iptables-save
? 也许规则的顺序不是你想象的那样。 然后
iptables -A OUTPUT -s 89.149.244.117 -j REJECT
应该可能会读:
iptables -A OUTPUT -**d** 89.149.244.117 -j REJECT
顺便说一下,为什么拒绝而不是DROP? 那么如果你正在使用状态模块,你应该写:
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
请注意,如果您的服务器在DSR模式下位于负载均衡器后面,则状态模块将无法正常工作。
卡在SYN_SENT状态的连接被称为胚胎连接 。 当您尝试连接到IP地址时出现这种情况,并且出于某种原因IP无法与您联系。 这意味着你正试图连接到他,而不是相反。
我不知道在添加这两个规则之前是什么样子的,但是现在它们是这样的,你可以发送三次握手的第一部分(SYN),但是不能接收第二部分(SYN / ACK),这将为每次尝试留下一个处于SEN_SENT状态的连接。
我怀疑你复制/粘贴第一个规则创build第二个和改变INPUT输出,但忘记更改-s为-d 。 我知道,因为我自己不止一次地做过。
你需要尝试一下“FAIL2BAN”的linux工具,它可以阻止大部分这样的暴力攻击。 Fail2Ban支持保护ssh,apache等众多服务的powershell攻击。 例如,如果一个IP地址正在尝试build立大量的并发连接,那么fail2ban将通过iptables自动添加(并在一段时间后删除)该IP地址来阻止它。