Ontvang een melding per e-mail wanneer iemand via SSH toegang heeft tot root

Degenen onder ons die servers beheren, moeten de strengst mogelijke controle houden over alles wat er op de server gebeurt, een van de dingen die we vaak moeten weten is wanneer een gebruiker verbinding maakt via SSH (inclusief root), hiervoor met een pakket en een regel zou onze e-mailmeldingen bereiken.

Kun je je voorstellen dat elke keer dat iemand via SSH verbinding maakt met root, ze een e-mail krijgen die zegt?

Met andere woorden, ze zouden een e-mail ontvangen met de volgende tekst:

[miserver] Waarschuwing: toegang tot root-terminal op: 2014/01/21 (200.55.51.151)

Dat is:

[$ NOMBRE_VPS] Waarschuwing: toegang tot rootterminal op: $ DATE ($ IP_DE_WHO_S_CONNECT)

Om dit te bereiken, moeten ze eerst een pakket installeren met de naam mailx.

Ervan uitgaande dat uw server Debian of een daarop gebaseerde distro gebruikt (ik raad alleen Debian aan, niet Ubuntu of iets dergelijks voor servers), dan zou het zijn:

apt-get install mailx

Opmerking: Het vorige commando wordt als root direct op de server uitgevoerd, aangezien het een VPS is, mag sudo niet gebruikt worden tenzij het strikt noodzakelijk is.

Dan moeten we de volgende regel in de root .bashrc plaatsen:

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

Gebruik een terminal-editor zoals nano om /root/.bashrc te bewerken:

nano /root/.bashrc

Onthoud dat u uw e-mailadres aan het einde van de regel moet specificeren, verander eenvoudigweg my@email.com in het e-mailadres dat u wilt dat de notificaties bereiken

Nadat we (ergens in het bestand) de regel hebben gezet die ik ervoor heb gezet, slaan we het bestand op met Ctrl + O (Of beer) en we lieten het achter Ctrl + X

Klaar, elke keer dat iemand de root-terminal betreedt, wordt het .bashrc-bestand geladen, wat altijd standaard wordt gedaan, en wanneer het bestand wordt geladen, wordt de regel die de e-mail verzendt uitgevoerd, waardoor er iets in onze inbox achterblijft. zoals:

e-mailnotificatie-ssh

De uitleg van de regel is iets heel eenvoudigs:

  1. Via mailx verstuur ik de mail, met de parameter -s «_____» specificeer ik het onderwerp, en ik geef het met echo «____» en een pipe de inhoud van de body door.
  2. `hostname` hiermee krijg ik de hostnaam of hostnaam, dat wil zeggen de naam van de VPS.
  3. `date + '% Y /% m /% d'` het date commando toont me de systeemdatum, de rest van de letters geeft eenvoudig aan hoe ik wil dat de datum wordt weergegeven.
  4. wie | grep -v localhost` Als u wie op uw computer uitvoert, zal het u de actieve gebruikers laten zien, met een grep -v localhost zorg ik ervoor dat het alleen degenen toont die verbinding hebben gemaakt vanaf een andere locatie met de server zelf, dat wil zeggen, in feite SSH
  5. `wie | grep -v localhost | awk {'print $ 5'} `Wat deze regel onderscheidt van de vorige is de awk, door de awk en het afdrukken van de 5e kolom is dat ik het IP-adres krijg van waar ze verbinding hebben gemaakt met SSH

Hoe dan ook, de regel is wat lang en lijkt misschien ingewikkeld om te begrijpen, maar er zijn veel vreemde karakters, maar alles is vrij eenvoudig 🙂

Zoals altijd hoop ik dat je het interessant hebt gevonden.

groeten


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   manuelperez zei

    Een vraag, met welke mailserver wordt deze verzonden? Moet u een verzendaccount configureren?

    1.    KZKG ^ Gaara zei

      U moet het mailx-pakket geïnstalleerd hebben 😉
      Zodra dit is gebeurd, wordt het verzonden zonder dat u iets anders op de server hoeft te configureren.

      1.    manuelperez zei

        Ik zal het proberen, maar ik denk dat mijn e-mail geen e-mail van een niet-geverifieerde bron accepteert ...

        1.    yomismo zei

          Ik gebruik exim4 met een 'gmail'-account om e-mails te verzenden en het werkt prima
          - Behalve de FROM TO- en REPLY TO-headers, die gmail zet wat hij wil, maar ze komen goed aan -.
          Gebruik deze informatie om gmail met exim4 te configureren:
          http://dajul.com/2009/06/08/configurar-exim4-con-gmail-o-google-apps/

          1.    KZKG ^ Gaara zei

            Interessant, heel erg bedankt 🙂

      2.    Israël zei

        Vriend @ KZKG ^ Gaara Ik heb het pakket geïnstalleerd en ik heb de handleiding stap voor stap gemaakt, het enige dat als ik het verstuur, ik de lokale post heb, ik ben er nooit uit gekomen, kun je me daarmee helpen ?? ...... nou Ik moet dit thema echt hebben geconfigureerd op mijn servers, salu2s.

        1.    KZKG ^ Gaara zei

          Aan de hand van uw IP-adres neem ik aan dat u uit hetzelfde land komt 😉
          Het "probleem" met onze netwerken hebben zelden echte IP's als zodanig, dat wil zeggen, we zijn ondergebracht onder een proxy-netwerk van een ministerie, of iets dergelijks. Met andere woorden, het probleem is mogelijk dat de webserver zelf geen e-mail van het netwerk kan ontvangen of iets dergelijks, misschien heeft u dit nodig: https://blog.desdelinux.net/enviar-emails-por-consola-con-sendmail/

  2.   truko22 zei

    interessant en als het in "/ etc / profile" wordt geplaatst, geeft het dan een waarschuwing wanneer een gebruiker verbinding maakt?

    1.    KZKG ^ Gaara zei

      Het zou nodig zijn om het te proberen, het was niet bij me opgekomen 😀

  3.   Nebukadnezar zei

    Noem me paranoïde, maar plaats een script dat een vreemde me voorstelt in een belangrijk deel van mijn systeem waar ik accountwachtwoorden bewaar, gegevens zoals geboorteaktes, persoonlijke documenten en werkdocumenten (waardoor ook mijn klanten worden blootgesteld) enz., En dat houdt ook in dat ik mijn e-mailaccount blootleg (!!!) ... nou, het is iets gevaarlijks, denk ik.

    1.    yomismo zei

      Het gevaar van het gepresenteerde script is omgekeerd evenredig met het begrip ervan.

      En voor paranoia, stop met het installeren van NIET-GRATIS repositories, want het is mogelijk dat iemand kwaadaardige code introduceert die uw winkelwagen steelt.

    2.    KZKG ^ Gaara zei

      Ik heb uitgelegd wat elk deel van de commandoregel doet, maar als je denkt dat ik iemand bedrieg, het script of de commando's staan ​​daar in de post, het heeft geen verborgen of geheime code, dan mag je de commando's even grondig doornemen zoals je wilt dat loopt, als je iets verdachts vindt, geef dit dan hier 😉

  4.   Brownsons zei

    Wordt gewaardeerd.

  5.   deze naam is onjuist zei

    Heel interessant.

    Misschien zijn de ~ / .bashrc- of / etc / profile-bestanden niet het meest geschikt in het geval dat we toegang krijgen via SSH met een normale gebruiker en een specifiek commando als root uitvoeren. Of als we de X11 exporteren vanaf onze externe VPS, krijgen we elke keer dat we een xterm openen een nieuwe e-mail.

    Voor de mailx-hack denk ik dat we de bestanden ~ / .ssh / rc (individueel voor elke gebruiker) of / etc / ssh / sshrc moeten gebruiken

    PostData: _NEVER_ toegang door SSH als rootgebruiker. _NEVER_ toegang door SSH met wachtwoord. _ALWAYS_ gebruik persoonlijke sleutels.

    1.    truko22 zei

      interessant → ~ / .ssh / rc Ik zal er meer informatie over zoeken, bedankt gracias

  6.   chinoloco zei

    Hallo, zeer goede leraar!
    Zou je er een kunnen maken om via ssh binnen te komen vanaf elk ip, buiten het lokale netwerk?
    dank je wel!

  7.   vidanu zei

    Dit script werkt als de mailserver waar we naartoe sturen niet verifieert dat de bronmail afkomstig is van een authentieke server, in dit geval zou het afkomstig zijn van root @ localhost, de meeste servers zullen het als spam beschouwen.

    Wat ik doe is sendmail configureren als een MTA, en vervolgens de mail gebruiken die in alle distributies wordt geleverd om e-mails te verzenden.

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

  8.   algabe zei

    Bedankt voor de tip, ik heb het om het te testen:]

  9.   kuk zei

    zeer nuttig thanks

  10.   Israël zei

    Heel erg bedankt voor de adviesvriend @ KZKG ^ Gaara, ik ga een kijkje nemen op sendmail, ik hoop het op te lossen, salu2s.

  11.   joskar zei

    Super goed! Bedankt voor de input!

  12.   Juan C zei

    En wat gebeurt er als het script bijvoorbeeld te veel e-mails verstuurt, iemand komt bijvoorbeeld om 8:00 uur de rootterminal binnen en verstuurt ongeveer 40 e-mails, dan heeft iemand op een ander tijdstip ingevoerd en zijn er meer dan 23 e-mails verzonden en dan komt er iemand op een ander tijdstip en er zijn meer dan 150 e-mails verzonden, wat zou het kunnen zijn?