SSH / SSHD – 如何设置最大login尝试?

在LAMP环境(通过yum安装sshd)中设置最大login尝试的最简单方法是什么? 有一个包或简单的防火墙规则?

我使用Fail2ban ; 过去我曾经使用过Denyhosts ,而且效果也不错。 现在我更喜欢Fail2ban,因为它更易于configuration,并且能够更好地处理监视多个不同的服务 – 例如,您的sshd和您的web应用程序的login页面同时存在(假设您logging失败)。

你可能考虑的另一种方法是在iptables实现一个LIMIT规则; 不幸的是,除非你想安装Shorewall ,否则不能帮你,除非你想安装Shorewall ,否则我只是简单地指向你那个站点的优秀文档,以便如何configuration一个LIMIT规则来限制某人强制你的服务器。

我不喜欢使用任何第三方工具。 因此我使用了sshconfiguration和防火墙设置的组合。 使用以下解决scheme,攻击者可以在2分钟内准确产生3次故障login,直到他将被阻塞120秒。

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

 MaxAuthTries 1 

这将只允许每个连接1次login尝试。 重新启动ssh服务器。

2)添加以下防火墙规则

创build一个新的链

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

阻止每个IP地址120秒,在120秒内build立三个以上的连接。 SSHATTACK连接尝试的情况下,请求被委托给SSHATTACK链,负责logging可能的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)在/var/log/syslog查看可能的shh攻击的日志条目

 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 

没有与SSH相关的特定软件包来设置它。 然而你可以安装ConfigServer&Firewall的CSF。

CSF

我build议的两个configuration更改将在文件:/ etc / ssh / sshd_config中进行

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

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

减less断开连接之前允许成功login的最长时间。 2分钟的默认值是持续打开未经身份validation的连接尝试的时间太长(参见上文)。 30秒是足够的时间login:

  • 默认值 :LoginGraceTime 2m
  • LoginGraceTime 30

我使用这些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 

这将只允许4个TCP / SYN数据包在5分钟内从IP地址端口22。 如果进行更多的尝试,关门直到5分钟结束。

有一个选项,你可以把你的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.