Dostałem dziś od znajomego zapytanie o najprostszy sposób na wysłanie powiadomienia na adres e-mail o logowaniu się do serwera za pośrednictwem konsoli.

Może komuś się przyda, więc…

E-mail o (za)logowaniu się użytkownika do serwera (SSH)

Podejrzewam, że większość z Was ma przynajmniej 2 użytkowników: „root” i jakiś inny, własny.

Zakładam też, że macie na swoim serwerze skonfigurowane wysyłanie poczty e-mail (własny serwer pocztowy, lub np. MSMTP).

Użytkownik „root”

Pewnie jest duża szansa, że niektórzy z Was mają zablokowane zdalne logowanie jako „root” – więc mogłoby się wydawać że, nie ma potrzeby ustawiać powiadomienia dla tego użytkownika, ale:

  • Zawsze możecie kiedyś włączyć, więc lepiej przyszłościowo…
  • Może jednak macie włączone zdalne logowanie jako „root”
  • Zostaje jeszcze konsola dostępna z panelu zarządzania serwerem (VPS), za pośrednictwem której „root” może się „zdalnie” (no, prawie zdalnie) zalogować

Konfiguracja

Edytujemy plik:

sudo nano /root/.bashrc

I gdzieś na końcu dodajemy:

# E-mail po zalogowaniu
echo `hostname` `date` `who | grep "root"` | mail -s "Root login `hostname`" [email protected]

Lub w przypadku gdy nie korzystacie (lub nie macie zainstalowanego w systemie) polecenia „mail”, bezpośrednio wywołanie aplikacji MSMTP:

TEMAT="Root login "$(hostname)
TRESC=$(echo `hostname` `date` `who | grep "root"`)
echo -e "Subject: "$TEMAT"\r\n\r\n"$TRESC | msmtp --from=profil-domyślny -t [email protected]

Pozostali użytkownicy

Możemy też takie powiadomienie ustawić dla innych użytkowników, zmienia się tylko trochę ścieżka do pliku:

sudo nano /home/[NAZWA_UŻYTKOWNIKA]/.bashrc

Oraz komenda:

# E-mail po zalogowaniu
echo `hostname` `date` `who | grep "[NAZWA UŻYTKOWNIKA]"` | mail -s "[NAZWA UŻYTKOWNIKA] login `hostname`" [email protected]

Lub w przypadku gdy nie korzystacie (lub nie macie zainstalowanego w systemie) polecenia „mail”, bezpośrednio wywołanie aplikacji MSMTP:

TEMAT="[NAZWA_UŻYTKOWNIKA] login "$(hostname)
TRESC=$(echo `hostname` `date` `who | grep "root"`)
echo -e "Subject: "$TEMAT"\r\n\r\n"$TRESC | msmtp --from=profil-domyślny -t [email protected]

Przykładowy alert/e-mail

Od teraz po zalogowaniu się wybranego użytkownika powinniśmy otrzymać e-mail:

Temat: [NAZWA UŻYTKOWNIKA] login [NAZWA SERWERA]

[NAZWA SERWERA] wto, 15 kwi 2014, 10:33:36 CEST root pts/1 2014-04-15 10:33 [HOST/IP]

Pamiętajcie by zamiast „[email protected]” wpisać swój adres e-mail. I, że jest to relatywnie najprostsza wersja, można go jeszcze rozbudowywać. – ale to już raczej zbyteczne bajery… ;-)

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk