· 14 мин чтения · Семёнов Е.С., руководитель ITfresh

Защита Active Directory от взлома: 12 шагов для малого бизнеса

За 15 лет в IT-аутсорсинге я разворачивал и спасал десятки доменов в офисах от 10 до 200 рабочих мест. И почти всегда катастрофа начиналась одинаково: бухгалтер открыла письмо «акт сверки.zip», шифровальщик за 40 минут прошёл по всем сетевым шарам, потому что у бухгалтера были права администратора, а пароль локального админа на всех ПК был один и тот же. Эта статья — концентрат того, что мы в ITfresh внедряем у новых клиентов в первые две недели обслуживания. Без идеализма, без покупки дорогих решений — только то, что реально работает в офисе на 30-50 человек.

Почему «у нас маленькая компания, нас не взломают» — миф 2026 года

Современные шифровальщики не ищут жертв вручную. Это конвейер: ботнет сканирует интернет на открытые RDP, фишинговые рассылки уходят миллионами, IAB (initial access broker) продаёт доступ к вашей сети за 200 долларов любому желающему. Им всё равно, оборот у вас 10 миллиардов или 30 миллионов в год. Шифрование 25 рабочих станций и сервера 1С парализует бизнес на неделю минимум, а средний ущерб для среднего и малого бизнеса в Москве по нашим наблюдениям за 2025 год — от 1.5 до 8 миллионов рублей с учётом простоя.

Хорошая новость: 90% этих инцидентов предотвращаются базовым hardening, который я опишу ниже. Это не CIS Benchmark Level 2 со 400 пунктами — это 12 шагов, которые реально внедрить силами одного инженера за две-три недели.

Шаг 1. Аудит того, что есть, без иллюзий

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

Get-ADGroupMember -Identity "Domain Admins" -Recursive |
  Select-Object Name, SamAccountName, distinguishedName |
  Export-Csv C:\audit\domain_admins.csv -NoTypeInformation -Encoding UTF8

Get-ADGroupMember -Identity "Enterprise Admins" -Recursive |
  Select-Object Name, SamAccountName |
  Export-Csv C:\audit\enterprise_admins.csv -NoTypeInformation -Encoding UTF8

Get-ADGroupMember -Identity "Schema Admins" -Recursive |
  Select-Object Name, SamAccountName |
  Export-Csv C:\audit\schema_admins.csv -NoTypeInformation -Encoding UTF8

В нормальном офисе на 30 человек в Domain Admins должно быть две учётки: одна моя инженерная и одна резервная break-glass с длинным паролем в сейфе. Если я нахожу там бухгалтера Марию Ивановну, потому что «ей надо было разово что-то установить в 2021 году» — это первая дыра, которую я закрываю.

Второй скрипт ищет неактивные учётки и пользователей, у которых пароль не меняется годами:

Get-ADUser -Filter * -Properties LastLogonDate, PasswordLastSet, Enabled |
  Where-Object { $_.Enabled -eq $true -and $_.LastLogonDate -lt (Get-Date).AddDays(-90) } |
  Select-Object Name, SamAccountName, LastLogonDate, PasswordLastSet |
  Sort-Object LastLogonDate |
  Export-Csv C:\audit\stale_users.csv -NoTypeInformation -Encoding UTF8

Третий — учётки сервисов с правами и их SPN, потому что именно по сервисным аккаунтам идут атаки Kerberoasting:

Get-ADUser -Filter { ServicePrincipalName -like "*" } -Properties ServicePrincipalName, MemberOf, PasswordLastSet |
  Select-Object Name, SamAccountName, ServicePrincipalName, PasswordLastSet

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

Шаг 2. Принцип наименьших привилегий — на практике

Самая частая ошибка в малых офисах: «у нас все администраторы своих ПК, потому что иначе им неудобно». Я бескомпромиссно убираю локальных админов у пользователей. Если бухгалтеру нужно поставить обновление 1С — это делает инженер ITfresh за пять минут удалённо. Если дизайнеру нужен принтер — мы заранее раздаём драйверы через Print Management.

На уровне домена я создаю чёткую структуру OU и групп безопасности. Например для офиса финансовой компании на 35 человек структура выглядит так:

OU=Sotrudniki,DC=corp,DC=client,DC=ru
  ├── OU=Buhgalteria
  ├── OU=Prodazhi
  ├── OU=Marketing
  ├── OU=IT
  └── OU=Rukovodstvo

OU=Servers,DC=corp,DC=client,DC=ru
  ├── OU=Domain Controllers (создаётся автоматически)
  ├── OU=File Servers
  └── OU=1C Servers

OU=Workstations,DC=corp,DC=client,DC=ru
  ├── OU=Buhgalteria
  ├── OU=Prodazhi
  └── OU=Marketing

OU=Groups,DC=corp,DC=client,DC=ru
  ├── OU=Security (SG_Buhgalteria_FullAccess, SG_1C_Users и т.д.)
  └── OU=Distribution

OU=ServiceAccounts,DC=corp,DC=client,DC=ru
OU=PrivilegedAccounts,DC=corp,DC=client,DC=ru

Все права на сетевые ресурсы и приложения раздаются исключительно через группы безопасности (модель AGDLP: Account → Global → Domain Local → Permission). Когда в компанию приходит новый бухгалтер, я добавляю его в SG_Buhgalteria — и он автоматически получает доступ к нужным шарам, принтерам и базе 1С. Когда увольняется — отключаю учётку и убираю из всех групп одной командой.

Шаг 3. Парольная политика и Fine-Grained Password Policies

Стандартная парольная политика домена настраивается через Default Domain Policy (gpmc.msc). Мои базовые значения для офисов до 50 ПК:

Для привилегированных учёток я дополнительно настраиваю Fine-Grained Password Policy через Active Directory Administrative Center (ADAC):

New-ADFineGrainedPasswordPolicy `
  -Name "FGPP-Admins" `
  -Precedence 10 `
  -MinPasswordLength 16 `
  -PasswordHistoryCount 24 `
  -ComplexityEnabled $true `
  -MinPasswordAge "1.00:00:00" `
  -MaxPasswordAge "90.00:00:00" `
  -LockoutThreshold 5 `
  -LockoutDuration "00:30:00" `
  -LockoutObservationWindow "00:30:00"

Add-ADFineGrainedPasswordPolicySubject -Identity "FGPP-Admins" -Subjects "Domain Admins"

Это даёт админам отдельный, более жёсткий профиль без необходимости поднимать ещё один домен.

Шаг 4. LAPS — обязательно, всегда, везде

Windows Local Administrator Password Solution автоматически генерирует уникальные пароли для встроенного локального администратора каждого компьютера и хранит их в Active Directory. Это закрывает атаку Pass-the-Hash, при которой злоумышленник с одного скомпрометированного ПК ходит по всему офису, потому что пароль локального админа везде одинаковый.

В Windows 11 22H2 и Windows Server 2019/2022/2025 LAPS уже встроен (Windows LAPS, не путать со старым Microsoft LAPS на MSI). Включаем его одной GPO. Сначала расширяем схему AD:

Update-LapsADSchema

Даём контроллерам домена право писать пароли:

Set-LapsADComputerSelfPermission -Identity "OU=Workstations,DC=corp,DC=client,DC=ru"

Затем создаём GPO «LAPS Settings» и привязываем к OU=Workstations:

Чтение пароля для конкретного хоста делается командой:

Get-LapsADPassword -Identity "PC-BUH-05" -AsPlainText

Доступ к паролю — только моей инженерной группе SG_LAPS_Readers, которую я делегирую через Set-LapsADReadPasswordPermission. Бухгалтер прочитать чужой пароль не сможет.

Шаг 5. Защита учётной записи krbtgt

Это сервисная учётка, которой Active Directory подписывает все Kerberos-билеты. Если злоумышленник получает её хеш — он печатает Golden Ticket и становится Domain Admin'ом без всяких паролей. Восстановление после такой компрометации стоит дороже, чем просто переустановка домена с нуля.

Мера профилактики простая: менять пароль krbtgt раз в полгода, два раза подряд с интервалом 10-24 часа (чтобы успели реплицироваться все DC и истекли активные TGT). Я использую штатный скрипт Microsoft New-KrbtgtKeys.ps1 (есть на github.com/microsoft/New-KrbtgtKeys.ps1):

# Первый сброс — режим тестирования
.\New-KrbtgtKeys.ps1 -mode 1 -OU "Domain Controllers"

# Через сутки — реальный сброс №1
.\New-KrbtgtKeys.ps1 -mode 4

# Подождать минимум 10 часов (или сутки), затем сброс №2
.\New-KrbtgtKeys.ps1 -mode 4

В календаре у меня стоит напоминание на январь и июль каждого года. После любого инцидента (увольнение админа, подозрение на компрометацию) — немедленный двойной сброс.

Шаг 6. Отключение NTLMv1 и LLMNR

NTLMv1 — устаревший протокол аутентификации, хеши которого ломаются за минуты на современном GPU. LLMNR (Link-Local Multicast Name Resolution) и NetBIOS позволяют любому в сегменте перехватывать запросы и собирать NTLMv2-хеши инструментом Responder за пять минут.

В GPO «AD Hardening Baseline», привязанной к корню домена, я выставляю:

NetBIOS over TCP/IP отключаю на уровне сетевого адаптера через GPO Preferences или скрипт PowerShell в стартап-сценарии.

Шаг 7. SMB Signing и отключение SMBv1

SMB Signing защищает от атаки NTLM Relay (она же SMB Relay), при которой злоумышленник перехватывает аутентификацию и пробрасывает её на другой сервер от имени жертвы. Включаю обязательную подпись и для клиента, и для сервера:

# На всех серверах и рабочих станциях через GPO либо PowerShell:
Set-SmbServerConfiguration -RequireSecuritySignature $true -EnableSecuritySignature $true -Force
Set-SmbClientConfiguration -RequireSecuritySignature $true -EnableSecuritySignature $true -Force

# Удаляем SMBv1 окончательно
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

Если в офисе остался старый сетевой сканер или NAS, который умеет только SMBv1 — это повод его заменить. Уязвимость EternalBlue, через которую распространялся WannaCry в 2017 году, до сих пор актуальна для незакрытых SMBv1.

Шаг 8. Аудит и журналирование

Без логов вы не узнаете, что вас взломали, до того момента, пока не получите записку от шифровальщика. Минимум, который я включаю через GPO «AD Audit Policy» по пути Computer Configuration → Policies → Windows Settings → Security Settings → Advanced Audit Policy Configuration:

Размер журнала Security расширяю до 1 ГБ (Computer Configuration → Administrative Templates → Windows Components → Event Log Service → Security → Maximum Log Size) и настраиваю overwrite as needed.

Ключевые Event ID, на которые я настраиваю алерты в Wazuh (бесплатный SIEM, который у нас стоит у большинства клиентов):

Шаг 9. Изоляция контроллеров домена

DC должны жить в собственном VLAN. На периметре — Mikrotik или pfSense, который пропускает на DC только нужные порты с рабочих станций: 53 (DNS), 88 (Kerberos), 389/636 (LDAP/LDAPS), 445 (SMB для GPO), 135 + динамический RPC, 3268 (Global Catalog). Доступ к RDP контроллера домена — только из jump-сервера, и только моей инженерной группе.

На самих DC выкручиваю Windows Firewall с правилом «всё запрещено, кроме явно разрешённого». Никаких сторонних ролей: DC — это только AD DS, DNS и при необходимости DHCP. Никакого 1С, файлового сервера, антивирусной консоли на одном хосте с контроллером.

Tier-модель в духе Microsoft я в малом офисе упрощаю до двух уровней: Tier 0 — DC и инфраструктура AD, Tier 1 — серверы приложений и рабочие станции. Учётка с правами Domain Admin никогда не логинится на рабочую станцию пользователя. Для администрирования рабочих станций используется отдельная учётка с правами локального админа через LAPS, либо Just-In-Time через PAM-решение (для офиса 50 ПК достаточно простого регламента).

Шаг 10. Резервное копирование, которое реально восстанавливается

Бэкап AD без проверки восстановления — это не бэкап, а самообман. Я делаю System State Backup всех DC ежесуточно через Windows Server Backup или Veeam Backup & Replication:

wbadmin start systemstatebackup -backupTarget:\\backup-srv\ad-backup -quiet

Бэкап-сервер ОБЯЗАТЕЛЬНО не в домене. Это отдельная Windows-машина или Linux-NAS с собственными учётными записями. Если шифровальщик пройдёт по всему домену — бэкап-сервер останется чистым. Доступ к удалению старых копий — только у локальной учётки бэкап-сервера, которой нет в AD.

Раз в квартал я тестирую восстановление: разворачиваю DC в изолированной сети из бэкапа, проверяю репликацию, целостность NTDS.dit, поднимаю тестовый клиент. Если за 4 часа домен не встаёт — план ИБ требует пересмотра.

Дополнительно настраиваю AD Recycle Bin (включается один раз и навсегда):

Enable-ADOptionalFeature -Identity "Recycle Bin Feature" `
  -Scope ForestOrConfigurationSet -Target "corp.client.ru"

Это позволяет восстановить случайно удалённый OU за минуту через ADAC, без поднятия бэкапа.

Шаг 11. EDR и контроль запуска приложений

Антивирус по сигнатурам в 2026 году ловит около 30% угроз. Современный шифровальщик упакован, обфусцирован и распознаётся только по поведению. EDR — обязательная вторая линия защиты. У клиентов ITfresh мы используем Kaspersky EDR Optimum или MaxPatrol EDR в зависимости от бюджета и требований по импортозамещению.

Дополнительно к EDR на рабочих станциях бухгалтерии и руководства я настраиваю AppLocker через GPO Computer Configuration → Windows Settings → Security Settings → Application Control Policies → AppLocker. Базовые правила:

Не забываем включить службу Application Identity (AppIDSvc) автозапуском через GPO, иначе AppLocker не работает.

Шаг 12. Регулярная проверка и обучение

Hardening — это не разовый проект, а процесс. Я ставлю клиенту в расписание ежеквартальные работы:

Раз в полгода — фишинговая симуляция для сотрудников через GoPhish. После первой такой рассылки в одной фирме на 40 человек на ссылку кликнули 23 пользователя. Через три месяца повторного обучения и второй рассылки — кликнули шесть. Это не про «наказание», а про осознание.

Сколько это стоит и зачем платить аутсорсеру

Все 12 шагов внедряются штатными средствами Windows Server 2019/2022/2025 без покупки нового софта. Если у вас уже есть инфраструктура и грамотный системный администратор в штате — он справится сам, статья даёт ему план. Если штатного админа нет или он перегружен текущими задачами — это типовой проект для аутсорсера.

В ITfresh такой hardening входит в пакет Comfort и Premium IT-аутсорсинга для юрлиц до 50 рабочих мест в Москве. По нашему опыту, развёртывание занимает 25-40 часов работы инженера в течение двух-трёх недель, без остановки бизнеса. После этого — ежеквартальные ревизии и реакция на инциденты в режиме 24/7.

Я не верю в «универсальную защиту от всего». Я верю в дисциплину: внедрить базу, мониторить, восстанавливаться из бэкапа за час, не давать обычным пользователям прав админа. Этих 12 шагов достаточно, чтобы ваш офис на 30-50 человек перестал быть лёгкой мишенью.

FAQ

Имеет ли смысл внедрять LAPS в офисе на 20 компьютеров?
Да. В малом офисе локальный администратор с одинаковым паролем — самая частая причина массовой компрометации после фишинга. Windows LAPS встроен в Windows 11 22H2 и Windows Server 2019/2022/2025, разворачивается за полдня одной GPO и хранит пароли в самой Active Directory. Для 20 ПК это бесплатное решение без какого-либо стороннего софта.

Как часто нужно менять пароль учётной записи krbtgt?
Microsoft рекомендует раз в 180 дней — два сброса с интервалом не менее 10 часов (чтобы прокатилась репликация и истекли активные TGT). Мы в ITfresh ставим календарное напоминание на январь и июль и используем штатный скрипт New-KrbtgtKeys.ps1. При подозрении на компрометацию — немедленно, дважды подряд.

Можно ли полностью отключить NTLM в офисе на 30 человек?
Полностью — почти никогда. Останется legacy-софт, сетевые принтеры, NAS и сканеры с поддержкой только NTLMv2. Реалистичный план: отключить NTLMv1, включить аудит NTLM (Network Security: Restrict NTLM: Audit NTLM authentication), две недели смотреть логи и составить белый список серверов-исключений. После этого ставим Deny all и оставляем явные exceptions.

Сколько времени и денег займёт hardening AD для офиса 50 ПК?
Полный план из этой статьи мы у клиентов разворачиваем за 2-3 недели работ инженера в режиме part-time без покупки дополнительного софта (всё штатное Windows Server 2022). Стоимость в нашем тарифе IT-аутсорсинга — это 30-50 часов работ. EDR и SIEM — отдельно, опционально, начиная с 1500 рублей за хост в месяц.

Что важнее: купить EDR или сначала закрыть базовые дыры в GPO?
Сначала базу. EDR на дырявом домене — это сигнализация в доме без замков. Внедрите LAPS, отключите LLMNR и NTLMv1, включите SMB Signing, настройте парольную политику и аудит. Это бесплатно и закрывает 80% типовых атак. EDR имеет смысл, когда базовый hardening уже сделан и нужно ловить продвинутые угрозы.

Нужен hardening Active Directory в вашем офисе?

Семёнов Е.С. и команда ITfresh берут на полное IT-обслуживание юрлица до 50 рабочих мест в Москве. Аудит AD проведём бесплатно за первую неделю обслуживания.