Ricevi una notifica via e-mail quando qualcuno accede come root tramite SSH

Chi di noi amministra i server deve mantenere il controllo più stretto possibile su tutto ciò che accade sul server, una delle cose che spesso abbiamo bisogno di sapere è quando un utente si connette tramite SSH (root incluso), per questo con un pacchetto e una linea raggiungerà le nostre notifiche e-mail.

Riesci a immaginare che ogni volta che qualcuno si connette tramite SSH con root riceva un'e-mail che dice?

In altre parole, riceverebbero un'e-mail che direbbe qualcosa del genere:

[miserver] Avviso: accesso al terminale root: 2014/01/21 (200.55.51.151)

Questo è:

[$ NOMBRE_VPS] Avviso: accesso al terminale root: $ DATE ($ IP_DE_WHO_S_CONNECT)

Per ottenere ciò devono prima installare un pacchetto chiamato posta x.

Supponendo che il tuo server utilizzi Debian o qualche distro basata su di esso (consiglio solo Debian, non Ubuntu o simili per i server) sarebbe:

apt-get install mailx

Nota: Il comando precedente viene eseguito come root direttamente sul server, trattandosi di un VPS, sudo non dovrebbe essere utilizzato a meno che non sia strettamente necessario.

Quindi dobbiamo mettere la seguente riga nella radice .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

Per modificare /root/.bashrc usa alcuni editor nel terminale come nano:

nano /root/.bashrc

Ricorda che devi specificare la tua email alla fine della riga, cambia semplicemente my@email.com nell'email a cui vuoi che le notifiche arrivino

Dopo aver inserito (ovunque nel file) la riga che ho inserito prima, salviamo il file con Ctrl + O (O orso) e l'abbiamo lasciato con Ctrl + X

Pronto, ogni volta che qualcuno entra nel terminale di root verrà caricato il file .bashrc, che è qualcosa che viene sempre fatto di default, e quando il file viene caricato, verrà eseguita la riga che invia l'email, lasciandoci nella nostra casella di posta qualcosa come:

email-notifica-ssh

La spiegazione della linea è qualcosa di veramente semplice:

  1. Tramite mailx invio la mail, con il parametro -s «_____» indico l'oggetto, e lo passo con eco «____» e una pipe il contenuto del corpo.
  2. `hostname` con questo ottengo il nome host o hostname, cioè il nome del VPS.
  3. `date + '% Y /% m /% d'` il comando date mi mostra la data di sistema, il resto delle lettere indica semplicemente come voglio che venga visualizzata la data.
  4. chi | grep -v localhost` Se esegui chi sul tuo computer ti mostrerà gli utenti attivi, con grep -v localhost mi assicuro che mostri solo quelli che si sono connessi da una posizione diversa al server stesso, cioè fondamentalmente SSH
  5. `chi | grep -v localhost | awk {'print $ 5'} `Ciò che differenzia questa riga dalla precedente è awk, attraverso awk e la stampa della quinta colonna è che ottengo l'IP da cui si sono collegati a SSH

Ad ogni modo, la riga è un po 'lunga e può sembrare complessa da capire, tuttavia ci sono molti caratteri strani ma tutto è abbastanza semplice 🙂

Come sempre, spero che tu l'abbia trovato interessante.

saluti


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   manuelperez suddetto

    Una domanda, con quale server di posta viene inviata? Devi configurare un account di spedizione?

    1.    KZKG ^ Gaara suddetto

      Devi avere installato il pacchetto mailx 😉
      Fatto ciò, viene inviato senza la necessità di configurare nient'altro sul server.

      1.    manuelperez suddetto

        Lo proverò, ma penso che la mia email non accetterà la ricezione di email da una fonte non autenticata ...

        1.    yomismo suddetto

          Uso exim4 con un account "gmail" per inviare e-mail e funziona bene
          - Fatta eccezione per le intestazioni FROM TO e REPLY TO, che gmail mette quello che vuole ma arrivano bene -.
          Per configurare Gmail con exim4 usa queste informazioni:
          http://dajul.com/2009/06/08/configurar-exim4-con-gmail-o-google-apps/

          1.    KZKG ^ Gaara suddetto

            Interessante, grazie mille 🙂

      2.    Israele suddetto

        Amico @ KZKG ^ Gaara ho installato il pacchetto e ho fatto il manuale passo dopo passo, l'unica cosa che quando lo mando ho la posta locale, non sono mai uscita, puoi aiutarmi con quello ?? …… beh Ho davvero bisogno di avere questo tema configurato sui miei server, salu2s.

        1.    KZKG ^ Gaara suddetto

          Dal tuo IP presumo che tu venga dal mio paese 😉
          Il "problema" con le nostre reti raramente ha IP reali in quanto tali, cioè siamo subnet sotto una rete proxy ministeriale, o qualcosa del genere. In altre parole, forse il problema è che il server web stesso non può ricevere un'e-mail dalla rete o qualcosa del genere, forse hai bisogno di questo: https://blog.desdelinux.net/enviar-emails-por-consola-con-sendmail/

  2.   camion22 suddetto

    interessante e se è posizionato in "/ etc / profile" darà l'avviso quando un utente si connette?

    1.    KZKG ^ Gaara suddetto

      Sarebbe stato necessario provare, non mi era venuto in mente 😀

  3.   Nabucodonosor suddetto

    Chiamami paranoico, ma metti uno script che uno sconosciuto mi suggerisce in una parte importante del mio sistema dove conservo le password degli account, dati come certificati di nascita, documenti personali e documenti di lavoro (esponendo così anche i miei clienti) ecc. Ecc. implica anche esporre il mio account di posta (!!!)… beh, è ​​qualcosa di pericoloso, credo.

    1.    yomismo suddetto

      Il pericolo del copione presentato è inversamente proporzionale alla sua comprensione.

      E per paranoia, smetti di installare repository NON GRATUITI, poiché è possibile che qualcuno introduca codice dannoso che ruba il tuo carrello.

    2.    KZKG ^ Gaara suddetto

      Ho spiegato cosa fa ogni parte della riga di comando, tuttavia se pensi che stia ingannando qualcuno, lo script oi comandi sono proprio lì nel post, non ha alcun codice nascosto o segreto, sei il benvenuto a rivedere i comandi in modo completo come vuoi che venga eseguito, se trovi qualcosa di sospetto, per favore commentalo qui 😉

  4.   Browson suddetto

    È apprezzato.

  5.   questonomeèfalso suddetto

    Molto interessante.

    Forse i file ~ / .bashrc o / etc / profile non sono i più adatti nel caso in cui accediamo tramite SSH con un utente normale ed eseguiamo un comando specifico come root. Oppure, se esportiamo l'X11 dal nostro VPS remoto, ogni volta che apriamo un xterm avremo una nuova email.

    Per l'hack mailx, penso che dovremmo usare i file ~ / .ssh / rc (individuale per ogni utente) o / etc / ssh / sshrc

    PostData: _NEVER_ accesso da SSH come utente root. _NEVER_ accesso tramite SSH utilizzando la password. _ALWAYS_ usa chiavi private.

    1.    camion22 suddetto

      interessante → ~ / .ssh / rc Troverò maggiori informazioni a riguardo grazie 😀

  6.   chinoloco suddetto

    Ciao, ottimo tutor!
    Potreste crearne uno per entrare tramite ssh da qualsiasi ip, fuori dalla rete locale?
    grazie!

  7.   vidagnu suddetto

    Questo script funziona se il server di posta a cui inviamo non verifica che la posta di origine provenga da un server autentico, in questo caso sarebbe da root @ localhost, la maggior parte dei server la considererà spam.

    Quello che faccio è configurare sendmail come un MTA e quindi utilizzare la posta che arriva in tutte le distribuzioni per inviare e-mail.

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

  8.   Algave suddetto

    Grazie per il suggerimento lo metterò per testarlo:]

  9.   kuk suddetto

    grazie molto utili

  10.   Israele suddetto

    Grazie mille per il consiglio amico @ KZKG ^ Gaara, darò un'occhiata a sendmail, spero di risolvere, salu2s.

  11.   joskar suddetto

    Grande! Grazie per l'input!

  12.   Juan C suddetto

    E cosa succede, se ad esempio lo script sta inviando troppe email, ad esempio qualcuno entra nel terminale di root alle 8:00 e ha inviato circa 40 email, poi qualcuno è entrato in un altro momento e sono state inviate più di 23 email e poi arriva Qualcuno in un altro momento e sono state inviate più di 150 e-mail, cosa potrebbe essere?