阻止 IP 连接

阻止 IP 连接

我的 Apache 网络服务器有问题,它有多个 IP 连接到我的服务器,使用大量连接并且不会死机,最终导致我的网络服务器超时。如果我使用以下方法检查,连接将保持 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。

有人能指出我的错误吗?有没有办法永久阻止它。

答案1

你能向我们展示一下

iptables-save

?规则的顺序可能不是你想的那样。那么

iptables -A OUTPUT -s 89.149.244.117 -j REJECT

可能应该这样写:

iptables -A OUTPUT -**d** 89.149.244.117 -j REJECT

顺便问一下,为什么是 REJECT 而不是 DROP ?那么如果你使用状态模块,你应该这样写:

iptables -A INPUT  -m state --state NEW -p tcp --dport 80 -j ACCEPT

请注意,如果您的服务器位于 DSR 模式的负载均衡器后面,则状态模块将无法正常工作。

答案2

处于 SYN_SENT 状态的连接称为胚胎连接。当您尝试连接到 IP 地址,但由于某种原因,该 IP 无法与您联系时,就会发生这种情况。这意味着试图与他建立联系,而不是相反。

我不知道在您添加这两条规则之前它是什么样子,但是按照现在的方式,您可以发送三路握手的第一部分(SYN),但无法接收第二部分(SYN / ACK),并且每次尝试都会使连接处于 SEN_SENT 状态。

我怀疑您复制/粘贴了第一条规则来创建第二条规则,并将 INPUT 更改为 OUTPUT,但忘记更改-s-d。我知道,因为我自己已经做过不止一次了。

答案3

您需要尝试“FAIL2BAN”Linux 实用程序,它可以阻止大多数此类暴力攻击。Fail2Ban 支持对 ssh、apache 和许多其他服务的暴力攻击保护。例如,如果某个 IP 地址试图建立大量并发连接,则 fail2ban 将通过 iptables 自动添加(并在一段时间后删除)该 IP 地址来阻止它。

相关内容