Авторы: Силаев Пётр Викторович, Куликова Инна Вячеславовна, IT-аудиторы
Задача
Автоматизация проверки параметров безопасности для оптимизации затраченного рабочего времени с помощью языка Python для выгруженных с сервера конфигурационных файлов в текстовом формате для unix-подобного семейства серверов без прямого доступа к конфигурированию файлов на сервере (доступ к серверу только у администраторов) и рабочая машина без установленной подсистемы Windows для Linux.
Предисловие
ИТ аудиторы (как внешние, так и внутренние), а также специалисты ИБ регулярно проводят проверки информационных систем организаций, в частности выполняется проверка параметров безопасности серверов. Проблема заключается в том, что у перечисленных специалистов чаще всего нет доступа к серверу, просмотру и конфигурации файлов сервера. Администраторы серверов выгружают требуемые файлы полностью, без срезов части информации для полного охвата проверки ИТ аудитором/специалистом ИБ. В целях безопасности в организации доступ к серверам имеют только администраторы и сотрудники, которые связаны с работой в определенной системе.
Также в целях безопасности на рабочих компьютерах аудиторов/ИБ специалистов обычно не установлена подсистема WSL, с ее помощью можно обрабатывать файлы unix-подобных серверов командами grep и т.п.
До внедрения метода автоматизации, описанного в этой статье, для проверки параметров безопасности использовалась связка программ MS Office и Блокнот/Notepad++. Также должен быть файл-отчет о проведенных мероприятиях проверки с историей действий, выполнялось это в программе Excel из пакета MS Office, что занимало достаточно большое количество времени.
В качестве кейса будем рассматривать проверку файла login.defs, выгруженного c сервера под управлением ОС RedHat.
Пояснение
Файл /etc/login.defs содержит настройки подсистемы теневых паролей (shadow password suite). Этот файл является обязательным. Отсутствие данного файла не повлияет на работу, но, вероятно, приведёт к выполнению нежелаемых операций.
Файл представляет собой обычный текстовый файл. Каждая строка описывает один параметр настройки. Строки состоят из названия параметра и его значения, которые разделяются пробельным символом. Пустые строки и комментарии игнорируются.
Комментарии начинаются со знака «#», который должен быть первым непробельным символом в строке.
Анализ
Ниже представлено содержимое файла, открытого с помощью Notepad++, видим, что файл занимает 72 строки:
Нас интересуют следующие параметры безопасности:
Параметр |
Назначение |
Дефолтное значение |
Эталонное значение |
PASS_MAX_DAYS |
сколько дней пароль активен до истечения срока его действия |
99999 |
30 |
PASS_MIN_DAYS |
сколько дней пароль должен быть активен, прежде чем пользователь сможет его изменить |
0 |
5 |
PASS_MIN_LEN |
минимальное количество символов в пароле |
5 |
6 |
PASS_WARN_AGE |
количество дней, в течение которых пользователю выдается предупреждение до приближающегося истечения срока действия пароля |
7 |
5 |
Если какой-либо из данных параметров не задан или закомментирован, то он принимает значение равное -1, т.е. возможность ограничения отключается.
Процесс ручной проверки вышеперечисленных параметров (до автоматизации):
Для оптимизации затраченного времени будем применять алгоритм скрипта, написанного на языке Python для анализа файла «login.defs», поиска и сравнения параметров безопасности:
Содержимое созданных файлов (временного файла «data_login.txt» и файла- отчета «report_login.txt»:
Результаты затраченного времени:
Этапы ручного метода |
Затраченное время, минуты |
Этапы работы скрипта |
Затраченное время, минуты |
Открытие файла в Notepad++ |
0,1 |
Перенос файла в папку для работы скрипта |
0,1 |
Перенос содержимого в Excel с выравниванием по столбцу |
1 |
Отсутствует |
|
Анализ параметров безопасности в Excel: ручной поиск параметров, ручное сравнение с эталонными значениями |
13 |
Запуск скрипта и получение отчета |
0,1 |
Итого: |
14,1 |
|
0,2 |
Результат автоматизации процесса сокращает время проведения аудита файла параметров безопасности сервера в 70 раз! Одно дело проверить параметры безопасности для одного сервера (это можно выполнить и без автоматизации), другое для 50. Аналогичным способом можно автоматизировать проверку и других параметров безопасности помимо тех, что перечислены в статье.