fail2ban在一系列*成功*login后禁止我

我使用authorized_keys文件为我的一台服务器创build了一个无密码的sshlogin名。

服务器上有fail2ban,我注意到,几次成功的login后,我不能再login(连接超时。)如果我禁用fail2ban,我可以再次login。有没有办法configurationfail2ban不算我的成功login对我?

谢谢!

我也有类似的情况。 即使login成功,sshd日志文件(/ var / log / messages)中也会出现“Failed”消息。这是由正则expression式引起的(见Chris S答案):

^%(__prefix_line)sFailed [-/\w]+ for .* from <HOST>(?: port \d*)?(?: ssh\d*)?$ 

从/ var / log / messages文件中匹配这样的行:

 Apr 18 14:07:02 hostname sshd[20972]: Failed none for root from 123.45.67.89 port 50472 ssh2 

当用户login成功时,消息文件中仍然出现“失败的无”消息。

为了解决这个问题,我改变了sshd_config文件(/ etc / ssh / sshd_config)来指定

 LogLevel INFO 

而不是

 LogLevel VERBOSE 

这将停止成功login的“失败无人”消息,但保留login失败。

我也考虑过更新sshd.conf fail2banconfiguration文件,并在'ignoreregex'这一行添加一些内容,但更新sshd是一个更清晰的解决scheme。

您可以使用ignoreipconfiguration选项告诉fail2ban忽略您的IP。

http://www.fail2ban.org/wiki/index.php/Commands

进入/etc/fail2ban/jail.conf添加类似的东西

 ignoreip = 127.0.0.1 192.168.0.0/24 

我的sshd.local文件有这一行来解决类似的问题。 比较你的,应该是类似的:

 failregex = ^%(__prefix_line)s(?:error: PAM: )?[A|a]uthentication (?:failure|error) for .* from <HOST>\s*$ ^%(__prefix_line)sDid not receive identification string from <HOST>$ ^%(__prefix_line)sFailed [-/\w]+ for .* from <HOST>(?: port \d*)?(?: ssh\d*)?$ ^%(__prefix_line)sROOT LOGIN REFUSED.* FROM <HOST>\s*$ ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>\s*$ ^%(__prefix_line)sUser \S+ from <HOST> not allowed because not listed in AllowUsers$ ^%(__prefix_line)sauthentication failure; logname=\S* uid=\S* euid=\S* tty=\S* ruser=\S* rhost=<HOST>(?:\s+user=.*)?\s*$ ^%(__prefix_line)srefused connect from \S+ \(<HOST>\)$ 

这不是解决你的问题,但希望给你一个想法,为什么发生。

ssh客户端正如您所描述的那样使用ssh密钥。 我假设你的客户端在列出的ssh代理(ssh-add -l)中有多个ssh密钥。 在这样的设置中,ssh客户端连接到服务器,并尝试使用“其中一个密钥”进行身份validation。

那么会发生什么事是,ssh客户端一个接一个地尝试一个密钥,直到服务器接受一个密钥。

假设3个ssh密钥,最坏的情况会导致2个失败的尝试,然后成功login。 用fail2ban的“findtime”连接多次…而且你被禁止了。

我目前正在寻找一个解决scheme。 当我find它时,我会分享它。 ;)