você está aqui: Home  → Arquivo de Mensagens

Criando mais um nivel de proteção para acessar a conta do root com o comando trap

Colaboração: Altemir Braz Dantas Junior

Data de Publicação: 08 de fevereiro de 2011

Vamos abrir o arquivo /root/.bashrc

  # vi /root/.bashrc
  < A NAME="note" HREF="#textnote">< SUP> no final do arquivo vamos acrecentar as linhas abaixo
  seguranca()
  {
   echo "Qual a cor do cavalo de napoleao?"
   trap seguranca 2 20
   read -s resp
   if [ "$resp" != "naoseinao" ]; then
         echo "Errou"
         logout
   fi
  }
  seguranca
  < A NAME="note" HREF="#textnote">< SUP>## fim do arquivo .bashrc

Explicando:

  1. Quando um usuario logar na conta do root e o arquivo /root/.bashrc vai ser executado.

  2. A linha seguranca vai executar a função seguranca(). Se o usuário errar a resposta é deslogado da conta da root.

    Os linuxers já devem estar pensando É só eu dar um Crtl+C ou Crtl-Z que ele sai do programa e já ganho a conta do root sem responder a pergunta.

    Por isso do nosso amigo trap. Ele possibilita pegar sinais e enviar para um comando.

    Você pode ver a numeração correspondente as sinais com o comando
      # trap -l
      
      Crtl+C = 2 =>  SIGINT
      Crtl-Z = 20 =>  SIGTSTP
    
    A linha trap seguranca 2 20 vai fazer o seguinte: se o pessoa que logou tentar sair do programa com o Crtl+C ou Crtl-Z ele vai chamar a função novamente, só conseguindo ganhar o shell se ele realmente acertar a resposta.

    Protegendo o arquivo para ninguem alem do root ver a resposta:

      # chmod 700 /root/.bashrc
    

    Para maior seguranca desative o Login do root via ssh para não alterar esse arquivo via scp.


 

 

Veja a relação completa dos artigos de Altemir Braz Dantas Junior

Opinião dos Leitores

kleber
22 Abr 2011, 12:21
Muito boa a dica, mas o sftp parou de funcionar :P
alias, como se cria uma nova sessão ssh para o sftp e não há interação o sftp não funciona pois o .bashrc dá logout em caso de resposta errada.

alguma solução para isto?
Altemir Braz Dantas Junior
14 Fev 2011, 17:21
Carlos verifiquei que isso realmente ocorria, entao melhorei o script dixando assim

seguranca()
{
echo "Qual a cor do cavalo de napoleao?"
trap 'echo "Desabilitado";resp="";echo echo "Qual a cor do cavalo de napoleao?"' 2 20
read -s resp
if [ "$resp" != "www.papaicomanda.com.br" ]; then
echo "Seu ip foi cadastrado em nosso banco de dados como tetativade acesso"
#libera os crtls depois do acerto
trap - 2 20
logout
fi
}
seguranca

Oque fiz foi, ao invez de chamar a function novamente soh imprimir a pergunta novamente e limpei a variavel resp no caso dela ter ja recebido algum caracter

[]s
Altemir Braz Dantas Junior (Jocajuni)
Bruno Carvalho
11 Fev 2011, 20:20
Muito show essa dica, parabéns!
Carlos
10 Fev 2011, 15:50
Olha quando eu dou ctrl+C a senha não funciona mais? porque?
Agnaldo - Rio Preto
09 Fev 2011, 08:11
Dica boa sim, valendo mais uma opção para adm...

toda segurança é bem vinda
Claudio Junior
08 Fev 2011, 09:10
como dica para um novo procedimento para segurança, não achei legal, em vista que adiciona uma nova "senha" a root, sendo que o melhor é ter senhas fortes e a root não deve estar disponível para login por qualquer usuário, ou pelo ambiente de rede. Agora, olhando melhor a dica, as informações sobre o comando trap são muito boas. Poucas pessoas conhecem este comando e simplesmente conhecer a forma como tratar sinais através do shell é muito interessante. Por este motivo achamos esta dica mais do que interessante.
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script