四种方法禁用Linux中Root账户

Root账户是Linux和其他类Unix操作系统中的最高权限账户。这个账户可以访问系统中的所有命令和文件,并拥有完全的读、写和执行权限。它被用来在系统上执行任何种类的任务;如创建/更新/访问/删除其他用户的账户,安装/移除/升级软件包等等。

file

因为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用户的Shell

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

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

通过控制台设备(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

这种方法有一些限制,它只影响像login、显示管理器(如gdmkdmxdm)和其他启动TTY的网络服务这样的程序。像su, sudo, ssh, 和其他相关的openssh工具将可以访问root账户。

禁用SSH Root登录

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

$ sudo vim /etc/ssh/sshd\_config

然后取消注释(如果被注释了)指令PermitRootLogin,并将其值设置为no,如下图所示。

在SSH中禁用Root登录

完成后,保存并关闭文件。然后重启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用户登录(或账户)的四种方法。

SSH的配置文件详解
5个nginx必不可少的调试技巧!
标签:

发表我的评论

电子邮件地址不会被公开。 必填项已用*标注

92 + 7 =

ajax-loader