如何基于 root SSH 登录 instablock IP

如何基于 root SSH 登录 instablock IP

我的一个朋友之前曾进行过此设置,但在重新安装时丢失了。

基本上发生的事情是,每当有人直接地以 root 身份通过 SSH 连接到我的服务器,他们的 IP 会被阻止,您必须使用自定义用户名登录并使用“sudo”才能获得 root 权限。

不幸的是,搜索这个问题的常用关键字只会教我如何禁用 root 登录,这不完全是我想要的。

我的服务器运行在最新的 Debian 版本上。

答案1

SSHd 不禁止 IP 地址。每当遇到身份验证失败时,它都会在日志中添加一个条目,并继续执行。然而,其他软件可能会在事后读取这些日志并根据其规则禁止 IP。用于此类任务的最常见守护进程是fail2ban。

Fail2ban 适用于监狱。每个监狱都与一个服务、一个日志文件相关联,并遵循一组特定的规则。每当一个IP进入监狱规则的范围时,它就会立即被列入黑名单一段时间(也在监狱规则中指定)。以下是 SSH 服务的 fail2ban 监狱的示例(在/etc/fail2ban/jail.conf我的案例中设置):

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3

多亏了这条规则,如果任何 IP 在 10 分钟内登录失败超过 3 次,fail2ban 守护进程会将其添加到 iptables 链中,导致丢弃来自该 IP 的所有传入网络数据包。

现在,如果您考虑以下监狱......

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 1
findtime = 60
bantime = -1

...在这种情况下,任何未通过身份验证的 IP 将被永久禁止。请注意,通过使用自定义过滤器,完全有可能仅针对 root 登录。另请记住,默认情况下禁用 root 登录是有充分理由的:任何人都不应直接连接到 root 帐户。使用用户名登录,然后sudo在需要时使用要安全得多:这需要入侵者找到用户名和密码,而 root 用户名已经很出名了。

答案2

听起来像是“/etc/ssh/sshd_config”的配置问题。将以下行更改为

PermitRootLogin no

PermitRootLogin yes

并重启ssh服务

相关内容