Få ett meddelande via e-post när någon går in som root av SSH

Vi som administrerar servrar måste ha strikt kontroll över allt som händer på servern, en av de saker som vi ofta behöver veta är när en användare ansluter via SSH (root ingår), för detta med ett paket och en linje skulle nå våra e-postmeddelanden.

Kan du tänka dig att varje gång någon ansluter via SSH med root får de ett mejl som säger?

Med andra ord skulle de få ett e-postmeddelande som skulle säga något så här:

[ miserver ] Varning: Root Terminal Access den: 2014/01/21 (200.55.51.151)

Det är:

[ $VPS_NAME ] Varning: Tillgång till Root Terminal den: $DATE ($IP_OF_WHO_SE_CONNECTED)

För att uppnå detta måste de först installera ett paket som heter mailx.

Om du antar att din server använder Debian eller någon distro baserad på den (jag rekommenderar bara Debian, inte Ubuntu eller liknande för servrar) skulle det vara:

apt-get install mailx

Obs: Det föregående kommandot exekveras som root direkt på servern, eftersom det är en VPS bör sudo inte användas om det inte är absolut nödvändigt.

Sedan måste vi lägga in följande rad i roten .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

För att redigera /root/.bashrc använd en terminalredigerare som nano:

nano /root/.bashrc

Kom ihåg att du måste ange din e-postadress i slutet av raden, ändra helt enkelt my@email.com till den e-post som du vill att aviseringarna ska komma till

Efter att ha lagt (var som helst i filen) raden som jag satt före sparar vi filen med ctrl + O (Eller björn) och vi kom ur det med ctrl + X

Klart, varje gång någon går in i rotterminalen kommer .bashrc-filen att laddas, vilket är något som alltid görs som standard, och när filen är laddad kommer raden som skickar e-postmeddelandet att exekveras, vilket lämnar något i vår inkorg som:

email-notification-ssh

Förklaringen av raden är något väldigt enkelt:

  1. Med hjälp av mailx skickar jag posten, med parametern -s "_____" anger jag ämnet, och jag skickar det med eko "____" och ett rör innehållet i kroppen.
  2. `hostname` med detta får jag värdnamnet eller värdnamnet, det vill säga namnet på VPS.
  3. `date +'%Y/%m/%d'` datumkommandot visar mig systemdatumet, resten av bokstäverna indikerar bara hur jag vill att datumet ska visas.
  4. vem | grep -v localhost` Om du kör vem på din dator den kommer att visa dig de aktiva användarna, med en grep -v localhost ser jag till att den bara visar de som har anslutit från en annan plats till själva servern, det vill säga SSH i grund och botten
  5. `vem | grep -v localhost | awk {'print $5'}` Det som skiljer den här raden från den föregående är awk, att använda awk och skriva ut den 5:e kolumnen är att jag får IP:n där de anslutit till SSH

Hur som helst, raden är ganska lång och det kan tyckas komplicerat att förstå, men det finns många konstiga karaktärer men allt är ganska enkelt 🙂

Som alltid hoppas jag att du tyckte att det var intressant.

hälsningar


22 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   manuelperez sade

    En fråga, vilken e-postserver skickas det med? Måste jag skapa ett fraktkonto?

    1.    KZKG ^ Gaara sade

      Du måste ha mailx-paketet installerat 😉
      När detta är gjort skickas det utan att behöva konfigurera något annat på servern.

      1.    manuelperez sade

        Jag ska försöka, men jag tror att min e-post inte kommer att acceptera att ta emot e-post från en oautentiserad källa...

        1.    yomismo sade

          Jag använder exim4 med ett "gmail"-konto för att skicka e-post och det fungerar bra
          – förutom rubrikerna FRÅN TILL och SVAR TILL, som Gmail sätter vad den vill men de kommer bra -.
          För att konfigurera Gmail med exim4 använd denna information:
          http://dajul.com/2009/06/08/configurar-exim4-con-gmail-o-google-apps/

          1.    KZKG ^ Gaara sade

            Intressant, tack så mycket 🙂

      2.    Israel sade

        Vän @KZKG^Gaara, jag har installerat paketet och jag har gjort manualen steg för steg, det enda är att när jag skickar det får jag det lokala mailet, det kom aldrig ut, kan du hjälpa mig med det??. ..ja, jag behöver verkligen ha detta tema konfigurerat på mina servrar, salu2s.

        1.    KZKG ^ Gaara sade

          Av din IP antar jag att du är från samma land som jag 😉
          "Problemet" med våra nätverk har sällan riktiga IP-adresser som sådana, det vill säga att vi har fastnat under ett subnät av ett departements proxynätverk, eller något liknande. Med andra ord kan problemet vara att webbservern i sig inte kan få ett e-postmeddelande från nätverket eller något liknande, kanske du behöver detta: https://blog.desdelinux.net/enviar-emails-por-consola-con-sendmail/

  2.   truko22 sade

    Intressant och om det är placerat i "/etc/profile" kommer det att ge en varning när någon användare ansluter?

    1.    KZKG ^ Gaara sade

      Jag skulle behöva prova det, det hade inte fallit mig in 😀

  3.   Nebukadnessar sade

    Kalla mig paranoid, men att sätta ett manus som en främling föreslog för mig i en viktig del av mitt system där jag förvarar kontolösenord, data som födelsebevis, personliga dokument och arbetsdokument (därmed exponerar mina klienter också) etc etc, och det innebär också att jag exponerar mitt e-postkonto (!!!) ... ja, det är något farligt, tror jag.

    1.    yomismo sade

      Faran med manuset som presenteras är omvänt proportionell mot förståelsen av det.

      Och bara för att vara paranoid, sluta installera ICKE-GRATIS arkiv, eftersom det är möjligt att någon kommer att ange en skadlig kod som kommer att stjäla din kundvagn.

    2.    KZKG ^ Gaara sade

      Jag förklarade vad varje del av kommandoraden gör, men om du tror att jag vilseleder någon, skriptet eller kommandona finns där i inlägget, den har ingen dold eller hemlig kod, du är välkommen att granska kommandona som grundligt som du vill som körs, om du hittar något misstänkt vänligen kommentera här 😉

  4.   browsons sade

    Är uppskattad.

  5.   detta namn är falskt sade

    Mycket intressant.

    Kanske är filerna ~/.bashrc eller /etc/profile inte de mest lämpliga om vi kommer åt via SSH med en normal användare och kör ett specifikt kommando som root. Eller om vi exporterar X11 från vår fjärranslutna VPS, varje gång vi öppnar en xterm får vi ett nytt e-postmeddelande.

    För mailx-tricket tycker jag att vi ska använda filerna ~/.ssh/rc (individuellt för varje användare) eller /etc/ssh/sshrc

    PostData: _NEVER_ åtkomst via SSH som root-användare. _NEVER_ åtkomst via SSH med ett lösenord. _ALLTID_ använd privata nycklar.

    1.    truko22 sade

      intressant → ~/.ssh/rc Jag ska leta efter mer information om det, tack 😀

  6.   chinoloco sade

    Hej, mycket bra tutorial!
    Kan du få en att gå in via ssh från valfri IP, utanför det lokala nätverket?
    tack!

  7.   vidagnu sade

    Detta skript fungerar om e-postservern vi skickar till inte verifierar att källposten kommer från en autentisk server, i det här fallet skulle det vara från källan root@localhost, de flesta servrar tar det som spam.

    Det jag gör är att konfigurera sendmail som MTA, och sedan använda e-post som kommer i alla distros för att skicka e-post.

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

  8.   Algave sade

    Tack för tipset, jag ska behålla det för att testa :]

  9.   kuk sade

    mycket användbara tack

  10.   Israel sade

    Tusen tack för tipset vän @KZKG^Gaara, jag ska ta en titt på sendmail-grejen, jag hoppas att det löser sig, hälsningar.

  11.   Joskar sade

    Bra! Tack för input!

  12.   Juan C sade

    Och vad händer, om till exempel skriptet skickar för många e-postmeddelanden, till exempel någon går in i rotterminalen klockan 8:00 och skickade cirka 40 e-postmeddelanden, sedan kom någon in vid en annan tidpunkt och mer än 23 e-postmeddelanden skickades och sedan kommer någon in vid en annan tidpunkt och mer än 150 e-postmeddelanden skickades, vad kan detta vara?