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

O comando tem root como alvo, mas o Ubuntu normalmente bloqueia a autenticação por senha de root. Uma falha de autenticação aqui é esperada. Não habilite o login por senha de root nem altere a conta da plataforma; todos os testes de login bem-sucedido abaixo usam usuários descartáveis do laboratório.

Vamos criar um usuário de teste para praticar:

sudo adduser testuser

Insira as informações necessárias quando solicitado. Apenas para esta conta de teste descartável, use DemoUser123! como senha de prática. Nunca altere a senha de labex nem sua associação ao grupo de sudo.

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 usermod -L testuser

A opção -L bloqueia a autenticação por senha da conta descartável testuser. Agora tente:

su testuser

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

A opção -U remove esse bloqueio de senha. Desbloqueie apenas esta conta de teste com:

sudo usermod -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

Nesta etapa, você testará uma regra de grupo do PAM com uma conta de destino descartável. Você não habilitará o login por senha de root nem restringirá o acesso à plataforma.

Prepare as Contas Descartáveis

Comece no shell original de labex. Confirme a identidade atual antes de usar sudo:

whoami

O resultado deve ser labex. Crie um segundo usuário de origem e um destino separado. Em seguida, defina senhas apenas para essas contas descartáveis:

sudo adduser --disabled-password --gecos '' testuser2
sudo adduser --disabled-password --gecos '' su-lab-target
printf '%s\n' 'testuser2:DemoOther123!' 'su-lab-target:DemoTarget123!' | sudo chpasswd
sudo groupadd sugroup
sudo usermod -aG sugroup testuser

Apenas testuser é membro de sugroup. Novos shells de login carregarão essa associação. A senha do destino é DemoTarget123! para os testes dos dois usuários de origem.

Aplique uma Regra PAM Específica para o Destino

O PAM controla a autenticação do su por meio de /etc/pam.d/su. A preparação salvou os bytes originais desse arquivo em /opt/labex/su-demo. O prefixo gerenciado abaixo aplica uma verificação de grupo apenas quando o destino é su-lab-target. A primeira regra ignora a regra seguinte para qualquer outro destino, incluindo labex. use_uid verifica a identidade real de quem executa o comando, e group=sugroup indica o grupo permitido.

sudo python3 - <<'PY'
from pathlib import Path
original = Path('/opt/labex/su-demo/pam-su.original').read_text()
prefix = """## Lab-only rule for su-lab-target

auth [success=1 default=ignore] pam_succeed_if.so quiet user != su-lab-target

auth required pam_wheel.so use_uid group=sugroup

"""
Path('/etc/pam.d/su').write_text(prefix + original)
PY

As regras originais do PAM permanecem depois desse prefixo. A associação ao grupo não substitui a autenticação por senha. Não adicione labex ao grupo de demonstração nem edite qualquer configuração de SSH, sudo ou da conta da plataforma.

Teste um Usuário Fora do Grupo

Alterne de labex para testuser2, usando DemoOther123!:

su - testuser2

Nesse shell, tente acessar o destino delimitado usando sua senha correta DemoTarget123!:

su - su-lab-target

Isso deve falhar com um erro de autenticação porque testuser2 não pertence a sugroup. Uma tentativa de su que falha não cria um novo shell. Execute exit uma vez para retornar a labex:

exit
whoami

Confirme que whoami informa labex antes de continuar.

Teste um Usuário Dentro do Grupo

Alterne para testuser usando sua senha DemoUser123!, definida na etapa 1:

su - testuser
id
su - su-lab-target

Insira DemoTarget123! para o destino. Essa troca deve funcionar. Confirme a identidade do destino:

whoami

A saída deve ser su-lab-target. Dois shells foram abertos, portanto execute exit duas vezes: primeiro para retornar a testuser, depois a labex:

exit
exit
whoami

Confirme que whoami informa labex. Nunca execute o comando de restauração no shell de um usuário descartável.

Restaure a Política Original

A partir de labex, restaure a configuração salva e compare-a com a original:

sudo cp -p /opt/labex/su-demo/pam-su.original /etc/pam.d/su
sudo cmp /opt/labex/su-demo/pam-su.original /etc/pam.d/su

Uma comparação bem-sucedida não exibe nenhuma saída. O grupo e os usuários de demonstração permanecem disponíveis para diagnóstico, enquanto su volta a usar sua política original.

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 de destino existe e não está bloqueada:

grep testuser /etc/passwd

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

Verifique se a conta está bloqueada:

sudo getent shadow testuser | cut -d: -f2 | cut -c1

Isso mostra apenas o primeiro caractere do campo de senha da conta descartável, não o hash da senha. Um ! inicial significa que a autenticação por senha 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 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 obtém falhas de autenticação, a senha pode precisar ser redefinida:

printf '%s\n' 'testuser:DemoUser123!' | sudo chpasswd

Isso redefine apenas a senha do usuário descartável testuser para o valor de prática conhecido; não altera labex nem root.

2. Conta Bloqueada

Se a conta estiver bloqueada, desbloqueie-a:

sudo usermod -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 testuser2 a sugroup.

b. Para este laboratório, remover apenas a política de demonstração restaurando o arquivo original salvo:

sudo cp -p /opt/labex/su-demo/pam-su.original /etc/pam.d/su

Isso restaura exatamente a política original de su, em vez de desativar regras arbitrárias de autenticação.

4. Problemas de Permissão de Arquivo

Inspecione as permissões do binário su sem alterar o binário da plataforma:

ls -l "$(command -v su)"

O bit setuid esperado aparece como s na posição de execução do proprietário. Se o binário da plataforma estiver danificado, use uma nova VM em vez de alterar suas permissões.

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 de testuser quando solicitado. Se funcionar, você deverá estar conectado como testuser.

Execute whoami para confirmar testuser e, em seguida, execute exit uma vez para retornar a labex. Não use o login por senha de root como teste de sucesso: o login na conta descartável é o caso positivo.

Essas etapas de diagnóstico 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ê revisará o uso seguro de privilégios e confirmará que a demonstração deixou o acesso à plataforma inalterado.

Prefira Sudo para Comandos Administrativos Individuais

Sudo pode conceder e registrar ações administrativas individuais sem compartilhar a senha de root. No seu shell de labex, liste o diretório home de root sem iniciar um shell de login de root:

sudo ls /root

Mantenha a política de sudo existente da plataforma. Você pode inspecionar os comandos permitidos sem alterar a política:

sudo -l

Mantenha as Alterações de Autenticação Delimitadas

Em sistemas de produção, os administradores gerenciam o login de root, a qualidade das senhas e a política de autenticação por meio de fluxos de configuração aprovados. Este exercício não altera as configurações de SSH, a senha de labex nem a associação de labex a grupos. Uma política de senhas fortes ou a autenticação multifator exige sua própria implementação; nenhuma delas é configurada por este tutorial.

Confirme que a política temporária de su foi removida:

sudo cmp /opt/labex/su-demo/pam-su.original /etc/pam.d/su

A ausência de saída significa que a política corresponde ao original salvo.

Audite Tentativas de Autenticação Falhas

Use o banco de dados de logins falhos para investigar tentativas malsucedidas:

sudo lastb | head

Isso lê /var/log/btmp; não mostra todas as sessões de su bem-sucedidas. Interprete apenas os registros realmente gravados pelo sistema e investigue falhas repetidas em um ambiente de produção.

Use um Ambiente de Login e Retorne Explicitamente

A opção com hífen inicia o ambiente de login do usuário de destino. Use a senha DemoUser123! de testuser:

su - testuser
whoami
exit
whoami

As duas verificações de identidade devem mostrar testuser e depois labex. O exit fecha apenas o shell criado por su. A VM mantém seu login original na plataforma, o acesso a sudo e a política de su.

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.