Короткий ответ

Hardening Windows Server — это проверяемый эталон: Microsoft Security Baseline (Security Compliance Toolkit) или CIS Benchmark под вашу версию (2019 ≠ 2022 ≠ 2025), пилот, сравнение с ролью (DC ≠ IIS ≠ SQL), исключения с обоснованием. Не импортируйте чужой LGPO с GitHub на DC01. Не отключайте firewall, Defender, WinRM и SMB «чтобы соответствовало пункту», который вы не читали. Сначала чеклист рисков, потом пакет политик.

Windows 11 23H2/24H2 имеет свой baseline — не вешайте Server Member GPO на рабочие станции без отдельного эталона.

Симптомы и как отличить

  • Аудит: 200 CIS fail, нет владельца исключений.
  • После «hardening скрипта» нет RDP/LDAP/backup.
  • Firewall off или Defender off как «пункт выполнен наоборот».
  • На всех серверах одна GPO, включая DC и print-сервер.
ЗадачаОтдельная статья, не весь CIS
LAPSлокальный админ
SMBv1SMBv1
TLS/шифрыTLS, cipher
WinRMWinRM

Возможные причины

  1. Нет эталона, каждый админ крутит Local Security Policy.
  2. Импорт MS Security Guide на DC без DC-специфичного baseline.
  3. CIS Level 2 на файловый сервер в первый день.
  4. Скрипт выключает службы, которые нужны DFS/backup.
  5. Нет отката: GPO Enforced поверх, backup не снимали.

Диагностика

На пилоте SRV-APP01 / WS-042 если hardening станций:

New-Item C:\Temp\baseline-before -ItemType Directory -Force
Get-NetFirewallProfile | Format-Table | Out-File C:\Temp\baseline-before\fw.txt
Get-MpComputerStatus | Out-File C:\Temp\baseline-before\mp.txt
Get-SmbServerConfiguration | Out-File C:\Temp\baseline-before\smb.txt
auditpol /get /category:* > C:\Temp\baseline-before\auditpol.txt
Get-LocalGroupMember Administrators | Out-File C:\Temp\baseline-before\admins.txt
Get-TlsCipherSuite | Select-Object Name | Out-File C:\Temp\baseline-before\ciphers.txt
secedit /export /cfg C:\Temp\baseline-before\secpol.inf
gpresult /h C:\Temp\baseline-before\gp.html /f

Роли: Get-WindowsFeature | Where Installed. Консоль гипервизора открыта. Снимок VM.

Решение

Пакет 0. Организационный

  1. Скачайте Microsoft Security Compliance Toolkit для вашей ОС (GPOs Baseline) с сайта Microsoft, не зеркало 2018 года.
  2. Либо CIS Build Kit, если лицензия CIS есть — всё равно читайте описание каждого правила.
  3. Разделите GPO: Member Server / Domain Controller / Windows 11. Не одна.
  4. Пилот: 1 member server с типичной ролью.

Пакет 1. Защита, которую нельзя выключать

  • Все профили firewall on + точечные allow ролей.
  • Defender on, базы живые.
  • Нет SMBv1, подпись SMB по совместимости.
  • LAPS, нет общего локального пароля.
  • RDP не на WAN.

Это «обязательный минимум» даже если CIS ещё не импортирован.

Пакет 2. Импорт baseline на пилот OU

Backup GPO:

Backup-GPO -Name 'MS-Baseline-Member-Pilot' -Path '\\fs01.contoso.example\gpo-backup' -ErrorAction SilentlyContinue

Если GPO ещё нет — создайте, импортируйте из SCT (LGPO.exe / Import-GPO из пакета). Линк на OU пилота, не на domain root.

Пакет 3. Исключения ролей

DC: используйте DC baseline, не member. SQL: не отключайте SeLockMemory если это осознанная настройка SQL, сверяйте. IIS: TLS/cipher пакеты отдельно. Print: драйверы и Point-and-Print — не Level 2 в первый день.

Запишите: Rule ID → Exclude → почему → дата пересмотра.

Пакет 4. Аудит и админ-контур

Включите логоны, группы, PowerShell, WinRM HTTPS, admin shares. User Rights: Debug не Domain Users. Deny DA логон на workstation OU.

Пакет 5. Расширение

Когда пилот прожил неделю: следующие 5 серверов той же роли. Другая роль — новый пилот. CIS Level 2 — только если Level 1 стабилен.

Зафиксируйте в contoso.example матрицу: роль сервера → какая GPO baseline → какие исключения. Без матрицы через полгода никто не знает, почему на print-сервере NTLM deny, а на FS — нет. Пилот держите в отдельной OU, не Enforced на domain root. После импорта SCT прогоните тот же срез, что в статье про базовые риски: firewall, Defender, 3389, SMBv1, LAPS. Если baseline выключил WinRM HTTP, сразу должен быть готов HTTPS с jump. На DC01 применяйте только DC-пакет и только после member-пилота. Документ исключений без даты пересмотра — это вечное ослабление.

Снимок C:\Temp\baseline-before на пилоте сравните с after по firewall, Defender, SMB1 и auditpol — это критерий приёмки пакета, не «GPO прилинкована». Если diff пустой, baseline не применился.

Как проверить, что проблема устранена

Повторите съёмку baseline-after. Скрипт сравнения (хотя бы diff файлов). Функциональные тесты: логон, шара, backup job, мониторинг, RDP с jump. Сканер: критичные находки периметра закрыты; остаток — документированные исключения, не «не смотрели».

Get-NetFirewallProfile Enabled True, RealTimeProtectionEnabled True.

Если не помогло

  • Сервис отвалился: найдите правило в gpresult/rsop, исключите, не снимайте весь baseline.
  • LGPO из другой build (21H2 на 24H2) — возьмите пакет под версию.
  • Конфликт двух baseline GPO Enforced.
  • Сторонний «optimizer» снова выключает службы — удалите его.

Профилактика

  • Эталон в git/backup GPO с датой.
  • Новые серверы сразу в OU с member baseline после роли.
  • Квартальный review исключений.
  • SCT обновляется — планируйте дельту, не «импорт раз в 2019».
  • Мониторинг отклонений: firewall/Defender/SMBv1.

FAQ

CIS или Microsoft Baseline?

Microsoft ближе к продукту и ADMX. CIS строже и с платным артефактом. Для SMB часто SCT + наш минимум. Главное — один выбранный эталон.

Можно ли hardening без GPO, только Local Policy?

Для 3 серверов. Для contoso.example — GPO, иначе рассинхрон.

Level 1 vs Level 2 CIS

Level 1 — практичный старт. Level 2 ломает удобства (часто RDP/общие ресурсы). Не начинайте с 2.

Нужен ли AppLocker/WDAC в «базовом»?

Это уже следующий уровень. В базовый пакет не тащите WDAC на ERP без проекта.

Hardening DC первым?

Нет. Member pilot, потом DC baseline на вторичном DC, потом PDC-эмулятор.

Windows 11 в той же GPO, что Server?

Нет. Разные шаблоны SCT. Станции — своя OU.