Solução de Problemas de Falhas de Autenticação 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, frequentemente o usuário root, para realizar tarefas administrativas. No entanto, falhas de autenticação do su podem ocorrer, levando a negações de acesso e potenciais riscos de segurança. Este tutorial irá guiá-lo através do processo de solução de problemas de falhas de autenticação do su no Linux, cobrindo causas comuns, configurações e as melhores práticas para o uso seguro do su.

Compreendendo o Comando Su e Uso Básico

O comando su no Linux permite que os usuários mudem sua identidade de usuário 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 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 razões 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 mudar para este usuário:

su testuser

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

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

whoami

A saída deve mostrar:

testuser

Para retornar ao seu usuário original, simplesmente digite:

exit

Usando 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 muda a identidade do usuário, mas também:

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

Experimente este comando e observe as diferenças:

pwd

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

/home/testuser

Saia de testuser digitando:

exit

Esta compreensão básica do comando su nos ajudará a solucionar falhas de autenticação nos próximos passos.

Falhas Comuns de Autenticação do Su e Suas Causas

Ao usar o comando su, você pode encontrar falhas de autenticação por vários motivos. Compreender 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:

  1. Tente mudar para testuser com uma senha incorreta:
su testuser

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

su: Authentication failure
  1. Tente mudar 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 ser 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 para 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 Pluggable Authentication Modules (PAM) 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 linhas que possam restringir o acesso, como:

auth       required   pam_wheel.so

Esta linha, se descomentada, restringiria o acesso su aos membros do grupo wheel.

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

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

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 de seu proprietário (root) em vez do usuário que o executa.

5. Examinando os Logs de Autenticação

Ao solucionar problemas de falhas de autenticação, verificar os logs do sistema pode fornecer informações valiosas:

sudo tail /var/log/auth.log

Este comando exibe eventos de autenticação recentes, incluindo tentativas de su malsucedidas.

Por exemplo, uma tentativa de su malsucedida pode mostrar uma entrada como:

May 10 14:23:45 ubuntu su[12345]: FAILED su for root by labex

Compreender essas causas comuns de falhas de autenticação do su o ajudará a identificar e resolver problemas de forma mais eficaz nos próximos passos.

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 aprimorar a segurança.

Compreendendo a Configuração do PAM

O sistema Pluggable Authentication Modules (PAM) é 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 procurada é:

auth       required   pam_wheel.so

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

Restringindo o Acesso Su a Grupos Específicos

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

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 su aos 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 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 de 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 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 mudar para o usuário root usando testuser2:

su - testuser2

Insira a senha para testuser2 quando solicitado.

Agora tente mudar para o usuário root:

su -

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

Agora, volte para seu usuário original:

exit

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

su - testuser

Insira a senha para testuser quando solicitado.

Agora tente mudar para o usuário root:

su -

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

Revertendo as Mudanças

Para fins de conclusão do restante 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 mudar para o usuário root, aprimorando a segurança do seu sistema.

Solucionando Problemas e Resolvendo Falhas de Autenticação do Su

Agora que entendemos as causas comuns de falhas de autenticação do su e como configurar o controle de acesso, vamos nos concentrar na solução de problemas e na resolução dessas falhas.

Diagnosticando Falhas de Autenticação

Ao encontrar uma falha de autenticação do 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 - Tipicamente 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 de destino existe e não está bloqueada:

grep testuser /etc/passwd

Isso deve exibir a entrada para 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" (bloqueado), a conta está bloqueada.

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

Como aprendemos na etapa anterior, a configuração do PAM pode restringir o acesso su. Verifique se há 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 ser restrito aos membros de um grupo específico.

Etapa 4: Examine os Logs do Sistema

Os logs do sistema podem fornecer informações detalhadas sobre falhas de autenticação:

sudo tail -n 20 /var/log/auth.log

Procure entradas relacionadas a falhas de su, que podem fornecer contexto adicional.

Resolvendo Falhas Comuns de Autenticação do Su

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

1. Senha Incorreta

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

sudo passwd testuser

Insira uma nova senha para 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 su, você pode:

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

sudo usermod -aG sugroup testuser2

Isso adiciona testuser2 ao sugroup.

b. Desativar 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 su tiver permissões incorretas, corrija-as:

sudo chmod u+s $(which su)

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

Testando as Correções

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

su - testuser

Insira a senha para testuser quando solicitado. Se for bem-sucedido, você deverá estar logado como testuser.

Tente mudar para o usuário root:

su -

Se você tiver a senha root e as restrições de controle de acesso foram devidamente tratadas, deverá conseguir mudar para o usuário root com sucesso.

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

Melhores Práticas para o Uso Seguro do Su

Nesta etapa final, exploraremos as melhores práticas para usar o comando su de forma segura. Seguir essas práticas ajuda a minimizar os riscos de segurança, ao mesmo tempo em que permite que as tarefas administrativas sejam executadas de forma eficaz.

Use Sudo em Vez de Su Quando Possível

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

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

Exemplo de uso de sudo em vez de su:

## Em vez de:
su -
## Em seguida, inserir comandos como root

## Use:
sudo command

Experimente este exemplo:

sudo ls /root

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

Configure o Acesso 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á desativado:

grep "PermitRootLogin" /etc/ssh/sshd_config

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

Implemente Políticas de Senha Robustas

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

sudo apt-get install -y libpam-pwquality

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

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

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

Procure uma linha contendo pam_pwquality.so e certifique-se de que ela tenha os 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 logs para monitorar o uso do su:

sudo grep "su:" /var/log/auth.log | tail -n 10

Isso mostra as tentativas recentes de su, tanto bem-sucedidas quanto malsucedidas.

Considere configurar alertas automatizados para várias tentativas de su malsucedidas, o que pode indicar um ataque.

Use Su com a Opção Dash

Ao usar su para mudar para outro usuário, especialmente 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 de destino, o que é mais seguro e evita possíveis problemas causados ​​pela herança do ambiente do usuário original.

Sessão Prática - Uso Seguro do Su

Vamos praticar essas melhores práticas:

  1. Em vez de usar su - para se tornar root e, em seguida, executar um comando, use sudo:
## Em vez de:
## su -
## cat /etc/shadow

## Use:
sudo cat /etc/shadow
  1. Mude para testuser com um ambiente limpo:
su - testuser
  1. Saia de volta para seu usuário original:
exit
  1. Verifique o log de autenticação para uso do su:
sudo grep "su:" /var/log/auth.log | tail -n 5

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

Resumo

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

  1. Compreensão do uso básico do comando su e como ele funciona
  2. Identificação das causas comuns de falhas de autenticação do 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 aprimorar a segurança
  4. Solução de problemas e resolução de falhas de autenticação do su por meio de diagnóstico sistemático
  5. Implementação das melhores práticas para o uso seguro do su, incluindo o uso de sudo quando possível, a configuração de políticas de senha robustas e a auditoria regular do uso do su

Ao aplicar essas técnicas e melhores práticas, você pode garantir que o comando su funcione corretamente, mantendo 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.