Recevoir une notification par e-mail lorsque quelqu'un accède en tant que root par SSH

Ceux d'entre nous qui administrent des serveurs doivent garder le contrôle le plus strict possible sur tout ce qui se passe sur le serveur, l'une des choses que nous avons souvent besoin de savoir est quand un utilisateur se connecte via SSH (root inclus), pour cela avec un package et une ligne atteindrait nos notifications par e-mail.

Pouvez-vous imaginer que chaque fois que quelqu'un se connecte via SSH avec root, il reçoit un e-mail qui le dit?

En d'autres termes, ils recevraient un e-mail qui dirait quelque chose comme ceci:

[miserver] Alerte: accès au terminal racine le: 2014/01/21 (200.55.51.151)

Ce est à dire:

[$ NOMBRE_VPS] Alerte: accès au terminal racine le: $ DATE ($ IP_DE_WHO_S_CONNECT)

Pour ce faire, ils doivent d'abord installer un package appelé courrier x.

En supposant que votre serveur utilise Debian ou une distribution basée sur celle-ci (je ne recommande que Debian, pas Ubuntu ou similaire pour les serveurs), ce serait:

apt-get install mailx

Observation: La commande précédente est exécutée en tant que root directement sur le serveur, car il s'agit d'un VPS, sudo ne doit pas être utilisé sauf si cela est strictement nécessaire.

Ensuite, nous devons mettre la ligne suivante à la racine .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

Pour éditer /root/.bashrc, utilisez un éditeur dans un terminal comme nano:

nano /root/.bashrc

N'oubliez pas que vous devez spécifier votre email à la fin de la ligne, changez simplement my@email.com par l'email que vous voulez que les notifications atteignent

Après avoir mis (n'importe où dans le fichier) la ligne que j'ai placée avant, nous sauvegardons le fichier avec Ctrl + O (Ou ours) et nous l'avons laissé avec Ctrl + X

Prêt, chaque fois que quelqu'un entre dans le terminal racine, le fichier .bashrc sera chargé, ce qui est toujours fait par défaut, et lorsque le fichier est chargé, la ligne qui envoie l'e-mail sera exécutée, nous laissant quelque chose dans notre boîte de réception comme:

email-notification-ssh

L'explication de la ligne est quelque chose de vraiment simple:

  1. Par mailx j'envoie le mail, avec le paramètre -s «_____» je spécifie le sujet, et je le passe avec l'écho «____» et un tuyau le contenu du corps.
  2. `hostname` avec cela, j'obtiens le nom d'hôte ou le nom d'hôte, c'est-à-dire le nom du VPS.
  3. `date + '% Y /% m /% d'` la commande date me montre la date du système, le reste des lettres indique simplement comment je veux que la date soit affichée.
  4. qui | grep -v localhost` Si vous exécutez who sur votre ordinateur, il vous montrera les utilisateurs actifs, avec un grep -v localhost, je m'assure qu'il ne montre que ceux qui se sont connectés d'un emplacement différent au serveur lui-même, c'est-à-dire essentiellement SSH
  5. `qui | grep -v localhost | awk {'print $ 5'} `Ce qui différencie cette ligne de la précédente c'est le awk, à travers le awk et l'impression de la 5ème colonne, c'est que j'obtiens l'IP d'où ils se sont connectés à SSH

Quoi qu'il en soit, la ligne est un peu longue et peut sembler complexe à comprendre, cependant il y a beaucoup de personnages étranges mais tout est assez simple 🙂

Comme toujours, j'espère que vous l'avez trouvé intéressant.

salutations


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   manuelperez dit

    Une question, avec quel serveur de messagerie est-il envoyé? Devez-vous configurer un compte d'expédition?

    1.    KZKG ^ Gaara dit

      Vous devez avoir installé le package mailx 😉
      Une fois cela fait, il est envoyé sans qu'il soit nécessaire de configurer quoi que ce soit d'autre sur le serveur.

      1.    manuelperez dit

        Je vais l'essayer, mais je pense que mon e-mail n'acceptera pas de recevoir des e-mails d'une source non authentifiée ...

        1.    yomismo dit

          J'utilise exim4 avec un compte 'gmail' pour envoyer des e-mails et cela fonctionne très bien
          - Sauf pour les en-têtes FROM TO et REPLY TO, que gmail met ce qu'il veut mais ils arrivent bien -.
          Pour configurer Gmail avec exim4, utilisez ces informations:
          http://dajul.com/2009/06/08/configurar-exim4-con-gmail-o-google-apps/

          1.    KZKG ^ Gaara dit

            Intéressant, merci beaucoup 🙂

      2.    Israël dit

        Ami @ KZKG ^ Gaara J'ai installé le paquet et j'ai fait le manuel étape par étape, la seule chose que quand je l'envoie j'ai le mail local, je ne suis jamais sorti, pouvez-vous m'aider avec ça ?? …… bien J'ai vraiment besoin d'avoir ce thème configuré sur mes serveurs, salu2s.

        1.    KZKG ^ Gaara dit

          Par votre IP, je suppose que vous êtes du même pays 😉
          Le «problème» avec nos réseaux a rarement de vraies adresses IP en tant que telles, c'est-à-dire que nous sommes sous-réseau sous un réseau proxy ministériel, ou quelque chose comme ça. En d'autres termes, le problème est peut-être que le serveur Web seul ne peut pas recevoir d'e-mail du réseau ou quelque chose du genre, peut-être avez-vous besoin de ceci: https://blog.desdelinux.net/enviar-emails-por-consola-con-sendmail/

  2.   Truko22 dit

    intéressant et s'il est placé dans «/ etc / profile» donnera-t-il l'avertissement lorsqu'un utilisateur se connecte?

    1.    KZKG ^ Gaara dit

      Il faudrait essayer, ça ne m'était pas venu à l'esprit 😀

  3.   Nabuchodonosor dit

    Appelez-moi paranoïaque, mais mettez un script qu'un inconnu me suggère dans une partie importante de mon système où je garde les mots de passe de compte, des données telles que des certificats de naissance, des documents personnels et des documents de travail (exposant ainsi mes clients également), etc. etc., et que implique aussi d'exposer mon compte de messagerie (!!!)… enfin, c'est quelque chose de dangereux, je pense.

    1.    yomismo dit

      Le danger du scénario présenté est inversement proportionnel à sa compréhension.

      Et pour la paranoïa, arrêtez d'installer des référentiels NON GRATUITS, car il est possible que quelqu'un introduit un code malveillant qui vole votre panier.

    2.    KZKG ^ Gaara dit

      J'ai expliqué ce que fait chaque partie de la ligne de commande, mais si vous pensez que je trompe quelqu'un, le script ou les commandes sont juste là dans le message, il n'a pas de code caché ou secret, vous êtes invités à examiner les commandes de manière aussi approfondie comme vous le souhaitez, si vous trouvez quelque chose de suspect, veuillez le commenter ici 😉

  4.   browsons dit

    Merci.

  5.   ce nom est faux dit

    Très intéressant.

    Peut-être que les fichiers ~ / .bashrc ou / etc / profile ne sont pas les plus appropriés dans le cas où nous accédons par SSH avec un utilisateur normal et exécutons une commande spécifique en tant que root. Ou si nous exportons le X11 depuis notre VPS distant, chaque fois que nous ouvrons un xterm, nous aurions un nouvel e-mail.

    Pour le hack mailx, je pense que nous devrions utiliser les fichiers ~ / .ssh / rc (individuel pour chaque utilisateur) ou / etc / ssh / sshrc

    PostData: accès _NEVER_ par SSH en tant qu'utilisateur root. _NEVER_ accès par SSH en utilisant un mot de passe. _ALWAYS_ utilise des clés privées.

    1.    Truko22 dit

      intéressant → ~ / .ssh / rc je trouverai plus d'informations à ce sujet merci 😀

  6.   chinois dit

    Bonjour, très bon tuteur!
    Pourriez-vous en créer un pour entrer via ssh depuis n'importe quelle adresse IP, en dehors du réseau local?
    je vous remercie!

  7.   vidagnu dit

    Ce script fonctionne si le serveur de messagerie auquel nous envoyons ne vérifie pas que le courrier source provient d'un serveur authentique, dans ce cas, il proviendrait de root @ localhost, la plupart des serveurs le prendront comme spam.

    Ce que je fais, c'est configurer sendmail en tant que MTA, puis utiliser le courrier fourni dans toutes les distributions pour envoyer des e-mails.

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

  8.   Albigeois dit

    Merci pour le conseil que je vais avoir pour le tester:]

  9.   kuk dit

    très utile merci

  10.   Israël dit

    Merci un million pour le conseil ami @ KZKG ^ Gaara, je vais jeter un oeil à sendmail, j'espère résoudre, salu2s.

  11.   Joskar dit

    Formidable! Merci pour la contribution!

  12.   Juan C dit

    Et que se passe-t-il, si par exemple le script envoie trop d'e-mails, par exemple quelqu'un entre dans le terminal racine à 8h00 et a envoyé environ 40 e-mails, puis quelqu'un est entré à un autre moment et plus de 23 e-mails ont été envoyés, puis quelqu'un vient à un autre moment et plus de 150 e-mails ont été envoyés, que pourrait-il être?