欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux禁用root用户

程序员文章站 2022-08-08 14:36:04
在创建各种云主机的时候,云服务商给的都是root用户,这很方便,但是有某些时候会造成一些困扰,日后在服务器上启动各种服务后,仅仅拥有root权限的用户才能访问更改这些服务,这样会造成一些不必要的困扰,而且也不安全。出于安全考虑,以及日后服务器的多用户管理,应该在一开始就对服务器的root用户进行禁用 ......
  • 在创建各种云主机的时候,云服务商给的都是root用户,这很方便,但是有某些时候会造成一些困扰,日后在服务器上启动各种服务后,仅仅拥有root权限的用户才能访问更改这些服务,这样会造成一些不必要的困扰,而且也不安全。出于安全考虑,以及日后服务器的多用户管理,应该在一开始就对服务器的root用户进行禁用,仅使用sudo命令来执行某些root才能执行的命令。
  1. 工具准备:linux云主机,ssh工具
  2. 创建拥有sudo权限的用户
    1. 注意 :在阻止对root帐户的访问之前,请确保已使用创建了一个管理帐户,该帐户能够使用获取root用户权限,并为该用户帐户提供强密码。 标志-m表示创建用户的主目录, -c表示注释:
      1 # useradd -m -c "admin user" admin
      2 # passwd admin
    2. 接下来,使用将此用户添加到适当的系统管理员组,其中开关-a表示附加用户帐户, -g指定用于添加用户的组(wheel或sudo,具体取决于您的linux发行版):
      1 # usermod -ag wheel admin    #centos/rhel
      2 # usermod -ag sudo admin     #debian/ubuntu 
    3. 创建具有管理权限的用户后,请切换到该帐户以阻止root访问。
      1 # su admin
  3. 更改root用户的shell
    1. 禁用root用户登录的最简单方法是将其shell从/bin/bash/bin/bash (或允许用户登录的任何其他shell)更改为/etc/passwd文件中的/sbin/nologin ,您可以使用您喜欢的任何命令行编辑器打开进行编辑,如图所示。
      1 $ sudo vim /etc/passwd

      编辑保存

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

      Linux禁用root用户

      保存文件并关闭它。

      从现在开始,当root用户登录时,他/她将收到消息“ 此帐户当前不可用。 “这是默认消息,但是,您可以更改它并在文件/etc/nologin.txt中设置自定义消息。此方法仅对需要用于用户登录的shell的程序有效,否则, sudo , ftpemail客户端可以访问root帐户。

  4. 通过控制台设备(tty)禁用root登录
    1. 第二种方法使用名为pam_securettypam模块,只有当用户登录“ 安全”tty时才允许root访问,如/ etc / securetty中的列表所定义。

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

      要创建空文件,请运行。

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

      此方法有一些限制,它只影响登录,显示管理器(即gdm , kdmxdm )等程序以及启动tty的其他网络服务。 诸如su,sudo,ssh和其他相关openssh工具之类的程序将可以访问root帐户。

  5. 禁用ssh root登录
    1. 访问远程服务器或vps的最常用方法是通过ssh并阻止其下的root用户登录,您需要编辑/ etc / ssh / sshd_config文件。
      1 $ sudo vim /etc/ssh/sshd_config

      然后取消注释(如果它被注释)指令permitrootlogin并将其值设置为no ,如屏幕截图所示。

    2. Linux禁用root用户
    3. 在ssh中禁用root登录

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

      1 $ sudo systemctl restart sshd 
      2 or
      3 $ sudo service sshd restart 

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

  6. 通过pam限制root用户登录
    1. 可插拔认证模块 (简称pam )是linux系统上集中,可插拔,模块化和灵活的认证方法。 pam通过/lib/security/pam_listfile.so模块,可以极大地灵活地限制特定帐户的权限。

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

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

      $ sudo vim /etc/pam.d/login
      or
      $ sudo vim /etc/pam.d/login

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

      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和电子邮件客户端等阻止对系统的root访问。

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

    2. $ man pam_securetty
      $ man sshd_config
      $ man pam