root
账号 是 Linux 和其他类 Unix 操作系统上的超级帐户。此帐户可以访问系统上的所有命令和文件,并具有完全读取、写入和执行权限。它用于在系统上执行任何类型的任务;create/update/access/delete
其他用户的帐户,install/remove/upgrade
软件包。
root
用户拥有绝对权力,执行的任何操作都对系统至关重要。在这方面,任何错误由root
用户可能对系统的正常运行产生巨大影响。此外,该帐户也可能因意外、恶意或人为无视规则而被不当或不当使用而被滥用。因此,建议禁用 Linux 服务器中的 root 访问权限,而是创建一个管理帐户,该帐户应配置为使用sudo 命令获得 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
禁用 root 用户登录的最简单方法是将其 shell 从
/bin/bash
或/bin/bash
(或任何其他允许用户登录的 shell)更改为/sbin/nologin
, 在/etc/passwd
文件,你可以使用任何你喜欢的命令行编辑器打开该文件进行编辑
> vim /etc/passwd
更改行:
root:x:0:0:root:/root:/bin/bash
to
root:x:0:0:root:/root:/sbin/nologin
当
root
用户登录,将收到消息This account is currently not available.
这是默认消息,但是,你可以更改它并在文件中设置自定义消息/etc/nologin.txt
.此方法仅对需要 shell 进行用户登录的程序有效
sudo
,ftp
和
第二种方法使用
PAM
模块调用pam_securetty
,仅当用户登录secure TTY
,如列表中所定义/etc/securetty
.上面的文件允许你指定哪个
TTY
允许 root 用户登录的设备,清空此文件可防止在连接到计算机系统的任何设备上进行 root 登录。创建一个空文件
> mv /etc/securetty /etc/securetty.orig
> touch /etc/securetty
> chmod 600 /etc/securetty
这种方法有一定的局限性,它只影响登录、显示管理器(即
gdm
,kdm
和xdm
) 和其他启动 TTY 的网络服务。su、sudo、ssh 等程序以及其他相关的openssh 工具都可以访问root 帐户。
访问远程服务器或 VPS 的最常见方式是通过 SSH 并阻止 root 用户在其下登录,你需要编辑
/etc/ssh/sshd_config
文件。
> vim /etc/ssh/sshd_config
然后取消注释(如果已注释)该指令
PermitRootLogin
并将其值设置为no
完成后,保存并关闭文件。然后重新启动
sshd
服务以应用最近的配置更改。
> systemctl restart sshd
OR
> service sshd restart
你可能已经知道,此方法仅影响openssh 工具集,将阻止ssh、scp、sftp 等程序访问root 帐户。
Pluggable Authentication Modules
(PAM
简而言之)是一种在 Linux 系统上的集中式、可插拔、模块化和灵活的身份验证方法。PAM,通过/lib/security/pam_listfile.so
模块,在限制特定帐户的权限方面具有很大的灵活性。上述模块可用于引用不允许通过某些目标服务(例如 login、ssh 和任何 PAM 感知程序)登录的用户列表。
在这种情况下,我们希望通过限制对登录和 sshd 服务的访问来禁用 root 用户对系统的访问。首先打开并编辑目标服务中的文件
/etc/pam.d/
目录如图。
> 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,然后保存并关闭它。
> vim /etc/ssh/deniedusers
还要为此设置所需的权限。
> chmod 600 /etc/ssh/deniedusers
此方法仅影响支持 PAM 的程序和服务。你可以通过 ftp 和电子邮件客户端等阻止对系统的 root 访问。
有关更多信息,请参阅相关手册页。
$ man pam_securetty
$ man sshd_config
$ man pam
相关文章