Red Hat Enterprise Linux 3: Guia de Segurança | ||
---|---|---|
Anterior | Capítulo 4. Segurança da Estação de Trabalho | Próxima |
Ao adminsitrar um computador caseiro, o usuário deve executar algumas tarefas como usuário root ou adquirindo privilégios efetivos de root através de um programa setuid, como o sudo ou o su. Um programa setuid opera com o ID do usuário (UID) do proprietário do programa ao invés do usuário operando o programa. Tais programas são caracterizados por um s em caixa baixa na seção do proprietário de uma lista longa, conforme o exemplo a seguir:
-rwsr-xr-x 1 root root 47324 May 1 08:09 /bin/su |
Para os adminsitradores de sistema de uma empresa, no entanto, as escolhas devem ser feitas de acordo com o nível de acesso adminsitrativo que os usuários, dentro da organização, devem ter em suas máquinas. Através de um módulo PAM chamado pam_console.so, algumas atividades reservadas somente ao usuário root, como reinicializar e montar mídia removível, são permitidas ao primeiro usuário que se autenticar no console físico (veja o capítulo entitulado Módulos Plugáveis de Autenticação (PAM) do Guia de Referência do Red Hat Enterprise Linux para saber mais sobre o módulo pam_console.so). Entretanto, outras tarefas importantes da administração de sistemas, como alterar configurações da rede ou do mouse, ou montar dispositivos de rede, são impossíveis sem o acesso administrativo. Consequentemente, os administradores devem decidir o grau de acesso administrativo que os ususários de sua rede devem ter.
Se os usuários de uma empresa são um grupo confiável e experiente em computadores, permití-los acesso root talvez não seja má idéia. Permitir acesso root a usuários significa que questões menores, como adicionar serviços ou configurar interfaces de rede, podem ser executadas pelos usuários individuais, deixando os adminsitradores de sistema livres para lidar com a segurança da rede e outras questões importantes.
Por outro lado, permitir acesso root a usuários individuais pode acarretar nas questões a seguir (para nomear apenas algumas):
Má Configuração da Máquina — Usuários com acesso root podem mal-configurar suas máquinas e pedir assistência ou pior, abrir buracos na segurança sem saber.
Rodar Serviços Inseguros — Usuários com acesso root podem rodar serviços inseguros, como FTP ou Telnet, em suas máquinas, potencialmente arriscando nomes de usuários e senhas conforme trafegam sem criptografia pela rede.
Anexando Arquivos em Emails como Root — Apesar de raros, existem vírus de e-mail que afetam o Linux. A única hora em que eles representam uma ameaça, no entanto, é quando são executados pelo usuário root.
Se o adminsitrador não estiver confortável em permitir que usuários se autentiquem como root por estas ou por outras razões, a senha de root deve ser guardada secretamente, e o acesso ao nível de execução um ou ao modo de usuário simples deve ser impedido através da proteção de senha do gestor de início (veja a Seção 4.2.2 para mais informações sobre este tópico).
Tabela 4-1 mostra as maneiras de um administrador garantir que autenticações root estão impedidas:
Método | Descrição | Efeitos | Não Afeta | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Alterar a shell root. | Edite o arquivo /etc/passwd e altere a shell de /bin/bash para /sbin/nologin. |
|
| |||||||||||||||
Desativar acesso root através de qualquer dispositivo de console (tty). | Um arquivo /etc/securetty vazio impede a autenticação de root a quaisquer dispositivos atachados ao computador. |
|
| |||||||||||||||
Desativar autenticações root SSH. | Edite o arquivo /etc/ssh/sshd_config e defina o parâmetro PermitRootLogin para no. |
|
| |||||||||||||||
Utilizar o PAM para limitar o acesso root aos serviços. | Edite o arquivo para o serviço em questão no diretório /etc/pam.d/. Assegure que pam_listfile.so é necessário para a autenticação. Veja a Seção 4.4.2.4 para detalhes. |
|
|
Tabela 4-1. Métodos para Desativar a Conta Root
Para impedir os usuários de se autenticar diretamente como root, o administrador de sistema pode configurar a shell da conta root para /sbin/nologin no arquivo /etc/passwd. Isto impede o acesso à conta root através de comandos que requerem uma shell, como os comandos su e ssh.
![]() | Importante |
---|---|
Programas que não requerem acesso à shell, como clientes de email ou o comando sudo, ainda podem acessar a conta root. |
Para limitar acesso à conta root, administradores podem desativar autenticações root no console editando o arquivo /etc/securetty. Este arquivo lista todos os dispositivos nos quais o usuário root pode se autenticar. Se o arquivo não existir, o usuário root pode se autenticar através de qualquer dispositivo de comunicação no sistema, através do console ou de uma interface de rede bruta. Isto é perigoso pois um usuário pode acessar o Telnet em sua máquina como root, enviando sua senha em formato texto através da rede. Por default, o arquivo /etc/securetty do Red Hat Enterprise Linux permite somente ao usuário root se autenticar no console fisicamente anexo à máquina. Para impedir que root se logue, remova o conteúdo deste arquivo digitando o seguinte comando:
echo > /etc/securetty |
![]() | Atenção |
---|---|
Um arquivo /etc/securetty em branco não impede o usuário root de se autenticar remotamente usando o conjunto de ferramentas OpenSSH porque o console não é aberto antes da autenticação. |
Para impedir autenticações do root através do protocolo SSH, edite o arquivo de configuração do daemon SSH (/etc/ssh/sshd_config). Altere a linha que apresenta:
# PermitRootLogin yes |
para o seguinte:
PermitRootLogin no |
O PAM, através do módulo /lib/security/pam_listfile.so, permite grande flexibilidade em negar contas específicas. Isto permite que o administrador aponte o módulo para uma lista de usuários que não são permitidos de autenticar. O exemplo abaixo mostra como o módulo é usado para o servidor FTP vsftpd no arquivo de configuração do PAM /etc/pam.d/vsftpd (o caracter \ no final da primeira linha no exemplo a seguir não é necessário se a diretiva estiver em apenas uma linha):
auth required /lib/security/pam_listfile.so item=user \ sense=deny file=/etc/vsftpd.ftpusers onerr=succeed |
Isto diz ao PAM para consultar o arquivo /etc/vsftpd.ftpusers e negar a qualquer usuário listado acessar o serviço. O adminsitrador é livre para alterar o nome deste arquivo e pode guardar listas separadas para cada serviço ou usar uma lista geral para negar acesso a múltiplos serviços.
Se o adminsitrador quer negar acesso a múltiplos serviços, uma linha similar pode ser adicionada aos serviços de configuração do PAM, como /etc/pam.d/pop e /etc/pam.d/imap para clientes de mail ou /etc/pam.d/ssh para clientes SSH.
Para mais informações sobre o PAM, veja o capítulo Módulos Plugáveis de Autenticação (PAM) no Guia de Referência do Red Hat Enterprise Linux.
Ao invés de negar completamante acesso ao usuário root, o administrador pode permitir acesso apenas através de programas setuid, como o su ou o sudo.
Ao digitar o comando su, é pedida a senha root ao usuário e, após a autenticação, é dada uma janela de comandos.
Uma vez autenticado através do comando su, o usuário é o usuário root e tem acesso administrativo absoluto ao sistema. Além disso, uma vez que o usuário obteve aceeso root, é possível que ele use o comando su para alterar qualquer outro usuário no sistema sem precisar inserir uma senha.
Como este programa é tão poderoso, administradores dentro de uma empresa talvez queiram limitar quem tem acesso ao comando.
Uma das maneiras mais simples de fazer isso é adicionar usuários ao grupo administrativo especial chamado wheel. Para fazer isso, digite o seguinte comando como root:
usermod -G wheel <username> |
No comando anterior, substitua <username> pelo nome do usuário sendo adicionado ao grupo wheel.
Para usar a Administrador de Usuários para este propósito, vá ao Botão do Menu Principal (no Painel) => Configurações do Sistema => Grupos & Usuários ou digite o comando redhat-config-users em uma janela de comandos. Selecione a aba Users, selecione o usuário e clique em Propriedades a partir do menu do botão (ou selecione Arquivo => Propriedades a partir do menu suspenso).
Então selecione a aba Grupos e clique no grupo wheel, conforme mostra Figura 4-2.
Em seguida, abra o arquivo de configuração do PAM para su (/etc/pam.d/su) em um editor de texto e remova o comentário
auth required /lib/security/pam_wheel.so use_uid |
Fazer isso permitirá que somente membros do grupo administrativo wheel usem o programa.
![]() | Nota |
---|---|
O usuário root é parte do grupo wheel por default. |
O comando sudo oferece uma outra maneira de dar acesso administrativo a usuários. Quando um usuário confiável precede um comando administrativo com sudo, ele precisa inserir sua senha. Então, uma vez autenticado e assumindo que o comando é permitido, o comando administrativo é executado como se fosse pelo usuário root.
O formato básico do comando sudo é o seguinte:
sudo <command> |
No exemplo acima, <command> será substituído por um comando normalmente reservado para o usuário root, como o comando mount.
![]() | Importante |
---|---|
Usuários do comando sudo devem tomar cuidado extra para fazer logout antes de deixarem suas máquinas, já que eles podem usar o comando novamente, sem precisar indicar a senha, por um período de cinco minutos. Esta configuração pode ser alterada através do arquivo de configuração /etc/sudoers. |
O comando sudo permite um grau de flexibilidade maior. Por exemplo: somente os usuários listados no arquivo de configuração /etc/sudoers são permitidos a usar o comando sudo e o comando é executado na shell do usuário, não numa shell root. Isto significa que a shell root pode ser completamente impossibilitada, conforme mostrado em Seção 4.4.2.1.
O comando sudo também oferece um registro compreensivo da sequência de eventos. Cada autenticação bem-sucedida é registrada no arquivo /var/log/messages e o comando submetido junto ao nome do usuário é registrado no arquivo /var/log/secure.
Outra vantagem do comando sudo é que um administrador pode permitir a diferentes usuários acesso a comandos específicos baseado em suas necessidades.
Adminsitradores que queiram editar o arquivo de configuração do sudo, o /etc/sudoers, devem usar o comando visudo.
Para dar privilégios administrativos totais a alguém, digite visudo e adicione uma linha similar à seguinte na seção de especificação de privilégios do usuário:
juan ALL=(ALL) ALL |
Este exemplo estabelece que o usuário juan pode usar o sudo em qualquer máquina e executar qualquer comando.
O exemplo abaixo ilustra a granularidade possível ao configurar o sudo:
%users localhost=/sbin/shutdown -h now |
Este exemplo estabelece que qualquer usuário pode submeter o comando /sbin/shutdown -h now desde que o faça pelo console.
A página man de sudoers tem uma lista detalhada das opções para este arquivo.