使用条件语句使用 iptables 的防火墙规则

使用条件语句使用 iptables 的防火墙规则

我有防火墙规则,它应该接受所有连接,但会丢弃来自 ssh 暴力攻击的连接(10.0.0.0/8 范围除外)。如果 IP 每 10 分钟尝试的连接数超过 24 次,此规则将阻止该 IP。

    # Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 22 -s ! 10.0.0.0/8 -m state --state NEW -m recent --set --name SSH
-A INPUT -p tcp --dport 22 -s ! 10.0.0.0/8 -m state --state NEW -m recent --update --seconds 600 --hitcount 25 --rttl --name SSH -j DROP
-A INPUT -j ACCEPT
-A FORWARD -j ACCEPT
COMMIT

当我尝试启动 iptables 时,由于参数错误而出错。

iptables: Applying firewall rules: Bad argument `10.0.0.0/8'

答案1

SF 之前已经讨论过这个问题。iptables改变了它接受参数的方式。现在爆炸应该是参数,因此你的行变成这样:

-A INPUT -p tcp --dport 22 ! -s 10.0.0.0/8 -m state --state NEW -m recent --set --name SSH
-A INPUT -p tcp --dport 22 ! -s 10.0.0.0/8 -m state --state NEW -m recent --update --seconds 600 --hitcount 25 --rttl --name SSH -j DROP

是的,互联网上的每个博客都是错误的。

(这是我在 StackOverflow 上的回答的复制,问题本质上是一样的)

相关内容