Аудит параметров безопасности unix-подобных серверов посредством скриптов на языке Python

Авторы: Силаев Пётр Викторович, Куликова Инна Вячеславовна, 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. Аналогичным способом можно автоматизировать проверку и других параметров безопасности помимо тех, что перечислены в статье.

Комментарии закрыты