无法使用 iptables 阻止暴力 ssh

无法使用 iptables 阻止暴力 ssh

我正在尝试阻止(减慢)对我的 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

我的 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            

答案1

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

你需要做的是设置 失败2禁止。它在后台使用 iptables 自动阻止来自各种来源的失败访问尝试的主机的连接尝试。它的用途非常广泛,可以让您添加和修改不同的阈值、模式以查找和禁止方法;你必须稍微调整它的默认 ssh 监狱来考虑你正在使用的非标准端口,但这应该不难。

答案2

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

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

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

LOGLIMIT="50/h"
LOGLIMITBURST="10"
iptables -A IANA -p tcp -m limit --limit $LOGLIMIT --limit-burst \
     $LOGLIMITBURST -j DROP

答案3

你读过手册页吗?

人 sshd_config:

 MaxAuthTries
         Specifies the maximum number of authentication attempts 
         permitted per connection.  Once the number of failures 
         reaches half this value, additional failures are logged. 
         The default is 6.
 MaxSessions
         Specifies the maximum number of open sessions permitted 
         per network connection.  The default is 10.
 MaxStartups
         Specifies the maximum number of concurrent unauthenticated
         connections to the SSH daemon.  Additional connections
         will be dropped until authentication succeeds or 
         the LoginGraceTime expires for a connection. The default is 10:30:100.

         Alternatively, random early drop can be enabled by specifying
         the three colon separated values “start:rate:full” (e.g.
         "10:30:60").  sshd(8) will refuse connection attempts with a
         probability of “rate/100” (30%) if there are currently “start”
         (10) unauthenticated connections.  The probability increases
         linearly and all connection attempts are refused if the 
         number of unauthenticated connections reaches “full” (60).

答案4

大多数教程使用-A附加到规则集的末尾。 OP 用于-I插入但没有索引,因此规则最终顺序错误。

调试 iptables 规则的一个有用工具是iptables -vL列出规则以及每个规则已应用的次数。当意外计数为 0 时,它可以帮助您了解问题所在。

相关内容