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:
- 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
- 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:
- 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
- Mude para testuser com um ambiente limpo:
su - testuser
- Saia de volta para seu usuário original:
exit
- 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:
- Compreensão do uso básico do comando
sue como ele funciona - 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
- Configuração do controle de acesso para o comando
supara aprimorar a segurança - Solução de problemas e resolução de falhas de autenticação do su por meio de diagnóstico sistemático
- 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.



