segunda-feira, 1 de março de 2010

Usuário especial para desligar servidores Linux

Quem nunca ouviu do cliente ou patrão: "deixa a senha de root anotada ali para que qualquer um possa desligar o equipamento quando precisar".

Trabalho de forma autônoma na implementação de servidores em pequenas e grandes empresas. A grande maioria não tem conhecimento de utilização de Linux, muito menos sobre o poder da "senha de root". Claro que é uma questão de conscientização e parte de um processo de implementação da política de segurança, mas a maioria das microempresas não pensam e nem querem pensar desta forma.

O fato é que em algumas destas empresas é solicitado que exista uma forma de que alguém possa desligar o equipamento sem maiores complicações, e é claro sem a utilização de senha de administrador. A principal situação para isso ocorrer é em dias de chuva e que o administrador não está no local, seja por viagem ou manutenção em qualquer outro local físico.

Os procedimentos a seguir são indicados nestas situações onde usuários comuns necessitem desligar o equipamento, seja por motivo de dias chuvosos ou por outro motivo qualquer que a empresa ou o administrador de rede julgue correto.

Lembro aqui que este tipo de permissão deve ser bem especificada na política de segurança da empresa, evitando a possibilidade de falhas. Os usuários que receberem permissão para esta funcionalidade, devem assinar um termo de responsabilidade de senha.

PROCEDIMENTOS:

1. Criação do usuário para desligar

Aqui demonstro como exemplo o usuário "desliga" com a senha "123456", que é claro deve ser alterada. (Pode-se utilizar o comando useradd afim de definir diretamente o caminho do bash e então pular a etapa 5 abaixo)
# adduser desliga

2. Criação do script para desligar a máquina

Este script tem por objetivo única e exclusivamente desligar a máquina. Ele pode ser salvo dentro do home do novo usuário ou outro local que o administrador julgar viável. Assim, no meu exemplo em /home/desliga/desligando.sh tenho o script:

#!/bin/bash
echo ""
echo "===> ATENCAO: DESLIGANDO O COMPUTADOR <===="
echo "Em caso de problemas contate o administrador: (xx)xxxx-xxxx"
echo ""
/sbin/shutdown -t1 -a -h now


3. Definição das permissões e grupo do script

O script deve ter permissão apenas de execução para usuários, evitando brechas na segurança, pois um potencial invasor pode aproveitar-se da permissão de escrita por parte deste usuário junto ao script, incrementando-o com comandos estratégicos para invasão ou coleta de informações. Assim, primeiramente altere o grupo do usuário para desliga:
# chown root:desliga /home/desliga/desligando.sh

Em seguida atribua a permissão 750 para que apenas usuário root e grupo desliga consigam executar o script, além de só o root poder alterá-lo:
# chmod 750 /home/desliga/desligando.sh

4. Definição das permissões e grupo do shutdown

É necessário ser superusuário (id 0) para executar o comando shutdown. Desta forma precisaremos do auxílio da técnica de suid bit, que a meu ver pode ser um ponto negativo na segurança. Porém com o auxilio de ferramentas de monitoramento, o uso de suid bit é tolerável.

A ativação do suid bit permitirá a execução do shutdown por qualquer usuário como se fosse root, assim como é feito o comando passwd que nativamente tem o suid bit ativo.

Primeiro é necessário alterar o grupo do comando shutdown para o grupo desliga. Faz-se isso através do comando:
# chgrp desliga /sbin/shutdown

Em seguida, ativa-se o suid bit:
# chmod 4754 /sbin/shutdown

Caso queira uma garantia de que os comandos funcionaram, observe se o arquivo ficará da seguinte forma:
# ls /sbin/shutdown -l
-rwsr-xr-- 1 root desliga 18572 2006-05-23 07:39 /sbin/shutdown

5. Facilitando a vida do usuário

Até este momento já resolvemos nosso problema, pois o usuário poderá logar-se no terminal ou remotamente e executando o script, desligar a máquina. Porém, pode-se facilitar as coisas ainda mais.

Edite o arquivo /etc/passwd e altere o caminho do comando de shell do usuário para que o mesmo seja o script. Desta forma basta que o usuário digite o login e senha para que o script entre em funcionamento, sem liberar shell para o usuário, fechando assim a segurança no que tange a criação de usuários desnecessários e consequentemente possíveis de se utilizar para invasão.

Linha alterada no /etc/passwd:

Antes:
desliga:x:1001:1002:Usuário para desligar,,,:/home/desliga:/bin/bash

Depois:

desliga:x:1001:1002:Usuário para desligar,,,:/home/desliga:/home/desliga/desligando.sh

Obs.: Tentei informar como bash diretamente o comando shutdown, mas o sistema não reconhece as opções para execução devido ao espaço entre palavras. Isso pode ser tratado futuramente.



Artigo publicado também no Viva o Linux (http://www.vivaolinux.com.br/artigo/Usuario-especial-para-desligar-servidores-Linux

Nenhum comentário:

Postar um comentário