Usuário especial para desligar servidores Linux

Procedimentos indicados em 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.

[ Hits: 24.873 ]

Por: Dorival Junior em 30/11/2008


Procedimentos



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

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

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

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

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.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Procedimentos
Outros artigos deste autor

Revisão atualizada de instalação do Iptables com Layer7

Autoração de DVD - Usando somente Software Livre

Certificado A3 (Cartão) no eCAC (Receita Federal) no Ubuntu 19.10 e Similares

Leitura recomendada

Certificados e OpenSSL - A Sopa de Letras

Travando qualquer máquina Linux

Nagios - Automatizando Auditorias de Rootkit

Segurança em Software de Código Aberto

(IN)segurança Digital

  
Comentários
[1] Comentário enviado por uberalles em 30/11/2008 - 10:54h

que excelente dica, hein, meu caro!!
nunca pensei nessa possibilidade. muito obrigado.

[2] Comentário enviado por matux em 30/11/2008 - 11:38h

Ótima dica!
Parabéns e obrigado!

[3] Comentário enviado por walber em 30/11/2008 - 11:57h

Legal a dica, mais prefiro cadastra o usuario /etc/shutdown.allow, assim ele poderá desligar o pc.

[4] Comentário enviado por tonhaosemacento em 01/12/2008 - 10:41h

Ao invés de alterar o caminho do shell não seria melhor incluir o conteúdo do script no .bash_profile do usuário?

[5] Comentário enviado por dorivaljunior em 01/12/2008 - 16:12h

Olá colega, acredito que funcionaria sim, porém a meu ver não seria a melhor opção, pois você estaria habilitando um shell de comando para o usuário. Essa situação pode ser aproveitada por um potencial invasor, o que não pode ocorrer quando o bash é o próprio script para desligar!

Trabalho adotando a lei do menor privilégio, ou seja, permitir apenas o essencial ao funcionamento do sistema.

[6] Comentário enviado por edeunix em 02/12/2008 - 01:59h

Legal a dica. É bom vermos que há sempre várias dicas e soluções para um mesmo problema, isso mostra como nosso ambiente é flexível.

Fica aqui o procedimento padrão que utilizo.

Em distribuições com o arquivo /etc/inittab é só alterar a linha de ctrl+alt+del pelo comando

ca::ctrlaltdel:/sbin/shutdown -h now

Normalmente esta está com o comando de restart

ca::ctrlaltdel:/sbin/shutdown -t1 -r now

No Ubuntu é só modificar o arquivo, já que não temos a utilização do arquivo inittab nesta distribuição

/etc/event.d/control-alt-delete

Desta forma a pessoa, tendo acesso físico ao servidor em questão, pode desliga-lo da maneira mais usual do Windows, apertando o ctrl alt del.

[]s

[7] Comentário enviado por hugobcar em 02/12/2008 - 14:49h

Comecei usando dessa forma como o Artigo, há muiiito tempo atrás.

Depois, de algum tempo só uso essa forma do edeunix mesmo... Bem mais simples.


[8] Comentário enviado por dorivaljunior em 03/12/2008 - 08:03h

Realmente a dica do edeunix é muuuito mais simples e também já utilizei-a! Porém ambas são aplicaveis em situações diferentes, veja:

solução dada por edeunix: eu utilizaria-a em ambiente onde QUALQUER pessoa da empresa possa desligar a máquina.

solução dada por mim: eu utilizaria-a em ambiente onde ALGUMAS pessoas em especial possam desligar a máquina, que é o caso de alguns clientes nos quais instalei servidores. Claro que desabilitei totalmente o ctrl+alt+del para evitar até o reinicio por qualquer pessoa.

[9] Comentário enviado por brunosolar em 03/12/2008 - 10:36h

Simplificando...

crie um script "desligar" dentro de /bin por exemplo

####script desligar######

#!/bin/bash
shutdown -h now

####fim do script#####

de permissao de executar no script

chmod +x /bin/desligar

crie um link

ln -s /sbin/shutdown /bin/

de permissao

chmod 4777 /bin/shutdown

Pronto qualquer usuario que digitar desligar (ou o nome que deu ao script) ira fazer com que o micro desligue

[10] Comentário enviado por asalafia em 17/02/2009 - 14:11h

Com relação ao ctrl-alt-del.
Funciona perfeitamente numa máquina somente com Linux, certo ?
Mas e num host virtual ?
Digamos uma máquina com host Windows e algumas VMs linux, Solaris e outros não seria uma boa idéia apertar ctrl-alt-del. Pelo menos não vejo isto como bom.
O mesmo para um Host linux e guest windows ou outra S.O.
Numa solução com VirtualBox, VMWare ou equivalente, o usuário especial para desligar seria uma solução mais segura.

Concordam ??

Uma idéia que me ocorre agora : Seria possível aplicar esta solução de usuário especial para um grupo de máquinas virtuais, onde um usuário pode desligar todas as VMs ?? OU somente algumas VMs ??
Que pensam disto ?
Abraços
Alexandre


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts