fail2ban 和denyhosts 不断在 Ubuntu 上禁止我

fail2ban 和denyhosts 不断在 Ubuntu 上禁止我

我刚刚在 Linode 上获得了一个 Ubuntu 实例。为了确保 SSH 的安全,我安装了fail2ban(使用apt-get),但随后出现了一个问题:fail2ban尽管我输入了正确的密码,但 IP 还是被禁止(幸好时间有限)。所以我删除了它,然后fail2ban重新安装denyhosts。同样的问题,但更严重:似乎每次我通过 SSH 登录时,我的 IP 都会被禁止。我从 中删除它/etc/hosts.deny,重新启动denyhosts并再次登录,我的 IP 再次被禁止。

我能想到的唯一解释是我一直以 root 身份通过 SSH 登录(是的,是的,我知道);也许某个地方设置了某些东西,阻止任何以 root 身份通过 SSH 登录的人,即使他们成功登录?这对我来说似乎很奇怪。有什么想法吗?(将我的 IP 列入白名单是一种临时解决方案。我不想只能从一个 IP 登录。)

答案1

我相信我曾看到有人说,其中一些应用程序会将失败的密钥登录视为暴力破解尝试。您是否有一个运行着密钥的 ssh-agent?使用该设置进行连接将依次提供每个密钥,然后再返回到密码,所以这可能是原因。尝试将 sshd 的日志级别设置得更高,并检查 fail2ban/denyhost 日志。

编辑:这里是向我通报该问题的原始来源,并提供了解决方法。

答案2

请查看以下链接:

如果你想放弃整个 fail2ban 和denyhosts 的想法,请按照下面的 Nathan Powell 所说,将端口 22 更改为更不为人知的端口

还有一些想法:

  1. iptables:以下示例将丢弃十分钟内对端口 22 进行超过 2 次连接尝试的传入连接:

    iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW 
             -m recent --set
    
    iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW
             -m recent --update --seconds 60 --hitcount 4 -j DROP
    
  2. 基于密钥的登录

  3. 港口敲门者 (knockd)

答案3

如果将 sshd 设置为 VERBOSE 日志级别(或更高),则每当用户成功登录时,系统日志中都会出现短语“...Failed none...”。默认情况下,fail2ban 设置为将此视为失败。我通过将 sshd 的日志级别重新设置为 INFO 解决了该问题。

有关详细信息,请参阅我对这个问题的回答在我多次 *成功* 登录后,fail2ban 禁止了我

答案4

如果你愿意回到 fail2ban,你可以随时使用ignoreip中的指令jail.conf。例如:

ignoreip = 127.0.0.1 192.168.1.0/32

这样,您就不会因为输入错误而被屏蔽 ;-) 这也意味着人们无法通过伪造您的 IP 来屏蔽您(尽管对于任何 TCP 流量来说,这并不是什么大问题)。

相关内容