四种方法禁用Linux中Root账户
Root账户是Linux和其他类Unix操作系统中的最高权限账户。这个账户可以访问系统中的所有命令和文件,并拥有完全的读、写和执行权限。它被用来在系统上执行任何种类的任务;如创建/更新/访问/删除其他用户的账户,安装/移除/升级软件包等等。
因为root用户拥有绝对的权力,任何操作对系统都至关重要。在这方面,root用户的任何错误可能对系统的正常运行产生巨大的影响。此外,这个账户也可能因为不当使用或不适宜的使用而被滥用,无论是意外的、恶意的,还是因为对政策的故意无知。
因此,建议在你的Linux服务器中禁用root访问权限,相反,应创建一个管理账户,该账户应被配置为使用sudo命令获取root用户权限,以在服务器上执行关键任务。
创建admin账户
在你阻止对root账户的访问之前,确保你已经创建了一个管理账户,能够使用sudo命令获取root用户权限,使用useradd命令并为这个用户账户设置一个强密码。-m
标志表示创建用户的家目录,-c
允许指定注释:
$ useradd -m -c "Admin User" admin
# passwd admin
接下来,使用usermod命令将这个用户添加到系统管理员的适当组中,其中-a
表示追加用户账户,-G
指定添加用户的组(根据你的Linux发行版,可能是wheel或sudo):
$ usermod -aG wheel admin #CentOS/RHEL
# usermod -aG sudo admin #Debian/Ubuntu
一旦你创建了一个具有管理员权限的用户,切换到该账户以阻止root访问。
$ su admin
更改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
#改为
root:x:0:0:root:/root:**/sbin/nologin**
从现在开始,当root用户登录时,他/她将收到“此账户当前不可用。”的消息。这是默认消息,但是,你可以在/etc/nologin.txt文件中更改它并设置一个自定义消息。
这种方法只对需要shell进行用户登录的程序有效,否则,sudo,ftp和email客户端可以访问root账户。
通过控制台设备(TTY)禁用root登录
第二种方法使用一个名为pam_securetty的PAM模块,该模块只允许用户在“安全的TTY”上登录root,这是由/etc/securetty中的列表定义的。
上述文件允许你指定root用户允许登录的TTY设备,清空此文件可防止root在任何连接到计算机系统的设备上登录。
要创建一个空文件,运行以下命令。
$ sudo mv /etc/securetty /etc/securetty.orig
$ sudo touch /etc/securetty
$ sudo chmod 600 /etc/securetty
这种方法有一些限制,它只影响像login、显示管理器(如gdm、kdm和xdm)和其他启动TTY的网络服务这样的程序。像su, sudo, ssh, 和其他相关的openssh工具将可以访问root账户。
禁用SSH Root登录
访问远程服务器或VPS最常见的方式是通过SSH,要阻止root用户在其下登录,你需要编辑/etc/ssh/sshd_config文件。
$ sudo vim /etc/ssh/sshd\_config
然后取消注释(如果被注释了)指令PermitRootLogin,并将其值设置为no
,如下图所示。
完成后,保存并关闭文件。然后重启sshd服务以应用最新的配置更改。
$ sudo systemctl restart sshd
#或者
$ sudo service sshd restart
你可能已经知道,这种方法只影响openssh工具集,像ssh, scp, sftp这样的程序将被阻止访问root账户。
通过PAM限制root访问服务
可插拔身份验证模块(简称PAM)是Linux系统上的一种集中、可插拔、模块化和灵活的身份验证方法。通过/lib/security/pam_listfile.so模块,PAM允许在限制特定账户的权限方面具有极大的灵活性。
上述模块可以用来引用一个不允许通过某些目标服务(如login, ssh和任何PAM感知的程序)登录的用户列表。
在这种情况下,我们想要禁用root用户访问系统,通过限制访问login和sshd服务。首先打开并编辑/etc/pam.d/目录中目标服务的文件,如下所示。
$ sudo vim /etc/pam.d/login
#或者
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和email客户端等更多方式阻止root访问系统。
$ man pam\_securetty
$ man sshd\_config
$ man pam
就是这样!在这篇文章中,我们解释了在Linux中禁用root用户登录(或账户)的四种方法。