网站搜索

在 Linux 中禁用 root 帐户的 4 种方法


root 帐户是 Linux 和其他类 Unix 操作系统上的最终帐户。此帐户可以访问系统上的所有命令和文件,并具有完全的读、写和执行权限。它用于在系统上执行任何类型的任务;创建/更新/访问/删除其他用户的帐户,安装/删除/升级软件包等等。

由于root用户拥有绝对权力,因此他/她执行的任何操作对系统都至关重要。在这方面,root用户的任何错误都可能对系统的正常运行产生巨大的影响。此外,该帐户还可能因意外、恶意或故意忽视政策而不当或不当使用而被滥用。

因此,建议在 Linux 服务器中禁用 root 访问权限,而是创建一个管理帐户,该帐户应配置为使用 sudo 命令获得 root 用户权限,以便在服务器上执行关键任务。

在本文中,我们将解释在 Linux 中禁用 root 用户帐户登录的四种方法。

注意:在阻止对root帐户的访问之前,请确保您已经创建了一个能够使用 sudo 命令获取 root 权限的管理帐户用户权限,使用 useradd 命令并为该用户帐户指定一个强密码。标志 -m 表示创建用户的主目录,-c 允许指定注释:

useradd -m -c "Admin User" admin
passwd admin

接下来,使用 usermod 命令将此用户添加到适当的系统管理员组,其中开关 -a 表示附加用户帐户,-G 指定用于添加用户的组在(wheel 或 sudo 取决于您的 Linux 发行版):

usermod -aG wheel admin    #CentOS/RHEL
usermod -aG sudo admin     #Debian/Ubuntu 

创建具有管理权限的用户后,切换到该帐户以阻止 root 访问。

su admin

1. 更改root用户的Shell

禁用 root 用户登录的最简单方法是将其 shell 从 /bin/bash/bin/bash (或允许用户登录的任何其他 shell)更改为 /sbin/nologin,位于 /etc/passwd 文件中,您可以使用任何您喜欢的命令行编辑器打开该文件进行编辑,如图所示。

  
sudo vim /etc/passwd

更改线路:

root:x:0:0:root:/root:/bin/bash
to
root:x:0:0:root:/root:/sbin/nologin

保存文件并关闭它。

从现在开始,当root用户登录时,他/她将收到消息“此帐户当前不可用。”这是默认消息,但是,您可以更改它并在文件 /etc/nologin.txt 中设置自定义消息。

此方法仅对需要 shell 进行用户登录的程序有效,否则 sudoftpemail 客户端可以访问 root 帐户。

2. 禁用通过控制台设备 (TTY) 进行 root 登录

第二种方法使用名为 pam_securettyPAM 模块,仅当用户在“安全”TTY 上登录时才允许 root 访问,如下所示由 /etc/securetty 中的列表定义。

上述文件允许您指定允许 root 用户登录哪些 TTY 设备,清空此文件可防止 root 用户在连接到计算机系统的任何设备上登录。

要创建空文件,请运行。

sudo mv /etc/securetty /etc/securetty.orig
sudo touch /etc/securetty
sudo chmod 600 /etc/securetty

此方法有一些限制,它仅影响登录、显示管理器(即 gdmkdmxdm)等程序以及其他需要使用的网络服务。启动 TTY。 su、sudo、ssh 和其他相关 openssh 工具等程序将有权访问 root 帐户。

3. 禁用 SSH Root 登录

访问远程服务器或 VPS 的最常见方法是通过 SSH,要阻止 root 用户在其下登录,您需要编辑 /etc/ssh/sshd_config 文件。

sudo vim /etc/ssh/sshd_config

然后取消注释(如果已注释)指令 PermitRootLogin 并将其值设置为 no,如屏幕截图所示。

完成后,保存并关闭文件。然后重新启动 sshd 服务以应用最近的配置更改。

sudo systemctl restart sshd 
OR
sudo service sshd restart 

您可能已经知道,此方法仅影响 openssh 工具集,ssh、scp、sftp 等程序将被阻止访问 root 帐户。

4. 通过 PAM 限制 root 对服务的访问

可插拔身份验证模块(简称PAM)是Linux系统上一种集中式、可插拔、模块化且灵活的身份验证方法。 PAM 通过 /lib/security/pam_listfile.so 模块,在限制特定帐户的权限方面提供了极大的灵活性。

上述模块可用于引用不允许通过某些目标服务(例如登录、ssh 和任何 PAM 感知程序)登录的用户列表。

在这种情况下,我们希望通过限制对登录和 sshd 服务的访问来禁用 root 用户对系统的访问。首先打开并编辑 /etc/pam.d/ 目录中目标服务的文件,如图所示。


sudo vim /etc/pam.d/login
OR
sudo vim /etc/pam.d/sshd

接下来,在两个文件中添加以下配置。

auth    required       pam_listfile.so \
        onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers

完成后,保存并关闭每个文件。然后创建纯文件 /etc/ssh/deniedusers ,该文件每行应包含一项且不可读。

在其中添加名称 root,然后保存并关闭它。

sudo vim /etc/ssh/deniedusers

还要为此设置所需的权限。

sudo chmod 600 /etc/ssh/deniedusers

此方法仅影响可识别 PAM 的程序和服务。您可以通过 ftp 和电子邮件客户端等阻止 root 访问系统。

有关更多信息,请参阅相关手册页。

man pam_securetty
man sshd_config
man pam

就这样!在本文中,我们解释了在 Linux 中禁用 root 用户登录(或帐户)的四种方法。您有任何意见、建议或问题,请随时通过下面的反馈表与我们联系。