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…
Spis treści w artykule
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… ;-)
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01