Защита Active Directory от взлома: 12 шагов для малого бизнеса
За свои 15 лет в IT-аутсорсинге я успел развернуть и спасти от краха десятки доменов в офисах, где работали от 10 до 200 человек. И знаете что? Катастрофа почти всегда развивалась по одному и тому же сценарию. Бухгалтер открывала письмо с говорящим названием «акт сверки.zip», и вот уже шифровальщик за какие-то 40 минут успевал пройтись по всем сетевым шарам. Почему так? Да потому что у бухгалтера были права администратора, а пароль локального админа на всех ПК был, как вы понимаете, один и тот же. Эта статья — по сути, выжимка из того, что мы в ITfresh внедряем у каждого нового клиента буквально за первые две недели обслуживания. Мы не гонимся за идеалом и не заставляем покупать дорогие решения — только то, что на 100% работает в реальном офисе на 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 ПК, таковы:
- Минимальная длина пароля — 12 символов (для админов через FGPP — 16);
- Сложность включена (три из четырёх категорий);
- История паролей — последние 12;
- Срок действия — 180 дней (NIST SP 800-63B уже не требует ротации, но в России регуляторика другая, и Mimecast/Sophos в 2025 году рекомендуют 90-180 дней);
- Блокировка после 10 неудачных попыток на 15 минут с обнулением счётчика через 15 минут.
Для привилегированных учёток, конечно, нужны особые меры. Поэтому я дополнительно настраиваю 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, или LAPS, — это просто находка. Он автоматически генерирует уникальные пароли для встроенного локального администратора на каждом компьютере и безопасно хранит их прямо в Active Directory. Это наглухо закрывает атаку Pass-the-Hash, когда злоумышленник, скомпрометировав один ПК, спокойно гуляет по всему офису только потому, что пароль локального админа везде одинаковый. С LAPS такого не случится.
Хорошая новость: в 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:
- Computer Configuration → Administrative Templates → System → LAPS → Configure password backup directory:
Active Directory; - Password Settings: длина 20, complexity Large letters + small letters + numbers + specials, max password age 30 days;
- Name of administrator account to manage: пустое (управляем встроенным RID 500) или указываем кастомного, если переименовали.
Чтение пароля для конкретного хоста делается командой:
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», привязанной к корню домена, я выставляю:
- Computer Configuration → Policies → Windows Settings → Security Settings → Local Policies → Security Options → Network security: LAN Manager authentication level → Send NTLMv2 response only. Refuse LM & NTLM (значение 5);
- Network security: Minimum session security for NTLM SSP based (Server и Client) → Require NTLMv2 session security + Require 128-bit encryption;
- Computer Configuration → Administrative Templates → Network → DNS Client → Turn off multicast name resolution → Enabled (это и есть LLMNR);
- Computer Configuration → Administrative Templates → Network → Network Provider → Hardened UNC Paths → \\*\SYSVOL и \\*\NETLOGON с флагами RequireMutualAuthentication=1, RequireIntegrity=1.
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:
- Account Logon → Audit Credential Validation: Success and Failure;
- Account Logon → Audit Kerberos Authentication Service: Success and Failure;
- Account Logon → Audit Kerberos Service Ticket Operations: Success and Failure;
- Account Management → все подкатегории: Success and Failure;
- DS Access → Audit Directory Service Changes: Success;
- Logon/Logoff → Audit Logon: Success and Failure;
- Logon/Logoff → Audit Special Logon: Success;
- Object Access → Audit File Share: Success and Failure;
- Privilege Use → Audit Sensitive Privilege Use: Success and Failure;
- System → Audit Security State Change: Success.
Размер журнала Security расширяю до 1 ГБ (Computer Configuration → Administrative Templates → Windows Components → Event Log Service → Security → Maximum Log Size) и настраиваю overwrite as needed.
Есть ключевые Event ID, на которые я обязательно настраиваю алерты в Wazuh — это, кстати, бесплатный SIEM, который стоит у большинства наших клиентов:
- 4625 — failed logon. Более 20 за минуту с одного источника = brute force;
- 4740 — учётная запись заблокирована;
- 4768/4769 — TGT/Service Ticket. Запросы с шифрованием RC4 от современных клиентов = Kerberoasting;
- 4624 type 3 + type 10 — сетевой и интерактивный логон. Логон Domain Admin на рабочую станцию = аномалия;
- 1102 — очистка журнала безопасности. Всегда инцидент;
- 4688 — создание процесса. Включаю отдельно через Audit Process Creation + добавляю Include command line in process creation events;
- 4104 — выполнение PowerShell ScriptBlock. Видим, какие команды реально выполняются.
Шаг 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. Вот базовые правила, которые я применяю:
- Executable Rules: Allow всё из C:\Program Files и C:\Windows + Deny запуск из %TEMP%, %APPDATA%, %LOCALAPPDATA% (именно туда сохраняются вложения из почты и архивы);
- Script Rules: Deny выполнение .ps1, .vbs, .bat для группы пользователей (админы — исключение);
- Packaged App Rules: Allow подписанные Microsoft.
И, пожалуйста, не забывайте включить службу Application Identity (AppIDSvc) автозапуском через GPO, иначе AppLocker просто не будет работать. Это очень важный момент!
Шаг 12. Регулярная проверка и обучение
Hardening — это не разовый проект, а процесс. Поэтому я ставлю клиенту в расписание ежеквартальные работы:
- Прогон PingCastle (бесплатный аудитор AD) и закрытие новых находок;
- Прогон BloodHound в безопасном режиме для визуализации путей атак;
- Сверка Domain Admins, Enterprise Admins, Schema Admins со списком разрешённых;
- Тест восстановления одного DC из бэкапа в изолированной среде;
- Проверка, что LAPS-пароли действительно ротируются (Get-LapsADPassword по случайным 5 хостам);
- Обновление Windows Server до последнего CU + перезагрузка DC по очереди;
- Обзор Windows Event Forwarding и проверка, что критичные события долетают до Wazuh.
Раз в полгода мы проводим фишинговую симуляцию для сотрудников через 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 мы проведём абсолютно бесплатно в течение первой недели обслуживания.
- Telegram: @ITfresh_Boss
- Телефон: +7 903 729-62-41
