Если вам понравилась эта статья, вы можете стать спонсором на Boosty.
Предполагаю, что Authentik у вас уже установлен и настроен (см. статьи про общий обзор и первоначальную настройку). В этой статье я расскажу о настройке почтовых уведомлений в Authentik. Они позволяют получать уведомления о важных событиях в системе - таких как вход пользователей, выход из системы и ошибки аутентификации. Это полезно для мониторинга безопасности и своевременного реагирования на подозрительную активность.
Настройка SMTP#
Для данной настройки, а также для корректной работы Authentik в целом, необходимо предварительно настроить параметры почтового сервера в файле переменных окружения .env.
Блок в .env выглядит так (значения подставьте от своего почтового провайдера):
AUTHENTIK_EMAIL__HOST=smtp.example.com
AUTHENTIK_EMAIL__PORT=587
AUTHENTIK_EMAIL__USERNAME=authentik@stilicho.ru
AUTHENTIK_EMAIL__PASSWORD=<пароль_почтового_ящика>
# STARTTLS, обычно порт 587
AUTHENTIK_EMAIL__USE_TLS=true
# SSL (implicit TLS), обычно порт 465
AUTHENTIK_EMAIL__USE_SSL=false
AUTHENTIK_EMAIL__TIMEOUT=10
AUTHENTIK_EMAIL__FROM=authentik@stilicho.ruПосле изменения .env контейнеры нужно пересоздать: docker compose up -d.
Проверить корректность настройки SMTP можно следующей командой:
docker exec authentik_worker ak test_email ваша_почта@домен.comКонтейнер authentik_worker должен быть запущен, а переменные AUTHENTIK_EMAIL__* - корректно заданы. Если вы не задавали контейнерам свои имена через container_name, то же самое делается через имя сервиса: docker compose exec worker ak test_email ваша_почта@домен.com.
Типичные ошибки, из-за которых тестовое письмо не уходит:
- Одновременно включены
USE_TLSиUSE_SSL. Включать нужно что-то одно:USE_TLS=trueдля STARTTLS (обычно порт 587) илиUSE_SSL=trueдля SSL (обычно порт 465). - Пароль в кавычках. Кавычки в
.envстанут частью пароля, и авторизация не пройдет. - В именах переменных одно подчеркивание вместо двух. Правильно
AUTHENTIK_EMAIL__HOST, с двойным подчеркиванием послеEMAIL. - Хостинг блокирует исходящие SMTP-порты. У многих VPS-провайдеров порты 25/465/587 закрыты по умолчанию - тогда письмо не уйдет при любых настройках, и нужен либо запрос в поддержку, либо SMTP-релей на другом порту.
- Адрес в
AUTHENTIK_EMAIL__FROMне совпадает с ящиком, под которым идет авторизация. Многие почтовые сервисы такие письма отклоняют.
Настройка уведомлений о событиях#
Настройки приложения, описанные в этой статье, актуальны на дату написания статьи.
Авторизуемся в Authentik под учетной записью администратора и переходим в раздел:
Events → Notification Rules

В рамках данной статьи я покажу настройку уведомлений только для трех базовых событий, которые, на мой взгляд, являются наиболее важными с точки зрения безопасности. При необходимости вы можете настроить любые другие события по своему усмотрению.
Нажимаем Create. В появившемся окне задаем название правила, которое имеет для вас смысл. В моем случае это правило для мониторинга входов в Authentik.
В разделе Groups указываем, пользователям какой группы будут приходить уведомления. В моем случае это authentik Admins.
В разделе Transport выбираем механизм доставки уведомлений. В данном случае используется почтовый сервис - стандартный default-email-transport, который отправляет письма через глобальные настройки SMTP из .env. Рядом с ним есть default-local-transport - он показывает уведомления прямо в интерфейсе Authentik; выбрать можно оба сразу.
Обратите внимание: без получателя уведомление просто не создается. Правило будет исправно срабатывать, но писем вы не дождетесь, если не выбрана группа в Groups (или не включена опция Send notification to event user, которая отправляет уведомление самому пользователю, с которым связано событие).
В разделе Severity выбираем уровень важности события. Я использую значение Alert, после чего нажимаем Create.

Переходим в только что созданное правило и нажимаем Create and Bind Policy.

В появившемся окне выбираем Event Matcher Policy.

Задаем название политики (например, login). В разделе Action выбираем событие, для которого будет срабатывать уведомление. В моем случае это Login.
Остальные параметры зависят от ваших требований - более подробно они описаны в официальной документации. Если цель - просто получать уведомления о событии без дополнительной фильтрации, их можно оставить без изменений, как у меня на скрине.

В следующем окне задаем порядок обработки политики. Я начинаю со значения 10 и нажимаю Finish.

Для контроля основных действий пользователей (или потенциальных злоумышленников) я создаю еще две аналогичные политики. Отличие заключается только в типе события:
LogoutLogin Failed


В результате список привязанных политик выглядит примерно следующим образом:

Правило срабатывает, если событие подошло под любую из привязанных политик, поэтому одного правила с тремя политиками достаточно на все три события.
После завершения настройки рекомендуется выполнить проверку. Для этого можно выйти из системы и снова войти в Authentik, а также попытаться выполнить вход с неверными учетными данными. Если все настроено корректно, на каждое соответствующее событие будет приходить email-уведомление.
Уведомления только сообщают о неудачных входах, но не мешают им. Чтобы Authentik еще и сам реагировал на подбор пароля - показывал CAPTCHA или вовсе закрывал вход, - посмотрите статьи про Reputation Policy и Cloudflare Turnstile.





