Логотип

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

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

Всегда полезно знать, кто и когда подключается к вашему серверу Linux по протоколу SSH. Даже если доступ есть только у вас, рекомендуется следить за подключениями. Для команд или производственных систем получение уведомлений о входах по протоколу SSH обеспечивает дополнительный уровень осведомлённости и безопасности.

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

 

Как включить оповещения о входе в SSH с помощью PAM

PAM (подключаемый модуль аутентификации) — это самый надёжный и простой способ запускать хук именно в момент открытия (и закрытия) сеанса SSH. Вот как это работает.

Когда кто-то входит в систему с помощью SSH, система запрашивает инструкции у PAM. Обычно PAM проверяет пароли, ключи или двухфакторную аутентификацию, но мы также можем указать ему: «При каждом запуске нового сеанса SSH запускайте этот скрипт». Таким образом, скрипт получает полезные данные, такие как имя пользователя и IP-адрес, и может сразу отправить вам уведомление — без необходимости просматривать журналы или запускать дополнительные демоны. Вот как это сделать.

С помощью предпочитаемого вами текстового редактора для терминала отредактируйте файл «/etc/pam.d/sshd» и добавьте после существующих строк «session» следующее:

session optional pam_exec.so /usr/local/bin/ssh-login-notify.sh

 

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

Итак, окончательная версия выглядит так:

sudo nano /etc/pam.d/sshd

 

Включите оповещения о входе в SSH с помощью PAM.

Включите оповещения о входе в SSH с помощью PAM.

 

Сохраните файл и выйдите. Теперь давайте создадим сам скрипт. Он будет запускаться каждый раз при успешном входе в систему по SSH благодаря только что настроенной конфигурации PAM SSH. Единственное, что вам нужно решить, — это тип уведомления, которое вы хотите настроить.

Мы упоминаем об этом, потому что существует множество способов сделать это. Например, если вы уже используете собственную систему уведомлений, такую как Ntfy или Gotify, или общедоступную систему, например Pushover, вы можете подключиться прямо к ней. Другой вариант — Apprise, который работает практически со всеми популярными сервисами уведомлений. Вы также можете выбрать Telegram, Discord, Slack или аналогичную платформу.

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

Для начала давайте установим необходимые компоненты. Если вы используете дистрибутив на основе DEB (Debian, Ubuntu и т. д.), выполните следующую команду:

sudo apt install msmtp msmtp-mta bsd-mailx

 

Для систем на базе RPM (Fedora, Alma, Rocky и т. д.):

sudo dnf install msmtp msmtp-mta mailx

 

Как видите, мы будем использовать msmtp — лёгкий и простой инструмент командной строки для отправки электронных писем с ретрансляцией на настроенный почтовый сервер. В нашем случае это SMTP-сервер Google. Создайте файл «/etc/msmtprc» и вставьте в него следующее:

sudo nano /etc/msmtprc
# Global defaults
defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        /var/log/msmtp.log

# Gmail account
account        gmail
host           smtp.gmail.com
port           587
from           YOUR_GMAIL_ADDRESS@gmail.com
user           YOUR_GMAIL_ADDRESS@gmail.com
passwordeval   "cat /root/.gmail_app_password"

# Set default
account default : gmail

 

Читать  Контроль доступа: идентификация, аутентификация и авторизация

Конечно, замените «ВАШ_АДРЕС_ПОЧТЫ@gmail.com» на свой настоящий адрес. Теперь давайте сосредоточимся на параметре «passwordeval». Как видите, он указывает на файл «/root/.gmail_app_password». Поскольку Google больше не разрешает сторонним приложениям или скриптам входить в систему с использованием вашего обычного пароля Gmail, вам необходимо заранее создать пароль для приложения — специальный токен из 16 символов, который предоставляет доступ к вашей учётной записи Gmail.

Для этого нажмите на изображение своего профиля в правом верхнем углу аккаунта Google и выберите «Управление аккаунтом Google». В строке поиска введите «пароль для приложения» и выберите его, когда он появится. Введите название для нового приложения, например «Мои SMTP-уведомления», и нажмите «Создать». Google сгенерирует пароль из 16 символов, разделённых на четыре группы по четыре символа. Скопируйте этот код и сохраните его.

Теперь выполните следующие команды. Конечно, замените «ВАШ_16-ЗНАЧНЫЙ_ПАРОЛЬ_ДЛЯ_ПРИЛОЖЕНИЯ» в первой команде на код, который только что сгенерировал Google.

sudo bash -c 'echo "ВАШ_16-ЗНАЧНЫЙ_ПАРОЛЬ_ДЛЯ_ПРИЛОЖЕНИЯ" > /root/.gmail_app_password'
sudo chmod 600 /root/.gmail_app_password
sudo chown root:root /root/.gmail_app_password

 

Наконец, создайте скрипт, который PAM будет запускать автоматически каждый раз, когда кто-то успешно входит на ваш сервер по SSH.

sudo nano /usr/local/bin/ssh-login-notify.sh
#!/bin/bash

USER="$PAM_USER"
IP="$PAM_RHOST"
HOST=$(hostname)
DATE=$(date)
RECIPIENT="you@example.com"
SUBJECT="SSH Login on $HOST"

BODY="
A new SSH login was successfully established.

User:          ${USER}
User IP Host:  ${IP}
Date:          ${DATE}
Server:        ${HOST}
"

if [ ${PAM_TYPE} = "open_session" ]; then
        echo "${BODY}" | mail -s "${SUBJECT}" ${RECIPIENT}
fi

exit 0

 

Читать  Check Point: особенности и достоинства

Здесь замените «you@example.com» на адрес электронной почты, на который вы хотите получать уведомления. Затем сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/ssh-login-notify.sh

 

Чтобы проверить всё, что вы сделали, войдите на сервер по SSH с другого хоста. Вы должны получить электронное письмо на указанный вами адрес, похожее на то, что показано ниже:

Если по какой-то причине вы не получили ожидаемый результат, проверьте логи в папке «/var/log/msmtp.log», чтобы понять, что пошло не так.

 

Заключение

Использование PAM для отправки уведомлений о входе в систему по протоколу SSH — это надежный способ, который интегрируется непосредственно в процесс аутентификации и не требует сбора данных из журналов или использования фоновых демонов. После настройки вы будете мгновенно получать информацию о том, кто и откуда получает доступ к вашему серверу, что поможет вам своевременно выявлять несанкционированные действия.

Спасибо, что нашли время ознакомиться с этим руководством. Как всегда, мы будем рады вашим комментариям.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала