如何使用denyhosts或fail2ban阻止所有root登录尝试?

如何使用denyhosts或fail2ban阻止所有root登录尝试?

我目前阻止所有使用 root 的 ssh 登录。但我想再进一步,阻止尝试以 root 身份登录的客户端的 IP 地址。我目前已设置并运行了 Denyhosts 和 fail2ban,我可以使用 Denyhosts 和 fail2ban 阻止那些尝试以 root 身份登录的人的 IP 地址吗?

答案1

根据您的发行版,编辑/etc/fail2ban/jail.conf 更新[ssh]部分以显示类似这样的内容

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
bantime = 3600
maxretry = 3

根据需要更改参数。它不会专门阻止 root,但会阻止每次失败的尝试。小心使用 和maxretrybantime如果您使用自己的密码失败,而maxtretry设置为低,则会阻止自己使用bantime。重新启动 fail2ban。

我不会尝试永远阻止 IP,因为很多尝试来自动态 IP,这可能会在以后阻止一些合法用户。

(某些发行版提供了 jail.options 文件供您进行修改。这是放置更改的首选位置,因为它不会受到覆盖配置文件的更新的影响。)

答案2

将此代码复制到新文件 /etc/fail2ban/filter.d/sshd-root.conf 中:

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = sshd

failregex = ^%(__prefix_line)sFailed (?:password|publickey) for root from <HOST>(?: port \d*)?(?: ssh\d*)?$

ignoreregex = 

请注意,您可能必须编辑 failregex 才能准确识别失败的 root 登录尝试 - 使用:

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd-root.conf

测试它是否识别正确的日志条目。

然后您需要编辑您的 jail.local 以使用新的过滤器 - 添加类似以下内容:

[ssh]

enabled  = true
port     = 1:65535
filter   = sshd-root
logpath  = /var/log/auth.log
bantime  = 604800
maxretry = 3

显然,您应该根据需要调整这些值。上述设置将在三次尝试以 root 身份登录后丢弃来自有问题的 IP 地址的所有传入数据包,并在一周后再次释放该 IP。

答案3

由于默认值/etc/fail2ban/filter.d/sshd.conf已经有 AllowUsers 和 DenyUsers 的正则表达式...

...
^%(__prefix_line)sUser .+ from <HOST> not allowed because not listed in AllowUsers\s*$
^%(__prefix_line)sUser .+ from <HOST> not allowed because listed in DenyUsers\s*$
...

以下将:

  • 允许来自exampleusername外部 IP 的连接
  • 以及root本地网络上的任何连接(192.168.0.*)

行“/etc/ssh/sshd_config”:

AllowUsers exampleusername *@192.168.0.* *@localhost *@127.0.0.1

并且/etc/fail2ban/jail.conf

ignoreip = 127.0.0.1/8 192.168.0.2/255
...
...
[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 1
findtime = 99999999 
bantime  = 99999999

答案4

您是如何阻止 ssh 登录的?/bin/false 还是 sshd_config DenyUsers 选项?

我无法想出一个答案,但 IIRC 拒绝主机会解析日志文件,因此,在有人尝试在禁用它的情况下登录 root 后,只需查看日志文件中是否出现失败条目

相关内容