linux中禁用Root帐户的4种方法

root账号 是 Linux 和其他类 Unix 操作系统上的超级帐户。此帐户可以访问系统上的所有命令和文件,并具有完全读取、写入和执行权限。它用于在系统上执行任何类型的任务; create/update/access/delete其他用户的帐户,install/remove/upgrade软件包。

root用户拥有绝对权力,执行的任何操作都对系统至关重要。在这方面,任何错误由root用户可能对系统的正常运行产生巨大影响。此外,该帐户也可能因意外、恶意或人为无视规则而被不当或不当使用而被滥用。

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

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

  1. # useradd -m -c "Admin User" admin
  2. # passwd admin

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

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

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

# su admin

1.更改root用户的Shell

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

  1. > vim /etc/passwd

更改行:

  1. root:x:0:0:root:/root:/bin/bash
  2. to
  3. root:x:0:0:root:/root:/sbin/nologin

root 用户登录,将收到消息This account is currently not available. 这是默认消息,但是,你可以更改它并在文件中设置自定义消息 /etc/nologin.txt.

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

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

第二种方法使用 PAM 模块调用 pam_securetty,仅当用户登录secure TTY,如列表中所定义 /etc/securetty.

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

创建一个空文件

  1. > mv /etc/securetty /etc/securetty.orig
  2. > touch /etc/securetty
  3. > chmod 600 /etc/securetty

这种方法有一定的局限性,它只影响登录、显示管理器(即 gdm, kdmxdm) 和其他启动 TTY 的网络服务。su、sudo、ssh 等程序以及其他相关的openssh 工具都可以访问root 帐户。

3. 禁用 SSH Root 登录

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

  1. > vim /etc/ssh/sshd_config

然后取消注释(如果已注释)该指令 PermitRootLogin并将其值设置为no

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

  1. > systemctl restart sshd
  2. OR
  3. > service sshd restart

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

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

Pluggable Authentication Modules (PAM简而言之)是一种在 Linux 系统上的集中式、可插拔、模块化和灵活的身份验证方法。PAM,通过/lib/security/pam_listfile.so 模块,在限制特定帐户的权限方面具有很大的灵活性。

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

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

  1. > vim /etc/pam.d/login
  2. OR
  3. sudo vim /etc/pam.d/sshd

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

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

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

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

  1. > vim /etc/ssh/deniedusers

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

  1. > chmod 600 /etc/ssh/deniedusers

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

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

  1. $ man pam_securetty
  2. $ man sshd_config
  3. $ man pam

返回笔记列表
入门小站