Configurar Contas de Usuário e Privilégios de Sudo no Linux

CompTIABeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá técnicas fundamentais para gerenciar contas de usuário e privilégios de sudo, visando fortalecer a segurança de um sistema Linux. Você praticará a aplicação de políticas de expiração de senhas, o bloqueio e desbloqueio de contas de usuário, a proteção da conta root e a delegação de permissões administrativas. Essas habilidades são pilares para qualquer administrador de sistemas responsável por manter um ambiente Linux seguro e bem organizado.

Você começará utilizando o comando chage para definir regras de expiração de senha e o comando passwd para controlar o acesso às contas. Em seguida, reforçará a segurança do sistema desativando o login direto via SSH para o usuário root. Por fim, explorará dois métodos para conceder privilégios elevados: adicionar um usuário ao grupo wheel para acesso sudo geral e criar regras personalizadas e detalhadas usando o comando visudo para delegar tarefas administrativas específicas de forma segura.

Gerenciar Políticas de Senha de Usuário com chage

Nesta etapa, você aprenderá a gerenciar as políticas de senha dos usuários utilizando o comando chage. A aplicação de políticas de senha, como a definição de uma data de expiração, é uma prática de segurança crucial para proteger as contas contra acessos não autorizados. O comando chage (abreviação de "change age") permite visualizar e modificar as informações de validade da senha das contas de usuário.

Primeiro, vamos criar um novo usuário para praticar com segurança. Chamaremos este usuário de testuser. Execute o seguinte comando para adicionar o usuário:

sudo useradd -m testuser

Em seguida, defina uma senha para o testuser. Você será solicitado a inserir e confirmar uma nova senha. Para facilitar este laboratório, use password como senha.

sudo passwd testuser

Você verá uma saída confirmando que a senha foi atualizada com sucesso.

New password:
Retype new password:
passwd: password updated successfully

Agora que temos o nosso testuser, vamos visualizar suas configurações padrão de validade de senha. Use o comando chage com a opção -l (list):

sudo chage -l testuser

A saída mostra a política atual. Por padrão, a maioria das configurações está inativa e a senha nunca expira.

Last password change     : <date>
Password expires     : never
Password inactive     : never
Account expires      : never
Minimum number of days between password change  : 0
Maximum number of days between password change  : 99999
Number of days of warning before password expires : 7

Vamos aplicar uma política mais rigorosa. Configuraremos a conta para que:

  • -m 7: O usuário deve esperar pelo menos 7 dias antes de alterar sua senha novamente.
  • -M 90: A senha expirará após 90 dias.
  • -W 14: O usuário receberá um aviso 14 dias antes da senha expirar.

Você pode aplicar todas essas configurações com um único comando chage:

sudo chage -m 7 -M 90 -W 14 testuser

Agora, verifique se as alterações foram aplicadas listando as configurações novamente:

sudo chage -l testuser

A saída deve agora refletir a nova política que você acabou de definir.

Last password change     : <date>
Password expires     : <date + 90 days>
Password inactive     : never
Account expires      : never
Minimum number of days between password change  : 7
Maximum number of days between password change  : 90
Number of days of warning before password expires : 14

Outro comando útil para verificar rapidamente o status da senha de um usuário é o passwd -S. Vamos testá-lo no testuser:

sudo passwd -S testuser

A saída fornece um resumo compacto do status da senha, incluindo a data da última alteração, idade mínima, idade máxima e período de aviso.

testuser PS <date> 7 90 14 -1

Você configurou e verificou com sucesso as políticas de validade de senha para uma conta de usuário.

Bloquear e Desbloquear uma Conta de Usuário com passwd

Nesta etapa, você aprenderá como bloquear e desbloquear temporariamente contas de usuário. Esta é uma tarefa administrativa comum, por exemplo, quando um funcionário sai de férias prolongadas ou se houver suspeita de que uma conta foi comprometida. Bloquear uma conta impede logins, mas preserva os dados e as configurações do usuário. Usaremos a conta testuser criada na etapa anterior.

Primeiro, vamos bloquear a conta testuser. O comando passwd com a opção -l (lock) é usado para este propósito.

sudo passwd -l testuser

Você deverá ver uma mensagem de confirmação:

passwd: password expiry information changed.

Para verificar se a conta está bloqueada, você pode checar o status com o comando passwd -S novamente.

sudo passwd -S testuser

Observe o campo de status na saída. Ele deve agora começar com L (Locked), indicando que o login baseado em senha está desativado.

testuser L <date> 7 90 14 -1

Vamos tentar alternar para a conta testuser para confirmar que ela está inacessível. Use o comando su (substitute user). Você será solicitado a inserir a senha do testuser.

su - testuser

Digite a senha password. A tentativa de login falhará, o que é o comportamento esperado para uma conta bloqueada.

Password:
su: Authentication failure

Agora, vamos desbloquear a conta. Isso é feito com a opção passwd -u (unlock).

sudo passwd -u testuser

Novamente, você verá uma mensagem de confirmação:

passwd: password expiry information changed.

Vamos verificar o status de desbloqueio com passwd -S:

sudo passwd -S testuser

O status deve agora ser PS (Password Set), indicando que a conta está ativa e possui uma senha válida.

testuser PS <date> 7 90 14 -1

Finalmente, vamos tentar alternar para a conta testuser novamente.

su - testuser

Digite a senha password quando solicitado. Desta vez, o login deve ser bem-sucedido e o prompt do comando mudará para mostrar que você está logado como testuser.

Password:
testuser@<hostname>:~$

Para retornar à sua sessão original do usuário labex, basta digitar exit e pressionar Enter.

exit

Você praticou com sucesso o bloqueio e desbloqueio de uma conta de usuário.

Proteger a Conta Root Desativando o Login via SSH

Nesta etapa, você aumentará a segurança do seu sistema desativando o login direto via SSH para o usuário root. Permitir o login remoto do root é um risco de segurança significativo, pois fornece um alvo direto e de alto privilégio para atacantes. A melhor prática é fazer o login como um usuário padrão e, em seguida, usar o sudo para realizar tarefas administrativas.

Primeiro, você precisa editar o arquivo de configuração do serviço SSH, localizado em /etc/ssh/sshd_config. Usaremos o editor de texto nano para modificar este arquivo. Como é um arquivo de sistema protegido, você deve usar o sudo.

sudo nano /etc/ssh/sshd_config

Dentro do editor nano, você precisa encontrar a linha que contém PermitRootLogin. Você pode usar a função de busca pressionando Ctrl+W, digitando PermitRootLogin e pressionando Enter.

Nota: Em alguns sistemas operacionais ou ambientes de navegador, o atalho Ctrl+W pode entrar em conflito com atalhos do próprio navegador. Se não conseguir usar o Ctrl+W para buscar, role manualmente pelo arquivo até localizar a linha PermitRootLogin, que geralmente se encontra na seção de autenticação do arquivo de configuração.

Você provavelmente encontrará uma linha parecida com esta:

#PermitRootLogin prohibit-password

Ou ela pode estar definida como yes. Sua tarefa é alterar essa linha para PermitRootLogin no. Certifique-se de remover o caractere # no início da linha, caso ele exista, pois esse caractere comenta a linha, tornando-a inativa. A linha final deve ficar exatamente assim:

PermitRootLogin no

Após fazer a alteração, salve o arquivo e saia do nano. Pressione Ctrl+X, depois Y para confirmar que deseja salvar as alterações e, por fim, Enter para confirmar o nome do arquivo.

Para que a nova configuração entre em vigor, você deve reiniciar o serviço SSH. Use o comando service para isso:

sudo service ssh restart

O comando não produzirá nenhuma saída se for executado com sucesso. Para ter certeza de que o serviço está rodando corretamente, você pode verificar o status:

sudo service ssh status

Você deve ver que o serviço está running (em execução).

Agora, vamos testar se a alteração funciona. Tentaremos acessar a máquina via SSH como root a partir da própria máquina (usando localhost). Primeiro, você precisa definir uma senha para o usuário root para tornar o teste válido. Use password como senha.

sudo passwd root
New password:
Retype new password:
passwd: password updated successfully

Agora, tente o acesso SSH como root:

ssh root@localhost

A conexão deve ser imediatamente rejeitada com um erro de "Permission denied". Isso confirma que seu reforço de segurança está funcionando corretamente.

root@localhost: Permission denied (publickey,password).

Você protegeu seu sistema com sucesso ao desativar o login direto do root via SSH.

Conceder Acesso Sudo via Grupo wheel

Nesta etapa, você aprenderá um método padrão para conceder privilégios administrativos: adicionar um usuário a um grupo especial (comumente wheel ou sudo) que já está pré-configurado para ter acesso ao sudo. Essa abordagem é mais gerenciável e escalável do que adicionar entradas individuais de usuários no arquivo sudoers. Continuaremos usando a conta testuser.

Primeiro, vamos confirmar que o testuser não possui privilégios de sudo no momento. Alterne para a conta testuser. A senha é password.

su - testuser

Agora, como testuser, tente executar um comando que exija privilégios de root, como o whoami com sudo. Você será solicitado a inserir a senha do testuser.

sudo whoami

Após inserir a senha, o comando falhará. Você verá uma mensagem indicando que o testuser não está no arquivo sudoers. Este é o resultado esperado.

[sudo] password for testuser:
testuser is not in the sudoers file.  This incident will be reported.

Agora, digite exit para retornar à sua sessão de usuário labex.

exit

Em seguida, precisamos editar a configuração do sudoers para conceder acesso sudo a todos os membros do grupo wheel. A maneira mais segura de editar essa configuração é com o comando visudo, que valida a sintaxe antes de salvar para evitar que você perca o acesso administrativo ao sistema por erros de digitação.

sudo visudo

Isso abrirá o arquivo /etc/sudoers em um editor de texto (provavelmente vi ou nano). Procure por uma linha que se refira ao grupo %wheel. Ela provavelmente estará comentada com um caractere #.

## %wheel ALL=(ALL) ALL

ou

## %wheel ALL=(ALL:ALL) ALL

Você precisa descomentar essa linha removendo o # no início. O resultado deve ser este:

%wheel ALL=(ALL) ALL

Se você estiver no editor vi, use as setas para navegar até o #, pressione x para excluí-lo e, em seguida, digite :wq e pressione Enter para salvar e sair. Se estiver no nano, basta apagar o #, pressionar Ctrl+X, depois Y e Enter.

Agora que o grupo wheel tem permissões, adicione o testuser a ele. Use o comando usermod com as opções -aG, onde -a significa anexar (append) e -G especifica o grupo suplementar.

sudo usermod -aG wheel testuser

Para verificar se o testuser agora é membro do grupo wheel, use o comando groups:

groups testuser

A saída deve mostrar wheel na lista de grupos do testuser.

testuser : testuser wheel

Finalmente, vamos testar se as novas permissões funcionam. Alterne novamente para o testuser.

su - testuser

Tente o comando sudo novamente. Digite password quando solicitado.

sudo whoami

Desta vez, o comando deve ser executado com sucesso e exibir root, confirmando que o testuser agora possui privilégios de sudo.

[sudo] password for testuser:
root

Digite exit para retornar à sua sessão labex. Você concedeu acesso sudo com sucesso ao adicionar um usuário ao grupo wheel.

Criar Regras de Sudo Personalizadas com visudo

Nesta etapa, você irá além das permissões amplas baseadas em grupos e aprenderá a criar regras de sudo granulares. Isso é essencial para implementar o princípio do privilégio mínimo, onde os usuários recebem apenas as permissões exatas de que precisam para realizar suas tarefas. Usaremos aliases dentro do arquivo sudoers para definir um conjunto de usuários e um conjunto de comandos, vinculando-os em uma regra.

Primeiro, vamos criar uma situação para testar nossa regra. Iniciaremos um processo como usuário root. O comando top, um monitor de processos simples, é perfeito para isso. Vamos executá-lo em segundo plano usando o sudo. Antes de começar, vamos garantir que nenhum outro processo top esteja rodando.

pgrep top || echo "No top processes running"
sudo top &

Você verá o ID do processo (PID) do trabalho em segundo plano. Pressione Enter se o seu prompt não reaparecer imediatamente.

[1] <PID>

Agora, vamos criar a regra personalizada. Concederemos ao nosso testuser a capacidade específica de encerrar processos usando os comandos kill e pkill. Abra o arquivo sudoers para edição usando o comando visudo. Esta é a única maneira segura de editar este arquivo.

sudo visudo

Isso abrirá o /etc/sudoers em um editor. Vá até o final do arquivo. Adicione as seguintes linhas para definir um alias de comando e um alias de usuário, e então crie a regra que os conecta.

## Custom rule for junior administrators
Cmnd_Alias      KILL_CMDS = /usr/bin/kill, /usr/bin/pkill
User_Alias      JUNIOR_ADMINS = testuser

JUNIOR_ADMINS   ALL=(ALL) KILL_CMDS

Vamos detalhar essas linhas:

  • Cmnd_Alias: Cria uma lista nomeada de comandos. Chamamos a nossa de KILL_CMDS. Note que você deve usar o caminho completo dos comandos.
  • User_Alias: Cria uma lista nomeada de usuários. Chamamos a nossa de JUNIOR_ADMINS.
  • A linha final é a regra propriamente dita. Ela concede aos usuários em JUNIOR_ADMINS permissão para executar os comandos em KILL_CMDS em todos os hosts (ALL).

Após adicionar as linhas, salve o arquivo e saia do editor.

Para testar adequadamente esta regra específica, devemos primeiro remover o testuser do grupo wheel para revogar o acesso total ao sudo concedido na etapa anterior. Isso garante que nosso teste seja válido.

sudo gpasswd -d testuser wheel

Você verá uma mensagem de confirmação:

Removing user testuser from group wheel

Agora, vamos testar as novas permissões limitadas. Alterne para a conta testuser. A senha é password.

su - testuser

Primeiro, confirme que o acesso total ao sudo foi removido. Tente executar um comando que não esteja em nosso alias KILL_CMDS, como o whoami.

sudo whoami

Esta tentativa deve falhar com uma mensagem indicando que o testuser não tem permissão para executar este comando.

[sudo] password for testuser:
Sorry, user testuser is not allowed to execute '/usr/bin/whoami' as root on <hostname>.

Em seguida, tente um dos comandos permitidos. Vamos usar o pkill para parar o processo top que iniciamos anteriormente. Usaremos pkill -u root top para atingir especificamente o processo top rodando como root.

sudo pkill -u root top

Este comando deve ser executado com sucesso sem nenhuma mensagem de erro. Para confirmar que o processo top foi encerrado, saia de volta para o seu usuário labex e verifique o processo.

exit

Agora, verifique se o processo top ainda está rodando.

pgrep -u root top

O comando não deve produzir nenhuma saída, confirmando que o processo foi morto com sucesso pelo testuser. Você criou e testou com sucesso uma regra de sudo granular.

Resumo

Neste laboratório, você aprendeu técnicas essenciais para gerenciar contas de usuário e suas políticas de segurança em um ambiente Linux. Você praticou o uso do comando chage para aplicar regras de validade de senha, como a definição de tempos de vida mínimos e máximos e períodos de aviso. Também aprendeu a bloquear e desbloquear contas de usuário usando o comando passwd para controlar o acesso ao login. Para aumentar a segurança do sistema, você modificou a configuração do serviço SSH para desativar o login direto do root, uma prática recomendada crítica para proteger a conta mais privilegiada do sistema.

Além disso, você explorou métodos para delegar privilégios administrativos de forma segura usando o sudo. Aprendeu a prática padrão de conceder acesso total ao sudo adicionando um usuário ao grupo wheel com o comando usermod. Para um controle mais detalhado, utilizou o comando visudo para editar o arquivo sudoers com segurança, criando regras personalizadas que permitem a usuários específicos executar comandos designados com privilégios elevados, sem a necessidade da senha do root. Essa abordagem permite aplicar o princípio do privilégio mínimo, concedendo aos usuários apenas as permissões necessárias para realizar suas tarefas.