Concessão de Privilégios no Linux

LinuxBeginner
Pratique Agora

Introdução

Em sistemas Linux, gerenciar permissões de usuário e controle de acesso é um aspecto fundamental da administração e segurança do sistema. O comando sudo, abreviação de "superuser do", permite que usuários autorizados executem comandos com privilégios elevados, tipicamente os do superusuário ou conta root.

Este laboratório irá guiá-lo através do processo de concessão e restrição de privilégios a usuários em um ambiente Linux. Você aprenderá como adicionar usuários ao grupo sudo, permitindo que eles realizem tarefas administrativas, e como limitar suas permissões a comandos específicos. Essas habilidades são essenciais para manter sistemas seguros onde o acesso a operações sensíveis precisa ser cuidadosamente controlado.

Entendendo o Gerenciamento de Usuários e os Fundamentos do sudo

Nesta etapa, você aprenderá sobre o gerenciamento de usuários no Linux e os fundamentos do comando sudo. Você criará um novo usuário e entenderá como conceder a ele privilégios administrativos.

O que é sudo?

O comando sudo permite que usuários autorizados executem comandos com os privilégios de segurança de outro usuário, tipicamente o superusuário (root). Isso fornece uma maneira de realizar tarefas administrativas sem fazer login como o usuário root, o que é considerado uma prática recomendada de segurança.

Criando um Novo Usuário

Vamos começar criando uma nova conta de usuário. Abra seu terminal e execute o seguinte comando:

sudo adduser trusted_advisor

Você será solicitado a inserir uma senha e algumas informações opcionais para o novo usuário. Para este laboratório, você pode definir uma senha simples como password123 e deixar os outros campos em branco pressionando Enter.

A saída deve ser semelhante a esta:

Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
 Full Name []:
 Room Number []:
 Work Phone []:
 Home Phone []:
 Other []:
Is the information correct? [Y/n] Y

Verificando Informações do Usuário

Para verificar se o usuário foi criado com sucesso, você pode examinar o conteúdo do arquivo /etc/passwd:

grep trusted_advisor /etc/passwd

Isso deve exibir uma linha contendo as informações do usuário.

Concedendo Privilégios sudo

Para conceder a um usuário privilégios sudo, você precisa adicioná-lo ao grupo sudo. No Ubuntu, membros do grupo sudo podem usar o comando sudo. Execute o seguinte comando:

sudo usermod -aG sudo trusted_advisor

Este comando adiciona (-a) o usuário trusted_advisor ao grupo sudo (-G sudo). O usuário agora poderá executar comandos com privilégios administrativos.

Verificando o Acesso sudo

Para verificar se o novo usuário tem acesso sudo, você pode mudar para essa conta de usuário e tentar listar o conteúdo do diretório /root, que normalmente é acessível apenas ao usuário root:

su - trusted_advisor

Quando solicitado, insira a senha que você definiu para este usuário. Em seguida, execute:

sudo ls /root

Você será solicitado a inserir a senha novamente (primeira vez que usa sudo). Depois de inseri-la, você deverá ver o conteúdo do diretório /root, o que confirma que o usuário tem privilégios sudo.

Finalmente, saia da sessão do usuário trusted_advisor para retornar ao seu usuário original:

exit

Limitando o Acesso sudo com o Arquivo sudoers

Nesta etapa, você aprenderá como restringir os privilégios sudo de um usuário a comandos específicos usando o arquivo sudoers. Isso implementa o princípio do menor privilégio (principle of least privilege), que afirma que os usuários devem ter apenas os privilégios mínimos necessários para realizar suas tarefas.

Compreendendo o Arquivo sudoers

O arquivo /etc/sudoers controla quem pode usar o comando sudo e quais comandos eles podem executar. Este arquivo nunca deve ser editado diretamente com um editor de texto regular, pois erros de sintaxe podem bloqueá-lo do sistema. Em vez disso, use sempre o comando visudo, que verifica erros de sintaxe antes de salvar.

Editando o Arquivo sudoers

Para editar o arquivo sudoers com segurança, use o comando visudo:

sudo visudo

Isso abrirá o arquivo sudoers no editor padrão (geralmente nano ou vi).

Compreendendo a Sintaxe sudoers

A sintaxe básica para uma entrada sudo no arquivo sudoers é:

user_or_group    host=(run_as_user:run_as_group)    NOPASSWD: commands

Onde:

  • user_or_group: O usuário ou grupo ao qual esta regra se aplica
  • host: O nome do host onde esta regra se aplica (geralmente ALL)
  • run_as_user: O usuário como o qual os comandos serão executados (geralmente ALL, significando root)
  • run_as_group: O grupo como o qual os comandos serão executados (pode ser omitido)
  • NOPASSWD: Tag opcional que permite que os comandos sejam executados sem inserir uma senha
  • commands: Os comandos específicos que podem ser executados com sudo

Adicionando Acesso sudo Restrito

Role até o final do arquivo e adicione a seguinte linha para conceder ao trusted_advisor permissões para executar apenas os comandos cp e mv sem senha:

trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv

Para salvar o arquivo no nano, pressione Ctrl+O, depois Enter e, para sair, pressione Ctrl+X.

Testando o Acesso sudo Restrito

Agora, vamos testar se o acesso sudo restrito funciona como esperado. Primeiro, vamos criar um arquivo de teste no diretório atual:

echo "This is a test file" > important_file.txt

Agora, mude para o usuário trusted_advisor:

su - trusted_advisor

Insira a senha quando solicitado.

Tente copiar o arquivo para o diretório raiz, o que deve ser permitido:

sudo cp /home/labex/project/important_file.txt /root/

Isso deve ser bem-sucedido sem pedir uma senha.

Agora, tente executar um comando que não está na lista permitida, como cat:

sudo cat /root/important_file.txt

Você deve obter um erro de permissão negada porque cat não está na lista permitida de comandos.

Finalmente, verifique se o arquivo foi copiado para o diretório raiz:

sudo ls /root/

Você deve ver important_file.txt na saída.

Saia da sessão do usuário trusted_advisor:

exit

Removendo o Arquivo de Teste

Para limpar, remova o arquivo de teste:

sudo rm important_file.txt

Entendendo os Logs do sudo e Considerações de Segurança

Nesta etapa, você aprenderá sobre o registro de logs do sudo e as melhores práticas de segurança. Monitorar o uso do sudo é importante para fins de segurança e auditoria.

Registro de Logs sudo

Quando os usuários executam comandos com sudo, essas ações são registradas. Isso fornece um rastro de auditoria que pode ser útil para monitoramento de segurança e solução de problemas.

No Ubuntu, os logs sudo são normalmente armazenados no log de autenticação do sistema em /var/log/auth.log. Vamos examinar as atividades recentes do sudo:

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

Este comando exibe as últimas 10 entradas de log relacionadas ao sudo. A saída deve incluir carimbos de data/hora, nomes de usuário e os comandos que foram executados com sudo.

Melhores Práticas de Segurança para sudo

Aqui estão algumas melhores práticas para gerenciar os privilégios sudo:

  1. Princípio do Menor Privilégio (Principle of Least Privilege): Os usuários devem ter apenas os privilégios mínimos necessários para realizar suas tarefas.

  2. Use Comandos Específicos: Em vez de conceder acesso sudo completo, especifique exatamente quais comandos um usuário pode executar.

  3. Defina Requisitos de Senha: Para operações sensíveis, certifique-se de que os usuários devem inserir sua senha ao usar sudo.

  4. Auditoria Regular: Revise periodicamente os logs sudo e o arquivo sudoers para garantir a configuração adequada.

  5. Remova o Acesso Desnecessário: Quando os usuários não precisarem mais de privilégios elevados, remova-os prontamente do grupo sudo.

Removendo o Acesso sudo

Se um usuário não precisar mais de privilégios sudo, você pode removê-lo do grupo sudo:

sudo deluser trusted_advisor sudo

Verifique se o usuário não está mais no grupo sudo:

groups trusted_advisor

A saída não deve mais incluir "sudo" na lista de grupos.

Testando o Acesso sudo Revogado

Vamos verificar se o usuário não pode mais executar comandos com sudo:

su - trusted_advisor

Insira a senha quando solicitado.

Tente executar um comando com sudo:

sudo ls /root

Você deve receber um erro de permissão negada.

Saia da sessão do usuário trusted_advisor:

exit

Adicionando o Acesso sudo de Volta

Para fins deste laboratório, vamos adicionar o usuário de volta ao grupo sudo:

sudo usermod -aG sudo trusted_advisor

Verifique se o usuário agora está no grupo sudo novamente:

groups trusted_advisor

A saída agora deve incluir "sudo" na lista de grupos.

Resumo

Neste laboratório, você aprendeu técnicas essenciais de gerenciamento de usuários e controle de privilégios no Linux. Você adquiriu experiência prática com os seguintes conceitos e operações:

  1. Criando Usuários: Você aprendeu como criar novas contas de usuário usando o comando adduser.

  2. Concedendo Privilégios sudo: Você descobriu como dar aos usuários capacidades administrativas, adicionando-os ao grupo sudo.

  3. Restringindo o Acesso sudo: Você praticou a implementação do princípio do menor privilégio, limitando o acesso sudo de um usuário a comandos específicos usando o arquivo sudoers.

  4. Registro de Logs e Monitoramento sudo: Você explorou como as atividades sudo são registradas e a importância de monitorar esses logs para fins de segurança.

  5. Gerenciando o Acesso sudo: Você aprendeu como adicionar e remover privilégios sudo de usuários conforme necessário.

Essas habilidades são fundamentais para a administração e segurança de sistemas Linux. Ao gerenciar adequadamente os privilégios do usuário, você pode manter um sistema seguro, onde os usuários têm acesso aos recursos de que precisam sem comprometer a integridade ou segurança do sistema.