4.4. Controles Administrativos

Ao administrar 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 administradores de sistema de uma empresa, no entanto, as escolhas devem ser feitas de acordo com o nível de acesso administrativo 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 intitulado 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 os privilégios administrativos. Consequentemente, os administradores devem decidir o grau de acesso que os usuários de sua rede devem receber.

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 um problema. 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 administradores de sistema livres para lidar com a segurança da rede e outras questões mais importantes.

Por outro lado, permitir acesso root a usuários individuais pode acarretar nas questões a seguir:

4.4.2. Impedindo Acesso Root

Se o administrador 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 da senha do gestor de início (veja a Seção 4.2.2 para mais informações sobre este tópico).

A 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 impedidos 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 seja necessário para a autenticação.[a]

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.

Notas:
a. Consulte a Seção 4.4.2.4 para mais detalhes.

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, os 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, seja 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 conectado à máquina. Para impedir que root se autentique, 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 administrador é 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 administrador 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 o Administrador de Usuários para este propósito, clique no Botão do Menu Principal (no Painel) => Configurações do Sistema => Grupos & Usuários ou digite o comando redhat-config-users numa janela de comandos. Selecione a aba Usuários, selecione o usuário da lista 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/$ISA/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 própria 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 é possível 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 mostramos na Seção 4.4.2.1.

O comando sudo também oferece um registro detalhado 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.

Administradores 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.