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

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


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

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

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

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

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

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

Используя ваш предпочитаемый текстовый редактор в терминале, отредактируйте файл /etc/pam.d/sshd и добавьте после существующих строк session следующее:

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

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

sudo nano /etc/pam.d/sshd

Включите уведомления о входе через 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» и вставьте в него следующее:

# 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

Конечно, замените «YOUR_GMAIL_ADDRESS@gmail.com» на ваш реальный адрес. Теперь давайте сосредоточимся на опции «passwordeval». Как видите, она указывает на файл «/root/.gmail_app_password». Поскольку Google больше не позволяет сторонним приложениям или скриптам входить с использованием вашего обычного пароля Gmail, вам необходимо заранее создать пароль приложения — специальный токен из 16 символов, который предоставляет доступ к вашей учетной записи Gmail.

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

Теперь выполните следующие команды. Конечно, в первой команде замените «YOUR_16_CHAR_APP_PASSWORD» на код, который Google только что сгенерировал для вас.

sudo bash -c 'echo "YOUR_16_CHAR_APP_PASSWORD" > /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:          $PAM_USER User IP Host:  $PAM_RHOST Date:          $DATE Server:        $HOST "  if [ ${PAM_TYPE} = "open_session" ]; then         echo "$BODY" | mail -s "SSH Login Alert on $HOST" ${RECIPIENT} fi  exit 0

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

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

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

Уведомление о входе по SSH было успешно отправлено.

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

Заключение

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

Для дополнительного уровня защиты рассмотрите возможность использования таких инструментов, как SSHGuard или Fail2Ban. Если вы не уверены, как их настроить, ознакомьтесь с нашими руководствами «Как защитить ваш SSH-сервер с помощью SSHGuard» и «Как защитить SSH с помощью Fail2Ban», которые пошагово проводя вас через процесс. Чтобы пойти еще дальше, я бы рекомендовал настроить SSH с двухфакторной аутентификацией.

Наконец, избегайте использования аутентификации по паролю. Вместо этого создайте пару SSH-ключей и используйте её для безопасного входа.

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

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *