Сканирование конфигураций серверов и сетевых устройств: 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 при отклонениях. Правила пишите под свой вендор и свою политику: перечень строк выше условный. Не храните в каталоге конфигураций пароли в открытом виде и не отдавайте его широкому кругу: выгрузки содержат ключи и общие секреты.
Шаг 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, а не на узле |
| Конфигурации сетевых устройств устарели | Выгрузка не по расписанию. Проверьте задание и доступ к устройствам |
Где это в модели зрелости
Материал относится к направлению «Управление уязвимостями» (хаб: уязвимости, карта: карта зрелости). На втором уровне конфигурации критичных устройств сканируются регулярно специальными средствами; на третьем проверка охватывает все конечные и сетевые устройства и идёт не реже раза в месяц. Смежные направления: безопасность конечных устройств и сетевая безопасность, где определяются сами эталоны.
Как проверить
- Для каждого критичного устройства из перечня есть отчёт проверки за последний месяц.
- Доля пройденных правил в отчётах сравнима: используется одна версия эталона.
- Для трёх случайных отклонений есть заявка с владельцем и сроком либо исключение с датой.
- Расписание реально работает: в журнале cron или в Wazuh видны запуски за последние два интервала.
Источники
- OpenSCAP, руководство пользователя: open-scap.org.
- Wazuh, модуль Security Configuration Assessment: documentation.wazuh.com.
- CIS Benchmarks: cisecurity.org/cis-benchmarks.
- Microsoft Security Compliance Toolkit: learn.microsoft.com.
- Lynis, документация: cisofy.com.


















