Срок жизни пароля
Описание реализации
Реализация представлена в виде представления с SQL-запросом, собирающим всю необходимую информацию для последующей фильтрации.
Описание вывода
Результатом выполнения представления является таблица со следующими параметрами:
- uid - имя пользователя;
- remaining_days - количество дней действия пароля.
Действия по настройке отчёта
Настройка отчёта состоит из 3-х этапов:
- Подготовка окружения
- Подготовка скрипта сбора данных;
- Подготовка представления.
Подготовка окружения сбора данных
Для успешного сбора данных в целях безопасности необходимо предварительно сконфигурировать на целевом компьютере, выполняющим запрос, хранение пароля УЗ.
Поскольку Zodiac по умолчанию выполняет скрипты от имени пользователя systemd, для хранения пароля предлагается использовать окружение сервиса zodiac-agent, задав пароль в переменной Password. Для этого необходимо выполнить следующие действия:
- Авторизоваться под учётной записью администратора на целевом компьютере, к которому будет привязан скрипт;
- Добавить в файл сервиса агента Zodiac'а, расположенного по пути /opt/zodiac/agent/zodiac-agent.service, следующий параметр:
...
[Service]
Environment=Password=<пароль_УЗ>
...
где <пароль_УЗ> - пароль доменной учётной записи, от имени которой производится поиск дат истечения паролей пользователей в каталоге.
3. Произвести перезапуск systemd:
systemctl daemon-reload
- Произвести перезапуск службы агента:
systemctl restart zodiac-agent
Подготовка скрипта сбора данных в службе каталога ALD Pro
Для подготовки скрипта сбора данных в службе каталога ALD Pro необходимо выполнить следующие действия:
- Создать директиву, включающую элемент Shell сбора данных с текстом скрипта:
ldapsearch -h <адрес_контроллера> -D "<данные_сервисной_УЗ>" -w $Password "(objectClass=person)" uid krbPasswordExpiration | sed -re 's/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]+)Z/\3.\2.\1 \4:\5:\6/'
где:
- <адрес_контроллера> - IP-адрес или доменное имя контроллера LDAP;
- <данные_сервисной_УЗ> - данные сервисной УЗ, от имени которой выполняется поиск в службе каталогов. Сервисная УЗ должна обладать правами на чтение к разделу, где хранятся записи о компьютерах;
Пример:
ldapsearch -h 172.26.72.162 -D "uid=test1,cn=users,cn=accounts,dc=ald,dc=demo" -w $Password "(objectClass=person)" uid krbPasswordExpiration | sed -re 's/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]+)Z/\3.\2.\1 \4:\5:\6/'
- Во вкладке Настройки указать требуемое расписание запуска скрипта, включить сбор статистики и результата. В свойствах добавить записи uid, krbPasswordExpiration;
- Назначить с помощью ассоциации созданную директиву на группу с компьютером, который будет выполнять поиск по каталогу (к примеру один из контроллеров LDAP);
Подготовка представления
До начала подготовки представления требуется дождаться выполнения настроенного скрипта. Убедиться в выполнении скрипта можно с помощью панели "Статистика" внутри элемента скрипта.
Для подготовки представления необходимо выполнить следующие действия:
- Узнать название сформированной Zodiac-ом таблицы с результатами выполнения скрипта.
Поскольку для отображения результатов выполнения каждого скрипта Zodiac формирует в базе данных соответствующую таблицу, предугадать заранее название данных таблицы невозможно.
Для определения названия таблицы необходимо выполнить следующие действия:
1.1 Авторизоваться под УЗ с правами администратора на компьютере, на который назначен скрипт;
1.2 Перейти в директорию /var/zodiac/agent/scrwd;
1.3 Обнаружить директорию с содержимым привязанного скрипта index.sh;
1.4 Первое число имени директории является приставкой к имени таблицы, которое в дальнейшем необходимо будет отредактировать в SQL-запросе.
Пример:
Есть скрипт, привязанный раннее к компьютеру с именем ETCD-PTR-03
Чтобы узнать приставку таблицы, созданной для сохранения результата выполнения скрипта, авторизуемся под УЗ администратора на данном компьютере и перейдём в указанную директорию.
Путем перебора обнаружим искомую директорию.
Для того, чтобы не перебирать вручную все директории, можно воспользоваться скриптом:
#!/bin/bash
# Перебираем все директории и поддиректории
find . -type d | while read dir; do
# Проверяем наличие файла index.sh в текущей директории
if [ -f "$dir/index.sh" ]; then
# Ищем слово ldapsearch в файле index.sh
if grep -q "ldapsearch" "$dir/index.sh"; then
# Если найдено, выводим название директории
echo "$dir"
fi
fi
done
Внутри скрипта потребуется указать искомое ключевое слово вместо ldapsearch и путь до директории, в которой производится поиск (если скрипт уже не находится в соответствующей директории).
В данном случае искомой приставкой является 26, т.е. названием таблицы будет являться dyn_tbl_script_26.
- В разделе Zodiac'а Представления создать новое представление с именем "Срок жизни пароля" со следующим SQL-запросом:
SELECT
dyn_tbl_script_X1.data ->> 'uid' AS uid,
(DATE_PART('day', ((dyn_tbl_script_X1.data ->> 'krbPasswordExpiration')::timestamp + interval 'X2') - NOW()))::integer AS remaining_days
FROM public.dyn_tbl_script_X1
ORDER BY id ASC
-
Внутри SQL-запроса заменить следующие приставки:
- X1 - число скрипта сбора данных в службе каталога ALD Pro;
- X2 - интервал сдвига времени по UTC (к примеру 3 hours для часового пояса МСК);
-
Перейти в подраздел Столбцы представления и выставить типы для следующих колонок:
- uid - String;
- remaining_days - Int.
-
Выставить для каждой колонки отображаемые имена (колонка Имя);
-
Сохранить созданное представление. В случае некорректной настройки появится предупреждение об ошибке.
Действия по применению
Для применения представления необходимо выполнить следующие действия:
- Открыть в веб-интерфейсе Zodiac'а раздел Представления;
- Открыть представление Срок жизни пароля;
- В случае необходимости при помощи фильтра выставить ограничения на соответствующие поля;
- Выбрать опцию Экспорт, задать имя файла;
- Получить файл-отчёт формата .xlsx.