前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux中禁用Root帐户的4种方法

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

作者头像
入门笔记
发布2022-06-02 15:56:36
3.4K0
发布2022-06-02 15:56:36
举报
文章被收录于专栏:入门小站

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

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

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

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

代码语言:javascript
复制
# useradd -m -c "Admin User" admin
# passwd admin

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

代码语言:javascript
复制
# 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 文件,你可以使用任何你喜欢的命令行编辑器打开该文件进行编辑

代码语言:javascript
复制
> vim /etc/passwd

更改行:

代码语言:javascript
复制
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, ftpemail 客户端可以访问 root 帐户。

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

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

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

创建一个空文件

代码语言:javascript
复制
> mv /etc/securetty /etc/securetty.orig
> touch /etc/securetty
> chmod 600 /etc/securetty

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

3. 禁用 SSH Root 登录

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

代码语言:javascript
复制
> vim /etc/ssh/sshd_config

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

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

代码语言:javascript
复制
> systemctl restart sshd 
OR
> 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/ 目录如图。

代码语言:javascript
复制
> vim /etc/pam.d/login
OR
sudo vim /etc/pam.d/sshd

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

代码语言:javascript
复制
auth    required       pam_listfile.so \
        onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers

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

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

代码语言:javascript
复制
> vim /etc/ssh/deniedusers

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

代码语言:javascript
复制
> chmod 600 /etc/ssh/deniedusers

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

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

代码语言:javascript
复制
$ man pam_securetty
$ man sshd_config
$ man pam

相关文章

linux中useradd命令15个实际示例

linux之man命令

linux之vi,vim命令

ssh常用命令总结

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.更改root用户的Shell
  • 2. 通过控制台设备 (TTY) 禁用 root 登录
  • 3. 禁用 SSH Root 登录
  • 4. 通过 PAM 限制对服务的根访问
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档