在“n”次 SSH 登录失败后,如何暂时禁止 IP 地址?

Edg*_*gar 3 login ssh pam iptables limit

如何限制每个 IP 每分钟的 SSH 登录尝试次数?

我想在失败后的 5 秒内禁用登录尝试。这可能吗 ?我不是在谈论在解析像 Fail2ban 这样的日志后禁止用户。

rus*_*ush 7

看看iptables

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 5 --hitcount 2 -j DROP
Run Code Online (Sandbox Code Playgroud)

每 5 秒每个 IP 只允许 1 个新连接。


Hau*_*ing 7

问题 1

这可以通过模块来完成hashlimit

iptables -A INPUT -p tcp --dport 22 -m hashlimit \
  --hashlimit-mode srcip --hashlimit-above 3/minute -j DROP
Run Code Online (Sandbox Code Playgroud)

问题2

Netfilter 只看到登录失败的连接。您需要一个在两个级别都处于活动状态的工具(如 Fail2ban)。您可以创建一个具有被阻止 IP 的链,并在每次登录失败后运行一个脚本,这将执行类似的操作

iptables -A blocked_ips -s $evil_ip -j DROP
sleep 5
iptables -D blocked_ips -s $evil_ip -j DROP
Run Code Online (Sandbox Code Playgroud)