Приведення серверів 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