Solução de Problemas de Falhas de Autenticação com Su no Linux

LinuxBeginner
Pratique Agora

Introdução

O comando "su" (substitute user) no Linux é uma ferramenta poderosa que permite aos usuários alternar temporariamente para uma conta de usuário diferente, geralmente o usuário root, para realizar tarefas administrativas. No entanto, falhas de autenticação com o su podem ocorrer, levando à negação de acesso e a potenciais riscos de segurança. Este tutorial irá guiá-lo pelo processo de solução de problemas de falhas de autenticação com o su no Linux, abordando causas comuns, configurações e melhores práticas para um uso seguro.

Entendendo o Comando Su e o Uso Básico

Nesta etapa, você aprenderá como o comando su no Linux permite que os usuários alternem sua identidade atual para outro usuário. Isso é particularmente útil para realizar tarefas administrativas que exigem privilégios elevados.

Vamos explorar o uso básico do comando su e entender como ele funciona.

Uso Básico do Su

Abra um terminal no seu ambiente de VM do LabEx. Você pode usar o comando su com a seguinte sintaxe:

su [options] [username]

Se você executar su sem especificar um nome de usuário, ele assume o usuário root por padrão:

su

Você será solicitado a inserir a senha do root. No entanto, em muitas distribuições Linux modernas, incluindo o Ubuntu, a conta root é desativada por padrão por motivos de segurança.

Vamos criar um usuário de teste para praticar:

sudo adduser testuser

Insira as informações necessárias quando solicitado. Para simplificar, você pode usar "password" como a senha para este usuário de teste.

Agora, vamos tentar alternar para este usuário:

su testuser

Quando solicitado, insira a senha que você criou para o testuser. Uma vez autenticado, seu prompt mudará, indicando que você agora está operando como testuser.

Para verificar se você alternou de usuário com sucesso, execute:

whoami

A saída deve mostrar:

testuser

Para retornar ao seu usuário original, basta digitar:

exit

Usando o Su com Opções

O comando su suporta várias opções. A mais comum é a opção - (hífen), que fornece um ambiente de login completo:

su - testuser

Isso não apenas alterna a identidade do usuário, mas também:

  • Muda para o diretório home do usuário alvo
  • Configura as variáveis de ambiente do usuário alvo
  • Fornece um shell de login

Tente este comando e observe as diferenças:

pwd

A saída deve mostrar o diretório home do testuser:

/home/testuser

Saia do testuser digitando:

exit

Este entendimento básico do comando su nos ajudará a solucionar falhas de autenticação nas próximas etapas.

Falhas Comuns de Autenticação com Su e suas Causas

Nesta etapa, você criará e inspecionará falhas comuns de autenticação com o su. Entender essas falhas é o primeiro passo para resolvê-las.

Testando Falhas de Autenticação

Vamos criar intencionalmente algumas falhas de autenticação para entendê-las melhor.

Primeiro, tente alternar para o testuser com uma senha incorreta:

su testuser

Insira uma senha incorreta. Você verá uma mensagem de erro semelhante a:

su: Authentication failure

Em seguida, tente alternar para um usuário inexistente:

su nonexistentuser

Você verá uma mensagem de erro como:

su: user nonexistentuser does not exist

Causas Comuns de Falhas de Autenticação

1. Senha Incorreta

A causa mais comum de falha de autenticação é simplesmente inserir a senha errada. Isso pode acontecer devido a:

  • Erros de digitação
  • Caps Lock ativado
  • Esquecimento da senha

2. Restrições de Conta

Algumas contas podem estar configuradas para impedir o login ou ter senhas expiradas:

Vamos modificar nosso usuário de teste para demonstrar isso:

sudo passwd -l testuser

Isso bloqueia a senha do testuser. Agora tente:

su testuser

Você verá uma falha de autenticação mesmo se inserir a senha correta.

Desbloqueie a conta com:

sudo passwd -u testuser

3. Problemas de Configuração do PAM

O sistema PAM (Pluggable Authentication Modules) controla a autenticação no Linux. Problemas com a configuração do PAM podem causar falhas no su.

Vamos examinar a configuração do PAM para o comando su:

cat /etc/pam.d/su

Este arquivo contém a configuração do PAM específica para o comando su. Procure por linhas que possam restringir o acesso, como:

auth       required   pam_wheel.so

Esta linha, se descomentada, restringiria o acesso ao su apenas para membros do grupo wheel.

4. Problemas de Permissão com o Binário do Su

O arquivo binário do comando su deve ter as permissões corretas para funcionar adequadamente:

ls -l $(which su)

A saída deve mostrar algo como:

-rwsr-xr-x 1 root root 71816 Apr 18  2022 /usr/bin/su

O s nas permissões indica que o bit setuid está definido, permitindo que o programa seja executado com os privilégios do seu proprietário (root) em vez do usuário que o executa.

5. Examinando Logs de Autenticação

Ao solucionar falhas de autenticação nesta VM do LabEx, verifique os registros de login falhos com o lastb:

sudo lastb | head

Este comando lê o /var/log/btmp e exibe tentativas recentes de autenticação falhas, incluindo tentativas de su falhas quando registradas pelo sistema.

Por exemplo, uma tentativa de su falha pode mostrar uma entrada que inclui o usuário alvo e a sessão do terminal.

Entender essas causas comuns de falhas de autenticação com o su o ajudará a identificar e resolver problemas de forma mais eficaz nas próximas etapas.

Configurando o Controle de Acesso para o Comando Su

O Linux fornece vários mecanismos para controlar quem pode usar o comando su. Nesta etapa, exploraremos como configurar esses controles de acesso para aumentar a segurança.

Entendendo a Configuração do PAM

O sistema PAM (Pluggable Authentication Modules) é responsável pela autenticação no Linux. A configuração para o comando su é armazenada no arquivo /etc/pam.d/su.

Vamos examinar este arquivo em detalhes:

cat /etc/pam.d/su

O arquivo contém várias diretivas que controlam como a autenticação é realizada. Uma linha importante a ser observada é:

auth       required   pam_wheel.so

Se esta linha estiver descomentada (não começando com #), ela restringe o acesso ao su para membros do grupo wheel.

Restringindo o Acesso ao Su para Grupos Específicos

Podemos restringir o uso do su para alternar para o root apenas para membros de um grupo específico. Esta é uma prática de segurança comum.

Primeiro, vamos criar um novo grupo chamado sugroup:

sudo groupadd sugroup

Em seguida, adicione nosso usuário de teste a este grupo:

sudo usermod -aG sugroup testuser

Agora, precisamos modificar a configuração do PAM para restringir o acesso ao su para membros deste grupo:

sudo cp /etc/pam.d/su /etc/pam.d/su.bak

Agora, abra o arquivo de configuração do PAM no editor nano:

sudo nano /etc/pam.d/su

Procure por uma linha semelhante a:

## auth       required   pam_wheel.so

Descomente esta linha (remova o ## no início) e modifique-a para usar nosso sugroup em vez do wheel:

auth       required   pam_wheel.so group=sugroup

Pressione Ctrl+O para salvar o arquivo e, em seguida, Ctrl+X para sair do nano.

Testando a Configuração

Vamos testar nossa configuração tentando usar o su como um usuário que não está no sugroup.

Primeiro, crie outro usuário de teste:

sudo adduser testuser2

Insira as informações necessárias quando solicitado.

Agora, tente alternar para o usuário root usando o testuser2:

su - testuser2

Insira a senha do testuser2 quando solicitado.

Agora tente alternar para o usuário root:

su -

Você deve receber uma mensagem de falha de autenticação, mesmo se inserir a senha correta do root. Isso ocorre porque o testuser2 não é membro do sugroup.

Agora volte para o seu usuário original:

exit

E tente usar o su com o testuser, que é membro do sugroup:

su - testuser

Insira a senha do testuser quando solicitado.

Agora tente alternar para o usuário root:

su -

Se você inserir a senha correta do root, deverá conseguir alternar para o usuário root com sucesso.

Revertendo as Alterações

Para fins de conclusão deste laboratório, vamos reverter nossas alterações na configuração do PAM:

sudo cp /etc/pam.d/su.bak /etc/pam.d/su

Esta configuração permite que você controle quem pode usar o comando su para alternar para o usuário root, aumentando a segurança do seu sistema.

Solucionando e Resolvendo Falhas de Autenticação com Su

Nesta etapa, você usará um processo sistemático para solucionar e resolver falhas de autenticação com o su.

Diagnosticando Falhas de Autenticação

Ao encontrar uma falha de autenticação com o su, siga estas etapas sistemáticas para diagnosticar o problema:

Etapa 1: Verifique a Mensagem de Erro

A mensagem de erro pode fornecer pistas valiosas sobre a natureza da falha. Mensagens de erro comuns incluem:

  • su: Authentication failure - Normalmente indica uma senha incorreta.
  • su: user username does not exist - A conta de usuário especificada não existe.
  • su: permission denied - Restrições de controle de acesso estão impedindo a operação.

Etapa 2: Verifique a Conta de Usuário

Certifique-se de que a conta de usuário alvo existe e não está bloqueada:

grep testuser /etc/passwd

Isso deve exibir a entrada para o testuser no arquivo de senhas, confirmando que a conta existe.

Verifique se a conta está bloqueada:

sudo passwd -S testuser

A saída inclui o status da conta. Se disser "L" (locked), a conta está bloqueada.

Etapa 3: Verifique Restrições de Controle de Acesso

Como aprendemos na etapa anterior, a configuração do PAM pode restringir o acesso ao su. Verifique tais restrições:

grep -v "^#" /etc/pam.d/su | grep pam_wheel

Se isso retornar uma linha contendo pam_wheel.so, o acesso ao su pode estar restrito a membros de um grupo específico.

Etapa 4: Examine os Logs do Sistema

Os registros de login falhos podem fornecer informações úteis sobre falhas de autenticação:

sudo lastb | head

Procure por entradas relacionadas às suas tentativas falhas de su, que podem fornecer contexto adicional.

Resolvendo Falhas Comuns de Autenticação com Su

Agora, vamos abordar falhas comuns de autenticação com o su e como resolvê-las:

1. Senha Incorreta

Se você está inserindo a senha correta, mas ainda obtendo falhas de autenticação, a senha pode precisar ser redefinida:

sudo passwd testuser

Insira uma nova senha para o testuser quando solicitado.

2. Conta Bloqueada

Se a conta estiver bloqueada, desbloqueie-a:

sudo passwd -u testuser

3. Restrições de Controle de Acesso

Se as restrições de controle de acesso estiverem impedindo o acesso ao su, você pode:

a. Adicionar o usuário ao grupo necessário:

sudo usermod -aG sugroup testuser2

Isso adiciona o testuser2 ao sugroup.

b. Desabilitar temporariamente a restrição comentando a linha relevante na configuração do PAM:

sudo sed -i 's/^auth\s\+required\s\+pam_wheel.so/#&/' /etc/pam.d/su

Este comando comenta a linha contendo pam_wheel.so na configuração do PAM do su.

4. Problemas de Permissão de Arquivo

Se o binário do su tiver permissões incorretas, corrija-as:

sudo chmod u+s $(which su)

Isso garante que o bit setuid esteja definido no binário do su.

Testando as Correções

Após aplicar as correções, teste se a autenticação com o su funciona corretamente:

su - testuser

Insira a senha do testuser quando solicitado. Se bem-sucedido, você deve estar logado como testuser.

Tente alternar para o usuário root:

su -

Se você tiver a senha do root e as restrições de controle de acesso tiverem sido tratadas adequadamente, você deve conseguir alternar para o usuário root com sucesso.

Essas etapas de solução de problemas e correções abordam as falhas de autenticação com o su mais comuns. Ao diagnosticar e resolver esses problemas sistematicamente, você pode garantir que o comando su funcione corretamente em seu sistema.

Melhores Práticas para o Uso Seguro do Su

Nesta etapa, você explorará as melhores práticas para usar o comando su com segurança. Seguir essas práticas ajuda a minimizar os riscos de segurança, permitindo que as tarefas administrativas sejam realizadas de forma eficaz.

Use Sudo em vez de Su quando Possível

O comando sudo é geralmente considerado mais seguro que o su porque:

  • Permite um controle mais granular sobre as permissões
  • Registra os comandos executados com privilégios elevados
  • Não exige o compartilhamento da senha do root

Exemplo de uso do sudo em vez do su:

## Em vez de:
su -
## Depois inserir comandos como root

## Use:
sudo command

Tente este exemplo:

sudo ls /root

Isso executa o comando ls com privilégios de root sem alternar para o usuário root.

Configure o Acesso ao Sudo Adequadamente

Certifique-se de que o sudo esteja configurado corretamente para conceder apenas os privilégios necessários:

sudo visudo

Isso abre o arquivo sudoers em um editor seguro. O arquivo deve conter entradas semelhantes a:

## User privilege specification
root    ALL=(ALL:ALL) ALL

## Members of the sudo group may gain root privileges
%sudo   ALL=(ALL:ALL) ALL

Pressione Ctrl+X para sair sem fazer alterações.

Limite o Login Direto como Root

Desencoraje o login direto como root, especialmente via SSH. Em vez disso, os usuários devem fazer login com suas contas regulares e usar su ou sudo quando necessário.

Verifique se o login direto como root via SSH está desabilitado:

grep "PermitRootLogin" /etc/ssh/sshd_config

Se isso retornar PermitRootLogin no, o login direto como root está devidamente desabilitado.

Implemente Políticas de Senha Robustas

Certifique-se de que a senha do root e as senhas dos usuários com acesso ao su sejam fortes:

sudo apt-get install -y libpam-pwquality

Isso instala um módulo PAM para verificação de qualidade de senha.

Configure as políticas de senha editando a configuração do PAM:

sudo nano /etc/pam.d/common-password

Procure por uma linha contendo pam_pwquality.so e certifique-se de que ela tenha parâmetros apropriados como:

password requisite pam_pwquality.so retry=3 minlen=12 difok=3

Pressione Ctrl+X para sair sem fazer alterações, pois estamos apenas examinando a configuração.

Audite Regularmente o Uso do Su

Revise os registros de login falhos quando precisar investigar tentativas de autenticação malsucedidas:

sudo lastb | head

Isso mostra tentativas recentes de autenticação falhas registradas em /var/log/btmp.

Considere configurar alertas automatizados para múltiplas tentativas falhas de su, o que pode indicar um ataque.

Use o Su com a Opção Dash

Ao usar o su para alternar para outro usuário, especialmente o root, use a opção dash (-) para obter um ambiente limpo:

su - username

Isso fornece um shell de login com as variáveis de ambiente do usuário alvo, o que é mais seguro e evita possíveis problemas causados pela herança do ambiente do usuário original.

Sessão de Prática - Uso Seguro do Su

Vamos praticar essas melhores práticas.

Primeiro, em vez de usar su - para se tornar root e depois executar um comando, use o sudo:

## Em vez de:
## su -
## cat /etc/shadow

## Use:
sudo cat /etc/shadow

Em seguida, alterne para o testuser com um ambiente limpo:

su - testuser

Depois, saia de volta para o seu usuário original:

exit

Finalmente, verifique os registros de login falhos:

sudo lastb | head

Seguindo essas melhores práticas, você pode usar o comando su com segurança enquanto minimiza os riscos potenciais de segurança para o seu sistema.

Resumo

Neste laboratório, exploramos o comando su no Linux e aprendemos como solucionar falhas comuns de autenticação. Abordamos:

  1. Entendimento do uso básico do comando su e como ele funciona
  2. Identificação de causas comuns de falhas de autenticação com o su, incluindo senhas incorretas, restrições de conta e problemas de configuração do PAM
  3. Configuração do controle de acesso para o comando su para aumentar a segurança
  4. Solução e resolução de falhas de autenticação com o su através de diagnóstico sistemático
  5. Implementação de melhores práticas para o uso seguro do su, incluindo o uso do sudo quando possível, configuração de políticas de senha robustas e auditoria regular do uso do su

Ao aplicar essas técnicas e melhores práticas, você pode garantir que o comando su funcione corretamente enquanto mantém a segurança do seu sistema Linux. Lembre-se de que o gerenciamento adequado da autenticação é um aspecto crucial da administração e segurança do sistema.