Сканирование конфигураций серверов и сетевых устройств: OpenSCAP, Lynis, Wazuh SCA

0
13
Обложка статьи: Сканирование конфигураций серверов и сетевых устройств: OpenSCAP, Lynis, Wazuh SCA

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

Если вы только настраиваете серверы под эталон, начните с базовой настройки Linux и чек-листа hardening. Здесь про то, как убедиться, что настройка не расползается со временем.

Шаг 1. Составьте перечень критичных устройств

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

Тип устройства Эталон Чем проверять
Linux-серверы CIS Benchmark для вашего дистрибутива или требования ФСТЭК для Astra и РЕД ОС OpenSCAP, Lynis, Wazuh SCA
Windows-серверы и рабочие станции CIS Benchmark, Security Baselines Microsoft Wazuh SCA, Microsoft Security Compliance Toolkit, PowerShell
Сетевые устройства (коммутаторы, маршрутизаторы, МЭ) Свой список требований по вендору: CIS для Cisco и Juniper, рекомендации производителя Выгрузка конфигурации и скрипт проверки правил
Контейнеры и образы CIS Docker Benchmark, правила Dockerfile Trivy

Для каждого типа заранее решите, какой версией эталона вы пользуетесь, и запишите её в карточке: «CIS Debian 12 v1.1, профиль Level 1 Server». Эталоны обновляются, а сравнение месяца с месяцем осмысленно только при одной версии.

Шаг 2. Linux: OpenSCAP

OpenSCAP проверяет систему по профилям из пакета SCAP Security Guide и выдаёт HTML-отчёт с долей пройденных правил. Пример для RHEL-семейства (Rocky, Alma); для Debian и Ubuntu названия пакетов и файлов отличаются, смотрите документацию дистрибутива.

sudo dnf install openscap-scanner scap-security-guide
ls /usr/share/xml/scap/ssg/content/ | grep rl9      # файл данных под вашу ОС

sudo oscap xccdf eval \
  --profile xccdf_org.ssgproject.content_profile_cis_server_l1 \
  --results /var/tmp/oscap-results.xml \
  --report  /var/tmp/oscap-report.html \
  /usr/share/xml/scap/ssg/content/ssg-rl9-ds.xml

Ожидаемо: в консоли список правил со статусом pass, fail, notapplicable; в HTML-отчёте общая доля и разбор по каждому правилу с описанием, что именно поправить. Команда eval только читает систему и ничего не меняет. Отдельный режим --remediate применяет исправления автоматически: на боевом сервере без тестирования его не используйте.

Подробный разбор профиля для Rocky: hardening Rocky Linux с OpenSCAP.

Шаг 3. Linux: Lynis для быстрой оценки

sudo lynis audit system --quick
grep -E "hardening_index|warning\[\]|suggestion\[\]" /var/log/lynis-report.dat | head

Ожидаемо: индекс защищённости (число 0–100), предупреждения и рекомендации. Lynis проще OpenSCAP и подходит для первого среза и для сравнения серверов между собой, но он не привязан к конкретному эталону вроде CIS. Практика: Lynis как быстрый индикатор, OpenSCAP или Wazuh SCA как основа отчётности. Подробнее: Lynis: аудит безопасности.

Шаг 4. Wazuh SCA: проверка по расписанию на всём парке

Если у вас уже развёрнут Wazuh, модуль SCA (Security Configuration Assessment) делает то же, что OpenSCAP, но на всех агентах сразу и с хранением истории. Политики лежат на агенте в каталоге /var/ossec/ruleset/sca. Включение и периодичность задаются в конфигурации агента:

<sca>
  <enabled>yes</enabled>
  <scan_on_start>yes</scan_on_start>
  <interval>12h</interval>
</sca>

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

Результаты можно получать и через API Wazuh для отчёта:

TOKEN=$(curl -sk -u wazuh-wui:ПАРОЛЬ -X POST "https://WAZUH_SERVER:55000/security/user/authenticate?raw=true")
curl -sk -H "Authorization: Bearer $TOKEN" "https://WAZUH_SERVER:55000/sca/001"

Ожидаемо: JSON со списком политик агента 001 и полями pass, fail, score. Имя пользователя и пароль берите из менеджера секретов, не вписывайте в скрипты.

Шаг 5. Windows

Для Windows-серверов и рабочих станций самый простой путь — тот же Wazuh SCA с политиками CIS для вашей версии Windows. Альтернатива без Wazuh: Microsoft Security Compliance Toolkit содержит эталонные наборы групповых политик (Security Baselines) и утилиту Policy Analyzer, которая сравнивает ваши политики с эталоном. Для разовых проверок помогут команды PowerShell:

# длина пароля и блокировка из локальной политики
net accounts

# состояние межсетевого экрана Windows по профилям
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction

# включён ли SMBv1
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol

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

Шаг 6. Сетевое оборудование

Для коммутаторов и маршрутизаторов готового бесплатного «OpenSCAP» нет, но задача решается просто. Выгрузите конфигурации (по расписанию, например Oxidized или собственным скриптом), положите их под контроль версий и проверяйте набором правил: какие строки обязаны быть, а каких быть не должно. Пример минимального скрипта:

#!/usr/bin/env python3
"""Проверка конфигураций сетевых устройств по правилам.
Использование: check_net.py КАТАЛОГ_С_КОНФИГАМИ ПРАВИЛА.json
Формат правил: {"must": ["service password-encryption", "ntp server"], "forbid": ["transport input telnet", "snmp-server community public"]}"""
import json
import pathlib
import sys

rules = json.load(open(sys.argv[2], encoding='utf-8'))
fail = 0
for conf in sorted(pathlib.Path(sys.argv[1]).glob('*.cfg')):
    text = conf.read_text(encoding='utf-8', errors='replace')
    miss = [r for r in rules['must'] if r not in text]
    bad = [r for r in rules['forbid'] if r in text]
    status = 'OK' if not (miss or bad) else 'ОТКЛОНЕНИЯ'
    print(f'{conf.name}: {status}')
    for r in miss:
        print(f'   нет обязательной строки: {r}')
    for r in bad:
        print(f'   найдена запрещённая строка: {r}')
    fail += bool(miss or bad)
sys.exit(1 if fail else 0)

Ожидаемо: по каждому файлу строка «OK» или список отклонений, код выхода 1 при отклонениях. Правила пишите под свой вендор и свою политику: перечень строк выше условный. Не храните в каталоге конфигураций пароли в открытом виде и не отдавайте его широкому кругу: выгрузки содержат ключи и общие секреты.

Контур проверки конфигурацийПеречень критичных устройств, эталон, автоматическая проверка, отчёт с долей соответствия, заявка на отклонение.Переченькритичныесерверысетевыеустройствавладелец итипЭталонCIS или ФСТЭКсвой профильверсия и датаПроверкаOpenSCAP,LynisWazuh SCAскрипт длясетиОтчётдоляпройденныхсписокотклоненийсравнение смесяцемРешениеисправитьилиисключениесо срокомРаз в месяц и после любого изменения конфигурации: отчёт сравнивают спредыдущим, а не только читают.
Отклонение от эталона так же управляется, как уязвимость: владелец, срок, подтверждение.

Шаг 7. Ежемесячный отчёт и отклонения

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

Группа Эталон Узлов Доля пройденных Отклонений высокой важности Динамика
Linux-серверы CIS Debian 12 L1 14 86% 3 +2 п.п.
Windows-серверы CIS Windows Server 2022 L1 5 79% 6 без изменений
Сетевые устройства Внутренние правила v2 9 — 2 −1

Цифры в таблице условные. Отклонение разберите так же, как уязвимость: владелец, срок, подтверждение повторной проверкой. Если исправлять нельзя (например, правило ломает старое приложение), оформите исключение с компенсирующей мерой и датой пересмотра. Не гонитесь за 100%: часть правил эталона не применима, и честное «неприменимо с обоснованием» лучше формально выставленного «пройдено».

Какие артефакты хранить

Что хранить Что показывает
Перечень критичных устройств с датой и версией эталона Охват проверки определён
Отчёты OpenSCAP, Wazuh SCA или скрипта за последние месяцы Проверка проводится регулярно
Расписание: интервал SCA, задание cron для сетевых проверок Периодичность настроена, а не делается по памяти
Политика настройки и управления конфигурациями Откуда взят эталон и кто утверждает отклонения
Покрытие: доля устройств, охваченных проверкой Все критичные устройства, а затем все остальные, входят в проверку

Диагностика

Симптом Причина и что делать
OpenSCAP показывает много notapplicable Выбран профиль не под вашу ОС или файл данных от другой версии. Проверьте имя файла ssg-*-ds.xml
В Wazuh SCA нет политики для узла Для ОС или её версии политики не выпущено. Проверяйте этот узел через OpenSCAP или свою проверку
Доля соответствия упала на 20 п.п. Вышла новая версия эталона или изменился профиль. Не сравнивайте результаты разных версий
Исправили отклонение, на следующий месяц оно вернулось Конфигурацию правят вручную, а централизованное средство возвращает старое. Исправляйте в Ansible или GPO, а не на узле
Конфигурации сетевых устройств устарели Выгрузка не по расписанию. Проверьте задание и доступ к устройствам

Где это в модели зрелости

Материал относится к направлению «Управление уязвимостями» (хаб: уязвимости, карта: карта зрелости). На втором уровне конфигурации критичных устройств сканируются регулярно специальными средствами; на третьем проверка охватывает все конечные и сетевые устройства и идёт не реже раза в месяц. Смежные направления: безопасность конечных устройств и сетевая безопасность, где определяются сами эталоны.

Как проверить

  1. Для каждого критичного устройства из перечня есть отчёт проверки за последний месяц.
  2. Доля пройденных правил в отчётах сравнима: используется одна версия эталона.
  3. Для трёх случайных отклонений есть заявка с владельцем и сроком либо исключение с датой.
  4. Расписание реально работает: в журнале cron или в Wazuh видны запуски за последние два интервала.

Источники

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