如何禁止尝试使用 ssh 以 root 身份登录的 IP

如何禁止尝试使用 ssh 以 root 身份登录的 IP

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

我正在运行 Gentoo Linux,并且已经在运行 fail2ban。我不想因为一次登录尝试失败而禁止所有人,因此简单地将 fail2ban 尝试设置为 1 不是一个选项。Root 是我希望应用此立即禁止的唯一帐户。

答案1

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

  1. 如果他们尝试使用无效用户名,则会在第一次尝试时被永久禁止。我没有很多人以这种方式登录,也没有人以这种方式被禁止;但如果有很多人登录,这可能是一个支持问题。在我的系统上,Root 不是有效的 ssh 登录名。

    我使用的是 FreeBSD 系统,因此您可能需要稍微修改一下此规则。在 filter.d 目录中创建一个 ssh-invaliduser.local 文件:

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

    在文件中照常设置此规则的选项jail.local

  2. 第二条规则禁止在 10 分钟内输错 10 次密码的尝试。没有人能以平均每分钟 1 个密码的速度破解密码。

答案2

如果你使用标准 sshd 日志输出,并且你的系统正在运行 tcp 包装器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

相关内容