Restringir o acesso su a contas privilegiadas no Linux
Como posso limitar o uso do comando su no Linux apenas para contas privilegiadas, como grupo de usuários Admin? O utilitário su solicita credenciais de usuário apropriadas via PAM e alterna para esse ID de usuário (o usuário padrão é o superusuário). Neste artigo veremos como configurar o pam para restringir su a alguns usuários apenas em um sistema Linux.
Criaremos um grupo e restringiremos o uso de su aos usuários do grupo. PAM é usado para definir a política que o su usará. Ele pode ser configurado para permitir que diferentes grupos de usuários acessem UIDs de destino específicos por meio de su. Os módulos PAM necessários para esta operação são:
- pam_succeed_if
- pam_wheel.so
- pam_listfile.so
O que realizaremos ao final deste guia:
- Crie uma chamada de grupo Linux sysadmins
- Configure o PAM para permitir que usuários de um grupo tenham permissão para usar su
- Trocar como qualquer outro usuário com su falhará
Etapa 1: criar grupos e adicionar usuários
Vamos começar criando dois grupos Linux, sysadmins e dbadmins
sudo groupadd sysadmins
sudo groupadd dbadmins
Crie três usuários, um chamado admin1, outro chamado dbuser1 e por último 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
Atribua o usuário admin1 ao grupo sysadmins.
sudo usermod -G sysadmins admin1
Atribua o usuário dbuser1 ao grupo dbadmins.
sudo usermod -G dbadmins dbuser1
Confirme se os usuários estão atribuídos corretamente aos grupos relevantes verificando a saída de getent:
$ getent group sysadmins
sysadmins:x:1001:admin1
$ getent group dbadmins
dbadmins:x:1002:dbuser1
Etapa 2: configurar sua política PAM
Crie um novo arquivo /etc/security/su-sysadmins-access e adicione os UIDs de destino que os usuários do grupo sysadmins têm permissão para acessar usando su <comando:
$ sudo vim /etc/security/su-sysadmins-access
root
Crie outro arquivo /etc/security/su-dbadmins-access e adicione os UIDs de destino que os usuários do grupo dbadmins podem acessar usando sucomando:
$ sudo vim /etc/security/su-dbadmins-access
postgres
oracle
Limite o acesso de gravação do arquivo criado apenas ao usuário 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
Confirme as permissões:
$ 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
Configure o PAM editando o arquivo /etc/pam.d/su
sudo vim /etc/pam.d/su
Adicionando as seguintes linhas:
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
O que significam as mudanças:
- Membros do grupo sysadmins (admin1) só podem usar su para o usuário root.
- Membros de dbadmins (dbuser1) só podem usar su para postgres e oracle
Etapa 3: Testando suas políticas PAM
Faça login como usuário admin1 e use su para tentar alterar o UID para um usuário root permitido.
$ 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
Faça login como usuário dbuser1 e use su para tentar alterar o UID para um usuário postgres permitido.
$ ssh dbuser1@localhost
$ su - postgres # the user should exist before
# Or
$ su - oracle
Faça login como usuário testuser1 e tente qualquer su – deve falhar
$ ssh testuser1@localhost
$ su - root
Password:
su: Permission denied
$ su - postgres
Agora você garantiu o acesso ao usuário root usando o comando su
.