无法使用iptables阻止蛮力SSH


9

我试图阻止(减慢)我的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            

4
我建议使用fail2ban来处理显示暴力破解尝试的阻止IP。易于安装和配置。我知道它不能直接回答您的问题,但可以为您节省石膏板的一些孔。
Banjer 2013年

1
与@Banjer达成共识-忘记该rackaid链接,设置fail2ban。
Shadur

MaxStartups在守护程序方面进行任何调整可能会有所帮助吗?
彼得

2
@peterph仅当您要将暴力破解尝试变为拒绝服务时。
沙杜尔

为什么要将ssh服务器暴露在Internet上,然后尝试将其后果降至最低?无论是在办公室还是在家里,我都通过ipsec VPN进入,根本没有SSH可以打开。
Rui F Ribeiro

Answers:


5

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

您需要做的是设置 fail2ban。它在后台使用iptables自动阻止来自主机的连接尝试,这些主机从各种来源生成失败的访问尝试。它功能强大,可以添加和修改不同的阈值,模式以查找和禁止方法。您必须稍微调整其默认的ssh监狱以解决您所使用的非标准端口,但这并不难。


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

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

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

0

您读过手册页吗?

人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).

3
无济于事。如今,分布式机器人网络经常使用SSH bruteforce攻击,因此每个连接仅进行三到四次尝试,但是您将有来自不同主机的数百个连接。
沙杜尔

0

我只是尝试了两个规则解决方案,但在检查时遇到了相同的问题。然后,我指出发布的规则可以-i eth0选择!我将其更改为良好的网络接口,终于开始工作了。


0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.