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 aplicahost: 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 senhacommands: 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:
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.
Use Comandos Específicos: Em vez de conceder acesso sudo completo, especifique exatamente quais comandos um usuário pode executar.
Defina Requisitos de Senha: Para operações sensíveis, certifique-se de que os usuários devem inserir sua senha ao usar sudo.
Auditoria Regular: Revise periodicamente os logs sudo e o arquivo sudoers para garantir a configuração adequada.
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:
Criando Usuários: Você aprendeu como criar novas contas de usuário usando o comando
adduser.Concedendo Privilégios sudo: Você descobriu como dar aos usuários capacidades administrativas, adicionando-os ao grupo sudo.
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.
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.
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.



