限制 su 对 Linux 中特权帐户的访问 |限制 su 对 Linux 中特权帐户的访问 |限制 su 对 Linux 中特权帐户的访问 |限制 su 对 Linux 中特权帐户的访问 |
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

限制 su 对 Linux 中特权帐户的访问 |

发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何限制 Linux 上的 su 命令仅允许特权帐户(例如管理员用户组)使用? su 实用程序通过 PAM 请求适当的用户凭据并切换到该用户 ID(默认用户是超级用户)。在本文中,我们将了解如何在 Linux 系统中配置 pam 以将 su 限制为仅限某些用户。

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

  • pam_succeed_if
  • pam_wheel.so
  • pam_listfile.so

在本指南结束时我们将完成什么:

  • 创建 Linux 群组通话 sysadmins
  • 配置 PAM 以允许组中的用户使用 su
  • 使用 su 切换为任何其他用户将失败

第 1 步:创建组并添加用户

我们首先创建两个 Linux 组:sysadmins 和 dbadmins

sudo groupadd sysadmins
sudo groupadd dbadmins

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

# Create admin1 user
sudo useradd admin1
sudo passwd admin1

# Create dbuser1
sudo useradd dbuser1
sudo passwd dbuser1

# Create 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 文件,并添加允许 sysadmins 组中的用户使用 su < 访问的目标 UID命令:

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

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

$ 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  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  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) 只能 su 到 postgres 和 oracle

步骤 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
Password:
su: Permission denied
$ su - postgres

您现在已使用 su 命令保护对 root 用户的访问。

©2015-2025 Norria support@alaica.com