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
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
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:
A explicação da linha é algo muito simples:
- 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.
- `hostname` com isso eu obtenho o nome do host ou hostname, ou seja, o nome do VPS.
- `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.
- 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
- `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
Uma pergunta, com qual servidor de e-mail é enviado? Você tem que configurar uma conta de envio?
Você deve ter o pacote mailx instalado 😉
Feito isso, ele é enviado sem a necessidade de configurar mais nada no servidor.
Vou tentar, mas acho que meu e-mail não aceitará receber e-mails de uma fonte não autenticada ...
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/
Interessante, muito obrigado 🙂
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.
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/
interessante e se for colocado em «/ etc / profile» dará o aviso quando algum usuário conectar?
Seria preciso tentar, não me ocorreu 😀
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.
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.
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 😉
Agradece.
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.
interessante → ~ / .ssh / rc Vou encontrar mais informações sobre isso, obrigado 😀
Olá, muito bom tutor!
Você poderia fazer um para entrar via ssh de qualquer ip, fora da rede local?
obrigado!
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
Obrigado pela dica que vou receber para testá-lo:]
agradecimentos muito úteis
Um milhão de obrigados pelo conselho amigo @ KZKG ^ Gaara, vou dar uma olhada no sendmail, espero resolver, salu2s.
Ótimo! Obrigado pela contribuição!
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?