Receber notificação por e-mail quando alguém acessar como root por SSH

Aqueles de nós que administram servidores devem manter o controle mais estrito possível sobre tudo o que acontece no servidor, uma das coisas que muitas vezes precisamos saber é quando um usuário se conecta via SSH (root incluído), para isso com um pacote e uma linha alcançaria nossas notificações por email.

Você pode imaginar que toda vez que alguém se conecta via SSH com root, recebe um e-mail que diz?

Em outras palavras, eles receberiam um e-mail que diria algo assim:

[miserver] Alerta: Acesso ao Terminal Root em: 2014/01/21 (200.55.51.151)

Isso é:

[$ NOMBRE_VPS] Alerta: Acesso ao Terminal Root em: $ DATE ($ IP_DE_WHO_S_CONNECT)

Para conseguir isso, eles devem primeiro instalar um pacote chamado e-mail x.

Supondo que seu servidor use Debian ou alguma distro baseada nele (eu recomendo apenas Debian, não Ubuntu ou similar para servidores), seria:

apt-get install mailx

Nota: O comando anterior é executado como root diretamente no servidor, pois é um VPS, o sudo não deve ser usado a menos que seja estritamente necessário.

Então, devemos colocar a seguinte linha na raiz .bashrc:

echo 'ALERTA - Acceso a Terminal de Root en:' `hostname` 'el:' `date +'%Y/%m/%d'` `who | grep -v localhost` | mail -s "[ `hostname` ] Alerta: Acceso a Terminal de Root el: `date +'%Y/%m/%d'` `who | grep -v localhost | awk {'print $5'}`" mi@email.com

Para editar /root/.bashrc, use algum editor de terminal como o nano:

nano /root/.bashrc

Lembre-se de que você deve especificar seu e-mail no final da linha, simplesmente altere my@email.com para o e-mail que você deseja que as notificações cheguem

Depois de colocar (em qualquer lugar do arquivo) a linha que coloquei antes, salvamos o arquivo com Ctrl + O (Ou urso) e deixamos com Ctrl + X

Pronto, toda vez que alguém entrar no terminal raiz, o arquivo .bashrc será carregado, o que é sempre feito por padrão, e quando o arquivo for carregado, a linha que envia o e-mail será executada, deixando algo em nossa caixa de entrada . como:

email-notificação-ssh

A explicação da linha é algo muito simples:

  1. Através do mailx envio o e-mail, com o parâmetro -s «_____» especifico o assunto, e passo com o eco «____» e um pipe o conteúdo do corpo.
  2. `hostname` com isso eu obtenho o nome do host ou hostname, ou seja, o nome do VPS.
  3. `data + '% Y /% m /% d'` o comando de data me mostra a data do sistema, o resto das letras simplesmente indicam como eu quero que a data seja exibida.
  4. quem | grep -v localhost` Se você executar who em seu computador ele irá mostrar a você os usuários ativos, com um grep -v localhost eu garanto que ele mostra apenas aqueles que se conectaram de um local diferente ao próprio servidor, ou seja, basicamente SSH
  5. `quem | grep -v localhost | awk {'print $ 5'} `O que diferencia essa linha da anterior é o awk, passando por awk e a impressão da 5ª coluna é que eu obtenho o IP de onde eles se conectaram ao SSH

De qualquer forma, a linha é um tanto longa e pode parecer complexa de entender, porém existem muitos personagens estranhos mas tudo é bem simples 

Como sempre, espero que você tenha achado interessante.

lembranças


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

      Manuelperez dito

    Uma pergunta, com qual servidor de e-mail é enviado? Você tem que configurar uma conta de envio?

         KZKG ^ Gaara dito

      Você deve ter o pacote mailx instalado 😉
      Feito isso, ele é enviado sem a necessidade de configurar mais nada no servidor.

           Manuelperez dito

        Vou tentar, mas acho que meu e-mail não aceitará receber e-mails de uma fonte não autenticada ...

             yomismo dito

          Eu uso o exim4 com uma conta 'gmail' para enviar e-mails e funciona bem
          - Exceto para os cabeçalhos FROM TO e REPLY TO, que o gmail coloca o que quer, mas eles chegam bem -.
          Para configurar o gmail com exim4, use esta informação:
          http://dajul.com/2009/06/08/configurar-exim4-con-gmail-o-google-apps/

               KZKG ^ Gaara dito

            Interessante, muito obrigado 🙂

           Israel dito

        Amigo @ KZKG ^ Gaara eu instalei o pacote e fiz o manual passo a passo, a única coisa que quando eu envio eu tenho o correio local, nunca saí, você pode me ajudar com isso ?? ... bem Eu realmente preciso ter esse tema configurado em meus servidores, salu2s.

             KZKG ^ Gaara dito

          Pelo seu IP, presumo que você seja do meu país 😉
          O "problema" com nossas redes raramente tem IPs reais como tal, ou seja, estamos sub-redes em uma rede proxy de ministério, ou algo parecido. Em outras palavras, possivelmente o problema é que o servidor web sozinho não consegue obter um e-mail da rede ou algo parecido, talvez você precise disso: https://blog.desdelinux.net/enviar-emails-por-consola-con-sendmail/

      truko22 dito

    interessante e se for colocado em «/ etc / profile» dará o aviso quando algum usuário conectar?

         KZKG ^ Gaara dito

      Seria preciso tentar, não me ocorreu 😀

      Nabucodonosor dito

    Chame-me de paranóico, mas coloque um script que um estranho me sugere em uma parte importante do meu sistema onde mantenho senhas de contas, dados como certidões de nascimento, documentos pessoais e documentos de trabalho (expondo assim meus clientes também) etc etc, e que implica também expor minha conta de email (!!!) ... bom, é algo perigoso, eu acho.

         yomismo dito

      O perigo do roteiro apresentado é inversamente proporcional ao seu entendimento.

      E por paranóia, pare de instalar repositórios NÃO GRATUITOS, pois é possível que alguém introduza um código malicioso que rouba seu carrinho de compras.

         KZKG ^ Gaara dito

      Expliquei o que cada parte da linha de comando faz, no entanto, se você acha que estou enganando alguém, o script ou os comandos estão ali na postagem, não tem nenhum código oculto ou secreto, fique à vontade para revisar os comandos da maneira mais completa como você quer que seja executado, se você encontrar algo suspeito, comente aqui mesmo 😉

      browsons dito

    Agradece.

      este nome é falso dito

    Muito interessante.

    Talvez os arquivos ~ / .bashrc ou / etc / profile não sejam os mais adequados no caso de acessarmos por SSH com um usuário normal e executarmos um comando específico como root. Ou se exportarmos o X11 de nosso VPS remoto, cada vez que abrirmos um xterm teremos um novo e-mail.

    Para o hack do mailx, acho que devemos usar os arquivos ~ / .ssh / rc (individual para cada usuário) ou / etc / ssh / sshrc

    PostData: acesso _NEVER_ por SSH como usuário root. Acesso _NEVER_ por SSH usando senha. _ALWAYS_ use chaves privadas.

         truko22 dito

      interessante → ~ / .ssh / rc Vou encontrar mais informações sobre isso, obrigado 😀

      chinoloco dito

    Olá, muito bom tutor!
    Você poderia fazer um para entrar via ssh de qualquer ip, fora da rede local?
    obrigado!

      vidagnu dito

    Este script funciona se o servidor de e-mail para o qual enviamos não verifica se o e-mail de origem vem de um servidor autêntico, neste caso seria de root @ localhost, a maioria dos servidores o considerará spam.

    O que eu faço é configurar o sendmail como um MTA, e então usar o e-mail que vem em todas as distros para enviar e-mails.

    http://vidagnu.blogspot.com/2009/02/configurar-sendmail-como-cliente-de.html

      Alga dito

    Obrigado pela dica que vou receber para testá-lo:]

      kuk dito

    agradecimentos muito úteis

      Israel dito

    Um milhão de obrigados pelo conselho amigo @ KZKG ^ Gaara, vou dar uma olhada no sendmail, espero resolver, salu2s.

      Joskar dito

    Ótimo! Obrigado pela contribuição!

      Juan C dito

    E o que acontece, se por exemplo o script está enviando muitos e-mails, por exemplo alguém entra no terminal raiz às 8h e enviou cerca de 00 e-mails, então alguém entrou em outro horário e mais de 40 e-mails foram enviados e então alguém vem em outro horário e mais de 23 emails foram enviados, o que poderia ser?