Featured image of post FreeIPA. Отправка уведомления пользователю об истечении пароля

FreeIPA. Отправка уведомления пользователю об истечении пароля

Настраиваем уведомления по почте, о смене пароля во FreeIPA

Когда пользователей в нашей FreeIPA “перевалило” за 50 человек возникла необходимость сделать оповещения о своевременной смене пароля. Благо есть встроенный дополнительный модуль, который позволяет это сделать. Имя этого модуля IPA-ENP, который “под капотом” представляет собой набор python скриптов.

Главный сервер FreeIPA у нас крутится в докер-компоузе. Заходим на сервер-клиента по ssh, который будет работать 24/7 и рассылать уведомления.

Шаг 1. Установка дополнительного модуля и настройка

Получаем билет авторизации kerberos:

1
kinit admin

Устанавливаем дополнительный пакет:

1
sudo apt install freeipa-client-epn

Редактируем файл конфигурации, добавляя свои значения:

1
sudo nano /etc/ipa/epn.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Адрес почтового сервера и порт 

smtp_server = server.mail.local
smtp_port = 25

# Если авторизация на почтовом сервере через логин и пароль добавляем строки. 
# Если почтовый сервер принимает соединения без авторизации (по IP), то в этом нет необходимости.

smtp_user = myuser@mail.local
smtp_password = mypassword

smtp_timeout = 60

smtp_security = none

# Указываем email администратора. На этот адрес будут приходить письма, которые не дошли и уведомления.
smtp_admin = admin@mail.local

# Указываем от кого будут приходить сообщения.
mail_from = myuser@mail.local

#Указываем дни, когда будут приходить уведомления. За 14, 7, 3, 1 день до окончания пароля.
notify_ttls = 14, 7, 3, 1

# Кодировка
msg_charset = utf8

msg_subtype = plain

Сохраняем и закрываем.

Шаг 2. Проверка конфигурации

Узнать срок действия пароля пользователя:

1
ipa user-show имя_пользователя --all --raw | grep krbPasswordExpiration

Установить срок истечения пароля:

1
ipa user-mod имя_пользователя --password-expiration=дата_истечения_срока_действия_пароля

Где дата_истечения_срока_действия_пароля — строка вида: 20240910170748Z. Где, 2024 год 09 месяц 10 число 17 часы 07 минуты 48 секунды

Для проверки можем сменить пароль пользователю:

1
ipa user-mod имя_пользователя --setattr=krbPasswordExpiration=20240911170748Z

Получается мы попадаем под условие, что до истечения пароля пользователя остаётся 1 день и ему нужно отправить сообщение. Для теста я создал в FreeIPA пользователя с именем user, и сменил ему срок истечения пароля командами выше.

Тестируем нашу конфигурацию без отправки сообщения.

1
sudo ipa-epn --dry-run

Получаем вывод:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[
    {
        "uid": "user",
        "cn": "user test",
        "givenname": "user",
        "sn": "user",
        "krbpasswordexpiration": "2024-09-10 17:07:48",
        "mail": "['user@mail.local']"
    }
]
The IPA-EPN command was successful

Шаг 3. Настройка текста сообщения

Далее настраиваем шаблон сообщения в файле, который будет приходить пользователю.

1
sudo nano /etc/ipa/epn/expire_msg.template

В моём случае я удалил все строки и добавил:

Добрый день, {fullname}!

Просим Вас сменить пароль от учетной записи {uid}, который действует до {expiration}. Во избежании блокировок измените пароль от FreeIPA заранее.

  • Мы можем использовать переменные, для шаблона сообщения:
1
2
3
4
5
ID пользователя: uid
Полное имя: fullname
Имя: first
Фамилия: last
Срок действия пароля: expiration

Сохраняем, закрываем.

Шаг 4. Отправляем сообщение

Тестируем отправку сообщения администратору, которого мы указали в конфиге smtp_admin = admin@mail.local. Пользователям это сообщение не дойдёт, так как мы указали параметр -–mail-test.

1
sudo ipa-epn -–mail-test

Отправляем сообщения пользователям:

1
sudo ipa-epn

Смотрим на шаблон и вид сообщения. Если все устраивает, то запускаем встроенный таймер, который будет автоматически делать запрос во FreeIPA и отправлять уведомления. По умолчанию он запускается каждую ночь в 01:00 часов.

1
2
sudo systemctl start ipa-epn.timer
sudo systemctl enable ipa-epn.timer

Если время нужно изменить время отправки, допустим в 08:00, то отредактируем параметр сервиса:

1
sudo nano /usr/lib/systemd/system/ipa-epn.timer
1
2
3
[Timer]
OnCalendar=
OnCalendar=*-*-* 08:00:00

Сохраняем, выходим.

Проверяем сервис:

1
2
sudo systemctl show ipa-epn.timer  | grep OnCalendar
TimersCalendar={ OnCalendar=*-*-* 08:00:00 ; next_elapse=n/a }

Настройка завершена. Даже если север в дальнейшем перезапуститься наша служба timer включится и выполнит задание по расписанию.

Информацию можно использовать в свободном доступе, с указанием ссылки на сайт
Создано при помощи Hugo
Тема Stack, дизайн Jimmy