Приведение серверов Linux и Windows к стандартам CIS с Ansible

Серверы обрастают правками, и фактическая конфигурация всё дальше расходится с политикой безопасности. Мы под ключ приводим Linux и Windows к единому профилю, автоматизируем проверки и передаём регламенты команде — отклонений от эталона становится в разы меньше, а подтверждение соответствия занимает часы вместо недель.
Часто задаваемые вопросы

Hardening ОС: где конфигурация расходится с политикой

Серверы редко разворачивают из одного образа. Часть машин собрана по эталонному шаблону, часть — из образов прошлых релизов, отдельные узлы дописаны вручную под конкретную задачу. Поверх этого годами копятся правки: отключили требования к сложности паролей, чтобы не мешали автоматической выкладке, ослабили правила фильтрации под интеграцию, расширили права вместо настройки служебной учётной записи.

Так и появляется расхождение конфигураций. Базовая политика безопасности зафиксирована в регламенте, но фактическое состояние хоста ей не соответствует — и проверить это без сплошного прохода по машинам нечем. Неконтролируемые привилегии устроены так же: права раздают вручную под разовую задачу, обратно почти никогда не отзывают, и точного ответа, у кого они есть сейчас, нет ни у администратора, ни у службы поддержки.

Настройка безопасности серверов в таком режиме держится на памяти конкретного инженера. Первая же внешняя проверка или аудит выявляет десятки отклонений на каждой машине: лишние сетевые службы, учётные записи без срока действия, демоны, запущенные от избыточных прав. Разбор затягивается на недели, потому что отклонение мало закрыть — нужно понять, чем оно было продиктовано и что сломается в проде после правки.

Hardening ОС — это не разовая акция, а режим, в котором состояние проверяемо в любой момент. Разбираем, как это закрывается: единый стандарт на все машины, декларируемое применение настроек через роли автоматизации и регулярная сверка факта с политикой.

Что даёт единый профиль безопасности серверов

Единый профиль безопасности — это эталонный набор настроек: правила аутентификации и сроки жизни паролей, права на каталоги, состав запущенных служб, политики журналирования и фильтрации сетевых портов. За основу берём требования CIS — уровни 1 и 2, из которых явно вычёркиваем неприменимое к роли узла. Без этого шага профиль ломает рабочие приложения, и его отключают на первой же неделе.

Стандартизация серверов убирает ручной чек-лист из вывода узла. Набор ролей и сценариев Ansible применяется к парку за один прогон, состояние каждого сервера сверяется с эталоном, расхождения выводятся списком. Срок вывода сервера сокращается с нескольких дней согласований и ручной настройки до десятков минут, а приёмка нового инженера сводится к одному вопросу: сценарий применён или нет.

Отсюда — устранённый класс отказов, а не единичный инцидент. Пока узлы настроены одинаково, сбой воспроизводится на тестовом стенде и лечится правкой в одном месте профиля, а не поиском отличий между «похожими» серверами. Из эталона исчезают лишние службы, гостевые учётки и устаревшие алгоритмы шифрования — типовые причины отказов при проверках просто не проходят накат.

Готовность к проверке перестаёт быть авралом. Отчёт об отклонениях снимается тем же сценарием в режиме проверки, без изменений на серверах: аудит получает список фактов, а не обещания. Доля узлов, отклонившихся от эталона, и время вывода сервера становятся рабочими метриками — по ним видно, держится ли парк в эталонном состоянии между проверками.

Способы приведения ОС к стандарту: сравнение подходов

Перечень требований стандарта одинаков для всех, а способы его достижения различаются радикально — и по трудозатратам, и по тому, насколько результат вообще можно доказать аудитору. Ручная настройка серверов по чек-листу закрывает пункты формально, но состояние узла живёт своей жизнью: кто-то поправил параметр, обновился пакет — и соответствие потеряно без всякого сигнала.

Четыре варианта на практике

Вариант Когда подходит Ограничения
Ручная настройка по перечню требований Единичные узлы, стенды, разовые эксперименты Дрейф конфигурации, результат не воспроизводится, аудит держится на памяти исполнителя
Эталонный образ системы Одинаковые серверы разворачиваются с нуля, узлы заменяемы Изменение требует пересборки и перевыката, уже работающий парк образа не касается
Декларативное описание состояния ролями (Ansible) Парк от десятков узлов, нужна повторяемость и откат Требует дисциплины: инвентарь, идемпотентные задачи, версионирование ролей
Сканеры проверки соответствия без автоматизации изменений Нужна отчётность и контроль отклонений Показывают расхождения, но не устраняют их; отчёт фиксирует срез, а не состояние

На практике сильнее всего работает связка: декларативные роли приводят узел к эталону, сканер подтверждает результат и остаётся регулярной проверкой на дрейф. Эталонный образ дополняет её для новых машин, а ручная настройка остаётся только там, где автоматизация дороже самого узла.

Этапы внедрения: от аудита до передачи регламентов

Стандарт CIS — это не один набор настроек, а несколько уровней строгости, и применять его вслепую нельзя: часть требований затрагивает отлаженные интеграции и нестандартные приложения. Поэтому работу ведём последовательно, фиксируя состояние контура до и после каждого шага.

  1. Инвентаризация серверов: собираем роли узлов, назначение, сетевые сегменты, ответственных; отмечаем, где политика применима целиком, а где нужны исключения.
  2. Схема профилей: раскладываем парк по классам — базовый узел, веб-сервер, СУБД, контроллер домена — и каждому задаём свой уровень строгости.
  3. Подготовка описаний: пишем идемпотентные роли Ansible с задачами, разбитыми по тегам, чтобы прогонять и профиль целиком, и отдельное правило.
  4. Проверка на стенде: разворачиваем копию узла, прогоняем профиль, смотрим, что ломается — журналирование, монтирование, служебные учётные записи.
  5. Включение на боевом контуре: группами по несколько узлов, сперва в режиме проверки без изменений; откат держим наготове и выполняем одной командой.
  6. Приёмка: сверяем отчёт по каждому правилу с целевым уровнем, фиксируем обоснованные исключения, проверяем, что состояние сохраняется после перезагрузки.
  7. Передача документации: регламенты изменений, описание ролей и профилей, порядок подключения нового узла и ответственный за пересмотр политики.

На выходе получается не разовая настройка, а повторяемый процесс: новый сервер приводится к стандарту тем же набором ролей, а отклонения видны в отчёте, а не всплывают при первой же проверке.

Артефакты на выходе: конфигурации, схемы, регламенты

После сдачи проекта у вашей команды остаются не разовые правки на серверах, а воспроизводимый эталон: описания настроек, по которым новая машина приводится к тому же состоянию одной командой. Ниже — перечень артефактов, которые мы передаём с работами, каждый в виде, пригодном для правок без нашего участия.

  • Профили hardening. Разложенные по ролям описания настроек под Linux и Windows: параметры ядра и сетевого стека, состав служб, политики паролей и блокировок, правила журналирования. У каждого пункта — привязка к CIS и пометка, какие унаследованные приложения от него страдают.
  • Политики доступа. Вход по ключам и сертификатам, запрет прямого входа под служебными учётными записями, ограничение повышения привилегий, сроки жизни сессий.
  • Схемы взаимодействия узлов. Карта: что с чем общается, по каким портам, где точки управления и доверительные отношения, какие каналы шифруются.
  • Матрица разграничения ролей. Кто что может — читать конфигурации, применять профили, править исключения. Право менять эталон отделено от права его применять.
  • Регламент внесения изменений. Заявка, обоснование, проверка на тестовом стенде, применение, откат. Там же порядок пересмотра эталона: периодичность и ответственный.
  • Отчёты и исключения. Результаты проверок до и после, список осознанно отключённых правил с обоснованием и условиями, при которых их включают.
  • Порядок отката. Что делать, если после применения профиля узел теряет доступность или сервис не поднимается.

Кейс: сокращение отклонений от эталона в шесть раз

Парк заказчика — около трёхсот узлов: несколько семейств Linux и разные ветки Windows, часть машин в облаке, часть на своём железе. Настройки правили вручную по ходу задач, единого эталонного профиля не существовало, и аудит перед релизом показывал в среднем 47 отклонений на узел — от прав служб и лишних учётных записей до открытых наружу портов. Ввод новой машины в промышленную эксплуатацию занимал двое суток и всё равно пропускал расхождения с настройками соседних узлов.

Как приводили к эталону

Собрали эталон в виде ролей Ansible: общие требования вынесли в переменные, а различия между семействами систем — в отдельные наборы задач, чтобы один профиль соответствия покрывал весь смешанный парк. Каждое правило идемпотентно и сначала прогоняется в режиме проверки: видно, что именно изменится на конкретном узле, до применения. Исключения не замалчиваются, а живут отдельным списком с обоснованием, владельцем и сроком пересмотра — иначе эталон быстро расходится с реальностью.

Метрики до и после

После трёх циклов приведения отклонений на узел осталось 8, доля машин, проходящих проверку с первого раза, выросла с 31% до 94%. Сборка нового узла сократилась с двух суток до 35 минут: он поднимается из шаблона и сразу приводится к эталону, ручные правки после установки ушли. Перед выпуском больше не нужна отдельная фаза подготовки — проверка идёт тем же набором правил, что и настройка, а расхождения автоматически попадают в отчёт.

Откат остаётся управляемым: перед изменениями снимается состояние конфигурации, поэтому возврат на предыдущий вариант занимает минуты, а не часы разбора. Теперь разберём, как этот же подход переносится на парк с нестандартным и устаревшим железом.

Чем отличается hardening ОС Windows от Linux

Разница начинается с модели прав доступа. В Windows права привязаны к идентификатору учётной записи: доступ к объекту описывает список управления доступом, привилегии выдаются группам, а наследование задаёт иерархия домена. В Linux то же ограничение собирается из трёх слоёв — прав владельца и группы на файл, отдельных привилегий на запуск от суперпользователя и мандатного контроля, который сужает возможности процесса даже после успешного входа.

Службы и журналирование устроены иначе. В Windows фоновые процессы собраны в едином диспетчере служб, у каждого своя учётная запись, а события идут в общий журнал с числовыми кодами и категориями аудита. В Linux это независимые демоны и юниты с записью в системный журнал или в подсистему аудита ядра. Смысл событий совпадает, но пороги и правила корреляции для платформ строят раздельно.

Применение настроек тоже расходится. Windows тянет конфигурацию из групповых политик, которые наследуются по уровням: проверять нужно эффективную политику, а не только заданное значение. Linux читает параметры из конфигурационных файлов, и здесь работает декларативный подход — роль описывает конечное состояние, повторный прогон ничего не ломает.

Эталон при этом остаётся общим. Требования к парольной политике, блокировке после серии неудачных входов, аудиту входов и изменений прав, минимальному набору служб и разделению привилегий формулируются одинаково — различаются только реализация и способ проверки.

Мы держим один профиль с двумя уровнями строгости, а под каждую систему пишем свою реализацию приведения к эталону. Регулярный прогон даёт отчёт о расхождениях: что и на каком узле ушло от эталона. Так разнородный парк — Linux и Windows в одной инфраструктуре — управляется единым регламентом, а не двумя несвязанными наборами инструкций.

Частые технические сомнения перед стартом

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

Внедрение потребует остановки сервисов?

Идём от замера к правкам. Сначала инвентаризация и проверка состояния в режиме только чтения — конфигурации не меняются, сервисы не перезапускаются. Затем изменения применяются по группам с ограничением одновременности, а перезагрузка выполняется в согласованном окне и по одному узлу.

Проверки дают ложные срабатывания — что с ними делать?

Часть требований эталона неприменима: например, запрет модулей ядра для сервиса, который без них не работает. Такие пункты не отключают молча — оформляем исключение с обоснованием, ролью и узлом. Исключение живёт в том же описании конфигурации и не теряется при следующем прогоне.

Унаследованные настройки конфликтуют со стандартом?

Описываем их как явные отклонения с причиной и владельцем, а не переписываем вслепую. Приоритет — работоспособность приложения: эталон сначала применяется на тестовом контуре, расхождения разбираются, и только потом правило уходит в прод.

Кто поддерживает эталон после обновлений ОС?

Эталон хранится как код в репозитории с историей правок и проверкой в конвейере — обновление это правка одного файла, а не ручной проход по серверам. Проверка соответствия идёт по расписанию и показывает расхождения по каждому узлу; правила под новые версии ОС добавляются без остановки работы.

Обсудим задачу: какие данные нужны для оценки

Оценка приведения парка к профилю CIS зависит не от числа серверов, а от разнородности окружения. Пока не видно, сколько разных веток дистрибутивов, какие роли несут узлы и что уже описано в существующих ролях, любая цифра по срокам будет гаданием. Поэтому до оценки собираем исходные данные об окружении — из них вырастает план работ с разбивкой по группам.

  • Инвентарь узлов: семейства и ветки Linux, редакции Windows, число серверов и шаблонов, из которых они разворачиваются.
  • Роли и назначение: веб-слой, СУБД, брокеры, контроллеры домена — от этого зависят наборы правил и допустимые исключения.
  • Состояние автоматизации: есть ли свой инвентарь и роли, чем наполняется список узлов — статическим файлом или запросом к системе учёта конфигураций.
  • Профиль проверки: базовый или усиленный уровень CIS, применимые разделы, правила, которые нельзя включать из-за устаревших приложений.
  • Доступы: служебная учётная запись с повышением прав, способ подключения к парку, промежуточный узел, порядок ротации ключей.
  • Окна и откат: можно ли менять конфигурацию по группам, где перезапуск служб требует согласования, доступны ли снимки перед прогоном.
  • Проверка результата: каким сканером подтверждаем соответствие и в каком виде нужен отчёт для аудита.

Дальше обсуждаем задачу по существу: сверяем расхождения в данных, уточняем спорные правила и возвращаемся с оценкой сроков и планом работ — сначала пилотная группа, затем остальной парк.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142