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
#!/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
echo ""
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