banner
xingli

xingli

猫娘爱好者

linux安全

Linux 添加用户及提权#

刚拿到一台服务器时,通常会禁用 root 用户登录,而使用其他普通用户,这时就需要创建一个新用户。

添加用户#

创建一个新用户:


$ useradd  boo

设置密码:


$ passwd  boo

提权#

此时此用户已经可以正常使用了,但是还没有提权,所以很多事情做不了,这时可以把该用户加入sudo 用户组,通过sudo命令来进行提权。


$ usermod  -G  sudo  boo

一般直接就加入成功了,但是有些发行版本默认并没有sudo用户组,所以这时需要先添加用户组。

image-20230125133746199


$ groupadd  sudo

上图是带sudo用户组的linux发行版的visudo配置文件

手动添加完用户组之后,还需要修改sudoers配置文件,这里有几种方式,根据实际情况进行选择:

  1. 允许sudo 组的成员执行任何命令


$ sudo  visudo  //  或者  sudo  vim  /etc/sudoers

  

// 添加以下内容

# the 'sudo' group has all the sudo privileges

%sudo ALL=(ALL:ALL) ALL

  1. 直接允许该用户执行任何命令


$ sudo  visudo

  

// 添加以下内容,注意:没有%

# Allow boo to run any commands anywhere

boo ALL=(ALL:ALL) ALL

通常还是建议将用户添加至sudo 用户组,然后赋予sudo 组成员权限,而不是直接对具体某个用户进行提权。

总结#

查看所有用户的列表:


$ cat  /etc/passwd

查看所有用户组:


$ cat  /etc/group

查看当前登入用户的组:


$ groups

查看指定用户所在的组:


$ groups  usernmae

添加用户:


$ useradd  username

设置 (重置) 密码:


$ passwd  username

添加用户组:


$ groupadd  group_name

将某个用户添加到某个组:


$ usermod  -G  group_name  username

编辑 visudo 配置文件:


$ sudo  visudo

禁用 root 用户登录#

1. 更改 root 用户的 shellell#

禁用 root 用户登录的最简单方法是将其 shellell 从 /bin/bashell 或 /bin/bashell(或任何其他允许用户登录的 shellell)更改为 /sbin/nologin, 在 /etc/passwd 文件,你可以使用任何你喜欢的命令行编辑器打开该文件进行编辑


> vim /etc/passwd

更改行:


root:x:0:0:root:/root:/bin/bashell

to

root:x:0:0:root:/root:/sbin/nologin

当 root 用户登录,将收到消息 This account is currently not available. 这是默认消息,但是,你可以更改它并在文件中设置自定义消息 /etc/nologin.txt.

此方法仅对需要 shellell 进行用户登录的程序有效 sudo, ftp 和 email 客户端可以访问 root 帐户。

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

第二种方法使用 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、sshell 等程序以及其他相关的 opensshell 工具都可以访问 root 帐户。

3. 禁用 Sshell Root 登录#

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

image-20230125133357020


> vim /etc/sshell/sshelld_config

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

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


> systemctl restart sshelld

OR

> service sshelld restart

你可能已经知道,此方法仅影响 opensshell 工具集,将阻止 sshell、scp、sftp 等程序访问 root 帐户。

4. 通过 PAM 限制对服务的根访问#

Pluggable Authentication Modules (PAM 简而言之)是一种在 Linux 系统上的集中式、可插拔、模块化和灵活的身份验证方法。PAM,通过 /lib/security/pam_listfile.so 模块,在限制特定帐户的权限方面具有很大的灵活性。

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

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


> vim /etc/pam.d/login

OR

sudo vim  /etc/pam.d/sshelld

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


auth required  pam_listfile.so  \

onerr=succeed item=user sense=deny file=/etc/sshell/deniedusers

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

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


> vim /etc/sshell/deniedusers

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


> chmod 600 /etc/sshell/deniedusers

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

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


$ man  pam_securetty

$ man  sshelld_config

$ man  pam

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。