云网牛站
所在位置:首页 > Linux命令 > 限制su命令对Linux系统中的特权帐户的访问

限制su命令对Linux系统中的特权帐户的访问

2021-01-31 10:48:47作者:符天稿源:云网牛站

在本文中,我们将介绍如何配置pam以仅在Linux系统中将su限制为某些用户使用,内容有:建立群组并新增使用者、配置su PAM策略、测试su PAM政策。

 

前言

将Linux系统上su命令的使用限制为仅特权帐户,例如Admin用户组。su实用程序通过PAM请求适当的用户凭据,然后切换到该用户ID(默认用户是超级用户)。

我们将创建一个组,并将su的使用限制为该组中的用户。PAM用于设置su将使用的策略,可以将其配置为允许不同的用户组通过su访问特定的目标UID。该操作所需的PAM模块是:pam_succeed_if、pam_wheel.so、pam_listfile.so。

在本文结束时我们将完成的工作:

1、创建一个Linux组调用sysadmins。

2、配置PAM以允许来自组权限的用户使用su。

3、使用su切换为其他任何用户都将失败。

参考:Linux系统中的切换用户Su命令,教你如何使用su命令,包括注意事项

 

步骤1:建立群组并新增使用者

首先创建两个Linux组,即sysadmins和dbadmins:

sudo groupadd sysadmins

sudo groupadd dbadmins

创建三个用户,一个名为admin1,另一个称为dbuser1,最后是testuser1:

# 创建admin1用户

$ sudo useradd admin1

$ sudo passwd admin1

# 创建dbuser1

$ sudo useradd dbuser1

$ sudo passwd dbuser1

# 创建testuser1

$ sudo useradd testuser1

$ sudo passwd testuser1

将admin1用户分配给sysadmins组:

sudo usermod -G sysadmins admin1

将dbuser1用户分配给dbadmins组:

sudo usermod -G dbadmins dbuser1

通过检查getent的输出,确认已将用户正确分配到相关组:

$ getent group sysadmins

sysadmins:x:1001:admin1

$ getent group dbadmins

dbadmins:x:1002:dbuser1

 

步骤2:配置su PAM策略

创建一个新文件/etc/security/su-sysadmins-access文件,并使用su命令添加允许sysadmins组中的用户访问的目标UID:

$ sudo vim /etc/security/su-sysadmins-access

root

创建另一个文件/etc/security/su-dbadmins-access并添加su命令允许dbadmins组中的用户访问的目标UID:

$ sudo vim /etc/security/su-dbadmins-access

postgres

oracle

将创建的文件的写访问权限限制为仅root用户:

sudo chown root:root /etc/security/su-sysadmins-access

sudo chown root:root /etc/security/su-dbadmins-access

sudo chmod 0644 /etc/security/su-sysadmins-access

sudo chmod 0644 /etc/security/su-dbadmins-access

确认权限:

$ ls -lh /etc/security/su-sysadmins-access

-rw-r--r--. 1 root root 5 Jan 30 10:19 /etc/security/su-sysadmins-access

$ ls -lh /etc/security/su-dbadmins-access

-rw-r--r--. 1 root root 16 Jan 30 10:20 /etc/security/su-dbadmins-access

通过编辑文件/etc/pam.d/su配置PAM:

$ sudo vim /etc/pam.d/su

添加以下行:

auth              [success=2 default=ignore] pam_succeed_if.so use_uid user notingroup sysadmins

auth  required    pam_wheel.so use_uid group=sysadmins

auth  required    pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/su-sysadmins-access

auth              [success=2 default=ignore] pam_succeed_if.so use_uid user notingroup dbadmins

auth  required    pam_wheel.so use_uid group=dbadmins

auth  required    pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/su-dbadmins-access

更改意味着什么:

sysadmins组(admin1)的成员只能su为root用户。

dbadmins的成员(dbuser1)只能使用postgres和oracle。

这是su文件的样子:

限制su命令对Linux系统中的特权帐户的访问

 

步骤3:测试su PAM政策

以admin1用户身份登录,然后使用su尝试将UID更改为允许的root用户:

$ ssh admin1@localhost

[admin1@centos ~]$  su - root #enter root user password

Password:

Last login: Sat Jan 30 10:17:26 UTC 2021 from 172.20.11.12 on pts/0

[root@centos ~]# exit

logout

以dbuser1用户身份登录,然后使用su尝试将UID更改为允许的postgres用户:

$ ssh dbuser1@localhost

$ su - postgres # the user should exist before

# Or

$ su - oracle

以testuser1用户身份登录并尝试任何su,正常情况下它应该是失败的:

$ ssh testuser1@localhost

$ su - root

$ su - postgres

操作到这里,目的已经达到。

 

相关主题

在CentOS 8系统上添加用户并授予Sudo特权和删除用户

Linux命令子频道
精选文章
热门文章