4.4. Controles Administrativos

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.

4.4.1. Permitindo Acesso Root

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):

4.4.2. Impedindo Acesso 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étodoDescriçãoEfeitosNão Afeta
Alterar a shell root.Edite o arquivo /etc/passwd e altere a shell de /bin/bash para /sbin/nologin.

Impede acesso à shell root e registra a tentativa.
Os seguintes programas são impedidos de acessar a conta root:
· login
· gdm
· kdm
· xdm
· su
· ssh
· scp
· sftp

Programas que não requerem uma shell, como clientes FTP, clientes de mail e muitos programas setuid.
Os seguintes programas não são impedidos de acessar a conta root:
· sudo
· clientes FTP
· clientes de Email

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.

Impede o acesso à conta root através do console ou rede. Os seguintes programas são impedidos de acessar a conta root:
· login
· gdm
· kdm
· xdm
· Outros serviços de rede que abrem uma tty

Programas que não se logam como root, mas executam tarefas administrativas através de mecanismos setuid ou outros.
Os seguintes programas não são impedidops de acessar a conta root:
· su
· sudo
· ssh
· scp
· sftp

Desativar autenticações root SSH.Edite o arquivo /etc/ssh/sshd_config e defina o parâmetro PermitRootLogin para no.

Impede o acesso root através do conjunto de ferramentas OpenSSH. Os programas a seguir são impedidos de acessar a conta root:
· ssh
· scp
· sftp

Isto impede somente o acesso root ao conjunto de ferramentas do OpenSSH.

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.

Impede o acesso root para serviços de rede notificados pelo PAM.
Os seguintes serviços são impedidos de acessar a conta root:
· clientes FTP
· clientes de Email
· login
· gdm
· kdm
· xdm
· ssh
· scp
· sftp
· Quaisquer serviços notificados pelo PAM

Programas e serviços que não são notificados pelo PAM.

Tabela 4-1. Métodos para Desativar a Conta Root

4.4.2.1. Desativar a Shell 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.

ImportanteImportante
 

Programas que não requerem acesso à shell, como clientes de email ou o comando sudo, ainda podem acessar a conta root.

4.4.2.2. Impossibilitando Autenticações 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çãoAtençã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.

4.4.2.3. Impossibilitando Autenticações Root SSH

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

4.4.2.4. Impossibilitar Root de Usar PAM

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.

4.4.3. Limitar Acesso Root

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.

4.4.3.1. O Comando su

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.

Figura 4-2. Aba Grupos

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 [#] da seguinte linha:

auth  required /lib/security/pam_wheel.so use_uid

Fazer isso permitirá que somente membros do grupo administrativo wheel usem o programa.

NotaNota
 

O usuário root é parte do grupo wheel por default.

4.4.3.2. O Comando sudo

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.

ImportanteImportante
 

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.