Rebre notificació per email quan algú accedeixi com a root per SSH

Els que administrem servidors hem de portar un control el més estricte possible sobre tot el que succeeix al servidor, una de les coses que moltes vegades necessitem saber és quan es connecta un usuari per SSH (root inclòs), per a això amb un paquet i una línia ens arribaria al nostre email notificacions.

S'imaginen que cada vegada que algú es connecti per SSH amb root els arribi un correu electrònic que digui?

O sigui, rebrien un correu electrònic que els diria alguna cosa com això:

[Miserver] Alerta: Accés a Terminal de Root el: 2014/01/21 (200.55.51.151)

O sigui:

[$ NOMBRE_VPS] Alerta: Accés a Terminal de Root el: $ DATA ($ IP_DE_QUIEN_SE_CONECTO)

Per aconseguir això primer d'instal·lar un paquet anomenat mailx.

Suposant que el servidor faci servir Debian o alguna distro basada en ell (recomano només Debian, no Ubuntu ni similars per a servidors) seria:

apt-get install mailx

Nota: L'anterior comanda és executat com a root directament al servidor, com és un VPS no s'ha d'usar sudo de no ser estrictament necessari.

Després hem de posar al .bashrc de root la següent línia:

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

Per editar /root/.bashrc facin servir algun editor en terminal com nano:

nano /root/.bashrc

Recordin que han d'especificar a la fi de la línia el seu correu electrònic, simplement canviïn mi@email.com pel email a què volen arribin les notificacions

Després de posar (en qualsevol lloc de l'arxiu) la línia que els vaig posar abans, vam salvar l'arxiu amb Ctrl + O (O d'ós) i vam sortir de el mateix amb Ctrl + X

A punt, cada vegada que algú entri a la terminal de root es carregarà l'arxiu .bashrc, que és una cosa que es fa per default sempre, i a l'carregar-se el fitxer s'executarà la línia que envia el correu electrònic, quedant-nos en la nostra safata d'entrada una mica com:

email-notificacion-ssh

L'explicació de la línia és una cosa realment simple:

  1. Mitjançant mailx enviament el correu, amb el paràmetre -s «_____» específic l'assumpte, i li pas amb trobo «____» i una canonada el contingut de l'body.
  2. `Hostname` amb això trec el hostname o nom del sistema principal, és a dir, el nom de l'VPS.
  3. `Date + '% I /% m /% d'` la comanda date em mostra la data de sistema, la resta de les lletres simplement indica com desitjo que es em mostri la data.
  4. who | grep -v localhost` Si s'executen who en el seu ordinador els mostrarà els usuaris actius, amb un grep -v localhost m'asseguro que només mostri els que s'han connectat des d'una ubicació diferent a el servidor en si, és a dir, SSH bàsicament
  5. `Who | grep -v localhost | awk { 'print $ 5'} `El que diferencia aquesta línia de l'anterior és el awk, mitjançant el awk i la impressió de la 5a columna és que trec la IP des d'on es van connectar a l'SSH

En fi, la línia és una cosa extensa i pot semblar complexa d'entendre, no obstant això són molts caràcters rars però tot és bastant simple 🙂

Com sempre, espero els hagi resultat d'interès.

Salutacions


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   manuelperezf va dir

    Un dubte, amb que servidor de correu s'envia? cal configurar algun compte d'enviament?

    1.    KZKG ^ Gaara va dir

      Has de tenir instal·lat el paquet mailx 😉
      Un cop fet això, s'envia sense necessitat de configurar una mica més al servidor.

      1.    manuelperezf va dir

        Ho prova, però crec que el meu correu no va acceptar rebre electrònic d'una font sense autentificar ...

        1.    yomismo va dir

          Jo utilitzo exim4 amb un compte de 'gmail' per enviament de correus i funciona bé
          - excepte les capçaleres de l'FROM TO i REPLY TO, que gmail posa el que vol però arriben bé -.
          Per configurar gmail amb exim4 faci servir aquesta info:
          http://dajul.com/2009/06/08/configurar-exim4-con-gmail-o-google-apps/

          1.    KZKG ^ Gaara va dir

            Interessant, moltes gràcies 🙂

      2.    Israel va dir

        Amic @ KZKG ^ Gaara he instal·lat el paquet i he realitzat el manual pas a pas, l'únic que quan ho enviament es em queda el correu local, mai em va arribar a sortir, em pots ajudar amb això ?? ...... doncs la veritat necessito tenir conficgurado aquest tema en els meus servidors, salu2s.

        1.    KZKG ^ Gaara va dir

          Per la teva IP assumeixo que ets del meu mateix país 😉
          El «problema» amb les nostres xarxes poques vegades tenen IPs reals com a tal, és a dir, estem ficats sota una subxarxa d'una xarxa d'un servidor intermediari d'un ministeri, o alguna cosa així. O sigui, que possiblement el problema el tinguis en que el servidor web per si sol no pot treure un correu de la xarxa o alguna cosa així, potser necessitis això: https://blog.desdelinux.net/enviar-emails-por-consola-con-sendmail/

  2.   truko22 va dir

    interessant i si es col·loca en «/ etc / profile» donarà l'advertència quan qualsevol usuari es connecti?

    1.    KZKG ^ Gaara va dir

      Caldria provar, no se m'havia ocorregut 😀

  3.   Nabucodonosor va dir

    Digueu-me paranoic, però posar un script que un desconegut em suguiere en una part important del meu sistema on guardo contrasenyes de comptes, dades com actes de naixement, documents d'índole personal i documents de la feina (exposant així als meus clients també) etc etc, i que impilica exposar també el meu compte de correu (!!!) ... doncs, és una cosa perillós, penso.

    1.    yomismo va dir

      El perill de l'script presentat és inversament proporcional a l'enteniment de la mateixa.

      I per paranoies, deixa d'instal·lar repositoris NON-FREE, ja que és possible que algú introdueixi un codi maliciós que et robi la cistella de la compra.

    2.    KZKG ^ Gaara va dir

      Vaig explicar què fa cada part de la línia d'ordres, però si creus que engany a algú, l'script o ordres està aquí mateix en el post, no té cap codi ocult o secret, ets benvingut a revisar tan a fons com vulguis les ordres que executa, si trobes alguna cosa sospitosa si us plau, comenta-ho aquí mateix 😉

  4.   Browsons va dir

    S'agraeix.

  5.   thisnameisfalse va dir

    Muyyy interessant.

    Potser els fitxers ~ / .bashrc o / etc / profile no siguin els més adequats en el cas que accedim per SSH amb un usuari normal i executem alguna ordre puntual com a root. O si exportem les X11 del nostre VPS remot, cada vegada que obrim XNUMX xterm tindríem un nou correu.

    Per al truc de mailx, crec que hauríem d'usar els fitxers ~ / .ssh / rc (individual de cada usuari) o / etc / ssh / sshrc

    PostData: _NUNCA_ accedir per SSH com a usuari root. _NUNCA_ accedir per SSH usant password. _SIEMPRE_ utilitzar private keys.

    1.    truko22 va dir

      interessant → ~ / .ssh / rc vaig a buscar mes informació a l'respecte gràcies 😀

  6.   chinoloc va dir

    Hola, molt bo el tut!
    Podries fer un per ingressar aportar ssh des culquier ip, fora de la xarxa local?
    gràcies !!

  7.   vidagnu va dir

    Aquest script funciona si el servidor de correu a què enviem no verifica que el correu font vingui d'un servidor autèntic, en aquest cas seria de la font root @ localhost, la majoria de servidors el prenguessin com a correu brossa.

    Jo el que faig és configurar sendmail com a MTA, i després utilitzar mail que ve a totes les distros per enviament de correus.

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

  8.   Algabe va dir

    Gràcies pel tip el tendre a per provar-:]

  9.   kuk va dir

    molt útil gràcies

  10.   Israel va dir

    Un milió de gràcies pel consell amic @ KZKG ^ Gaara, vaig a tirar-li un ull al que de sendmail, espero resoldre, salu2s.

  11.   Joskar va dir

    Fantàstic! Gràcies per l'aportació!

  12.   Juan_c va dir

    i que passa, si per exemple l'script aquesta manant massa correus, per ejmplo algú entra en terminal de root a les 8:00 am i enviament com 40 correus, després, algú va entrar a una altra hora i es van enviar més de 23 correus i després algú entra a una altra hora i es van enviar més de 150 correus, al fet que es podria deure?