Как получать письма при входе по SSH

Как получать письма при входе по SSH

При использовании сервера важно понимать, что на них происходит в данный момент: кто заходит по SSH и когда. Особенно это касается безопасности: если злоумышленник подберёт пароль и войдёт как root, у него будут неограниченные права — последствия очевидны.

Хорошая практика — запретить прямой вход root по SSH и работать через обычную учётную запись с sudo. Когда нужен доступ суперпользователя, входите как обычный пользователь и переключайтесь на root через su. А чтобы не пропустить подозрительные логины, можно настроить простые email-уведомления — письмо будет приходить на указанный адрес и содержать IP последнего входа.

Если вы увидели неизвестный IP, его легко заблокировать в файрволе.

Как быстро заблокировать IP с доступом к SSH

iptables:

sudo iptables -A INPUT -s <IP_Address> -p tcp --dport ssh -j DROP

firewalld:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="<IP_Address>" port protocol="tcp" port="22" reject'

sudo firewall-cmd --reload

UFW:

sudo ufw deny from <IP_Address> to any port 22

sudo ufw reload

Настройка email-уведомлений о входе по SSH

Здесь понадобятся права root, минимальные навыки работы в nano или vi и установленный почтовый клиент mailx (он же mailutils на Debian-подобных системах), чтобы отсылать письма.

Установите mailx в вашей системе одной из команд:

sudo apt install mailutils     # Debian/Ubuntu/Mint

sudo yum install mailx         # RHEL/CentOS/Fedora/Rocky/AlmaLinux

sudo emerge -a sys-apps/mailx  # Gentoo

sudo apk add mailx             # Alpine

sudo pacman -S mailx           # Arch

sudo zypper install mailx      # openSUSE

sudo pkg install mailx         # FreeBSD

Письма при входе под root

Зайдите под root и перейдите в его домашний каталог:

cd /root

Откройте файл .bashrc в любимом редакторе. Учтите, это скрытый файл — его видно командой ls -la.

vi .bashrc

или

nano .bashrc

В конец файла добавьте строку, заменив ServerName на имя вашего сервера, а your@yourdomain.com — на ваш email:

echo 'ALERT - Root Shell Access (ServerName) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" your@yourdomain.com

Сохраните файл, выйдите из сессии и войдите снова по SSH. При каждом входе root будет отправляться письмо. Пример уведомления:

ALERT — Root Shell Access (Database Replica) on: Thu Nov 28 16:59:40 IST 2023 tecmint pts/0 2023-11-28 16:59 (172.16.25.125)

Письма при входе обычного пользователя

Авторизуйтесь под нужным пользователем (в примере — tecmint) и перейдите в его домашний каталог:

cd /home/tecmint

Откройте .bashrc и добавьте ту же строку (подставьте своё имя сервера и почту):

vi .bashrc

или

nano .bashrc

echo ‘ALERT — Root Shell Access (ServerName) on:’ `date` `who` | mail -s «Alert: Root Access from `who | cut -d'(‘ -f2 | cut -d’)’ -f1`» your@yourdomain.com

Сохраните, выйдите из системы и войдите снова. При каждом входе этого пользователя .bashrc выполнится и отправит письмо с данными о входе. Аналогично можно настроить уведомления для любого аккаунта: отредактируйте файл /home/имя_пользователя/.bashrc и добавьте указанную строку.

Такой простой механизм помогает оперативно замечать неожиданные логины и быстро блокировать нежелательные IP на уровне файрвола.