Pesquisa de site

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.

Artigos relacionados: