如何禁止试图以sshlogin的IP

我已经阻止以ssh身份login,所以我知道任何尝试这样做都是恶意的。 我知道他们不会成功(sshd不会允许),但是我仍然想立即禁止有关IP。 我该怎么做?

我正在运行Gentoo Linux,并且已经运行了fail2ban。 我不想禁止所有人login尝试失败,所以只需将fail2ban尝试设置为1不是一个选项。 Root是我希望立即禁止的唯一帐户。

我设置了两个不同的Fail2Ban规则:

  1. 如果他们尝试使用无效的用户名,他们将被永久禁止。 我没有很多人这样做,没有一个人被禁止, 但是如果你有很多人login,这可能是一个支持问题。根目录不是我的系统上有效的sshlogin名。

    我在FreeBSD系统上,所以你可能需要修改这个规则。 在filter.d目录下创build一个ssh-invaliduser.local文件:

    failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>\s*$ 

    jail.local文件中照常设置这个规则的选项。

  2. 第二条规则locking10分钟内密码错误10次的尝试。 没有人会以每分钟1个密码的平均速度进入。

如果您使用的是标准sshd日志输出,并且系统正在运行tcp wrapper tcpd ,请尝试以下操作:

首先在/etc/hosts.deny中添加这一行:

 sshd: /tmp/root_ban.list 

然后安排cron运行以下命令:

 awk '/invalid user root from/{print $13}' /var/log/ssh_auth.log | sort -u > /tmp/root_ban.list 

如果该命令的awk部分的输出不起作用,则调整条件部分: 无效的用户root来匹配您的sshd日志。 您可能还需要更改awk捕获的字段编号。 我的日志,IP在第13位(13美元)。

而且,为了避免阻塞你,你可以在/etc/hosts.allow文件中添加信任的ip:

 sshd: 123.123.123.123 222.222.222.222