fail2ban和denyhosts不断禁止我在Ubuntu上

我刚刚在Linode上获得了一个Ubuntu实例。 为了保护SSH,我安装了fail2ban (使用apt-get ),但是后来出现了一个问题:即使我input了正确的密码, fail2ban一直禁止我的IP(在有限的时间内,谢天谢地)。 所以我删除了fail2ban ,而是安装了denyhosts 。 同样的问题,但更严重的:这似乎每次我SSH进来,我的IP被禁止。 我从/etc/hosts.deny删除它,重新启动denyhosts ,再次login,我的IP被禁止了。

我能想到的唯一解释就是我已经以root身份进行了SSH连接(是的,是的,我知道); 也许某些地方设置了阻止以root身份进行SSHlogin的任何人,即使他们login成功了。 这对我来说似乎很怪异。 有任何想法吗? (将我的IP列入白名单是暂时的,我不想只能从一个IPlogin)。

我相信我看到有人说,其中一些应用程序会将失败的密钥login计为蛮力尝试。 你有一个ssh代理运行键吗? 连接到这个集合之前,将会在返回到密码之前依次提供每个密钥,所以这可能是为什么。 尝试设置更高的sshd日志级别,并检查fail2ban / denyhost日志。

编辑: 这是原来的来源,打开了我的方式来解决它。

请查看以下链接:

如果你想放弃整个失败的想法,就像下面的内森·鲍威尔(Nathan Powell)所说的那样,从22号港口转到更为模糊的东西

还有一些更多的想法:

  1. iptables:下面的例子将丢弃在10分钟内在端口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. 基于密钥的login

  3. 敲门人(敲)

如果您因为某个特定的原因而以root身份login,我希望您已经设置了密钥。 我会build议这些更改到您的sshd_config文件:

 PermitRootLogin without-password AllowUsers [email protected] 

locking哪个主机,你可以ssh到你的服务器作为根。

如果你不需要ssh作为root用户,那么你应该为自己build立一个普通的用户,创build一个ssh组或者其他东西,为用户设置密钥,把它们添加到分组ssh并将AllowGroups ssh添加到sshd_config

然后通过以root身份运行visudo为用户提供sudo访问权限,并在运行sudo commandX时join以下行: user ALL=(ALL) ALL ,这将允许您的用户root用户访问您的用户密码

确保sshd被locking是我的首要任务,尤其是在必须允许rootlogin的情况下。

即使在一个模糊的端口上运行,高级小子也会通过端口扫描find你。

如果打开返回到fail2ban,则可以始终在ignoreip中使用ignoreip指令。 例如:

 ignoreip = 127.0.0.1 192.168.1.0/32 

这样,你不会被你的马虎打字封锁;-)这也意味着人们不能阻止你通过欺骗你的IP(尽pipe任何TCPstream量是不是一个大问题)。

如果将sshd设置为VERBOSE日志logging级别(或更高),则每当用户成功login时,都会在系统日志中放置“… Failed none …”。默认情况下,fail2ban被设置为将此计为失败。 我通过将sshd的日志级别设置回INFO来解决了这个问题。

有关详细信息,请参阅我对此问题的回答fail2ban在一系列*成功*login后禁止我

我想如果你足够的绿色,通过阅读configuration文件和检查日志无法解决这个问题,你应该瞄准一下,直到你有一些经验。

如果您正在优化以阻止常见的powershell攻击,请更改sshd运行的端口。 这将涉及绝大多数这些。