无法使用 iptables 阻止蛮力 ssh

Sep*_*ero 9 ssh iptables sshd

我正在尝试阻止(减慢)对我的 sshd 服务器的暴力攻击。我正在遵循本指南http://www.rackaid.com/resources/how-to-block-ssh-brute-force-attacks/基本上说我只需要输入下面的 2 个命令。

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

我的 sshd 端口是 6622,所以我将条目从“22”更改为“6622”,并将这些命令放入。然后我尝试简单地测试新的 iptables。我去了另一台电脑,故意输入错误的登录密码几次。不幸的是,新规则似乎并没有阻止我随心所欲地尝试。下面列出的是我目前的规则。我究竟做错了什么?

# iptables --list

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere             tcp dpt:6622 state NEW recent: UPDATE seconds: 60 hit_count: 4 name: DEFAULT side: source
           tcp  --  anywhere             anywhere             tcp dpt:6622 state NEW recent: SET name: DEFAULT side: source

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain LOGDROP (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             LOG level warning
DROP       all  --  anywhere             anywhere            
Run Code Online (Sandbox Code Playgroud)

Sha*_*dur 5

正如@banjer 在他的评论中指出的那样,您正在为实际问题尝试错误的解决方案。

您需要做的是设置 fail2ban。它在后台使用 iptables 自动阻止来自主机的连接尝试,这些主机会从各种来源生成失败的访问尝试。它具有令人难以置信的多功能性,可让您添加和修改不同的阈值、模式以查找和禁用方法;您必须稍微调整其默认的 ssh jail 以考虑您正在使用的非标准端口,但这应该不难。


slm*_*slm 1

我使用这样的规则来减慢速度:

iptables -A DDoS -m limit --limit 12/s --limit-burst 24 -j RETURN
iptables -A DDoS -j LOG --log-prefix "[DDos Attack?] "
iptables -A DDoS -j DROP
Run Code Online (Sandbox Code Playgroud)

在其他地方我限制这样的事情:

LOGLIMIT="50/h"
LOGLIMITBURST="10"
iptables -A IANA -p tcp -m limit --limit $LOGLIMIT --limit-burst \
     $LOGLIMITBURST -j DROP
Run Code Online (Sandbox Code Playgroud)