SSH / SSHD-如何设置最大登录尝试次数?


Answers:


11

我使用Fail2ban ; 我用过 Denyhosts,它也运行得很好。我现在更喜欢Fail2ban,因为它具有更高的可配置性,并且能够处理监视多种不同的服务-例如,同时sshd和Web应用程序的登录页面(前提是您记录失败)。

您可能考虑的另一种方法是在中实现LIMIT规则iptables。不幸的是,除非您要安装Shorewall,否则我将无法为您提供帮助,然后我只是将您引向该站点上的优秀文档,以帮助您配置LIMIT规则以限制某人的暴力行为-强制服务器。


我应该补充说,许多发行版的存储库中都提供Fail2ban,因此安装起来很容易。我没有在任何地方看到Denyhosts,但这并不意味着它不在某些地方,也不意味着自从我上次检查以来就没有添加它。
Kromey

我遇到的问题是v0.8.14的fail2ban无法正确使用iptables-multiport命令。而这是已知的问题,它以新版本解决了fail2ban实用程序...这里是描述:github.com/fail2ban/fail2ban/issues/798所以我只相信服务器软件中开发的安全机制,也不相信第三者实用程序...
乔治·加尔(GeorgeGaál)2016年

44

我不喜欢使用任何第三方工具。因此,我结合使用了ssh配置和防火墙设置。使用以下解决方案,攻击者可以在2分钟内生成3次错误登录,否则将被阻止120秒。

1)将以下行添加到 /etc/ssh/sshd_config

MaxAuthTries 1

每个连接只能进行1次登录尝试。重新启动ssh服务器。

2)添加以下防火墙规则

创建一个新链

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

阻止每个IP地址120秒,这将在120秒内建立三个以上的连接。在进行第四次连接尝试时,该请求将委派给该SSHATTACK链,该链负责记录可能的ssh攻击并最终删除该请求。

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3)在中查看可能的ssh攻击的日志条目 /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

2
太棒了!但是我有一个问题,法国的某个家伙/机器人没有正确配置他的黑客工具,因此即使流量下降,他仍会继续登录。结果,我的日志每秒都被这个家伙填充。可以解决吗?
Smarties89

2
对于像我这样经验不足的人:iptables行是在bash提示符下键入的,而不是在某个地方的文件中输入的。
安德鲁·斯威夫特

4

没有与SSH相关的特定软件包来进行设置。但是,您可以安装CSF,即ConfigServer和防火墙。

脑脊液

我建议在文件中进行两个配置更改:/ etc / ssh / sshd_config

限制ssh服务器将同时处理的未认证连接的最大数量。这越小,脚本小子就很难通过多个连接进行并行,协调的破解尝试。编辑sshd_config并将MaxStartups从默认的“ 10”更改为“ 3:50:10”。以冒号分隔的值告诉ssh服务器:“允许3个用户尝试同时登录,并在3个和最多10个之间(最多10个)之间随机增加连接尝试次数”。注意:在具有大量有效ssh用户登录的服务器上,应增加此数目。

  • 默认值:MaxStartups 10
  • MaxStartups 3:50:10

减少断开连接前成功登录所允许的最长时间。默认的2分钟是太多时间,无法打开未经身份验证的连接尝试(请参见上文);30秒足以登录:

  • 默认值:LoginGraceTime 2m
  • LoginGraceTime 30

3

我将这些IPTables规则用于此目的:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

这将仅允许5分钟内从IP地址向端口22发送4个TCP / SYN数据包。如果尝试更多,则将门关闭直到5分钟结束。


需要编辑什么?
timkofu 2012年

几乎与:相同-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
Alix Axel 2012年

我在Debian Jessie中做了这两个iptables命令,但是仍然可以看到每2秒从相同IP地址进行SSH登录尝试。有任何想法吗?
Alexey Ozerov

1

您可以将选项放入服务器的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.

有用的(特别是与已提出的其他建议结合使用时),但不能真正解决问题,因为对于某人而言,保持重新连接很简单。
克鲁米2011年
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.