Как отключить протокол LLMNR, за минуту
Доброго времени суток, уважаемые читатели IT блога Pyatilistnik. В прошлой статье я вас научил алгоритму диагностики на системах хранения данных, когда перестает работать FC порт на контроллере. Двигаемся дальше и сегодня затронем тему безопасности. В данной публикации пойдет речь, о протоколе LLMNR, его назначении и вообще использовании в современных реалиях. Я покажу разные методы как отключать LLMNR на доменных рабочих станциях и серверах, а так же локально на нужных системах. Давайте приступать.
Что такое протокол LLMNR?
LLMNR (Link-Local Multicast Name Resolution / Механизм широковещательного разрешения имен) - это сетевой протокол, который стал преемником протокола NetBIOS. Network Basic Input/Output System это очень старый протокол, который появился в самых первых версиях Windows и исторически, для обратной совместимости включался в последующие релизы. NetBIOS, а уже и LLMNR позволяет локально разрешать имена в локальной сети
LLMNR помогает серверам/рабочим станциям на ОС Windows за счет стека IPV4 и IPV6 выполнять разрешение имен без использования сервера DNS. В любой крупной организации за разрешение DNS имени других клиентов выступает сервер DNS, но если он недоступен или у вас не используется, то хост передает широковещательный запрос LLMNR по локальной сети, чтобы проверить, сможет ли ответить какой-либо другой хост, все это делается на уровне L2.
Link-Local Multicast Name Resolution был разработан для работы в средах, где нет доступа к DNS-серверам, и позволяет устройствам находить друг друга по имени. Он работает по порту UDP 5355. Протокол принимает host-to- IP на основе многоадресных пакетов и отправляет их по всей локальной сети на уровне L2
Зачем нужно отключать LLMNR?
LLMNR необходим только в том случае, если DNS-сервер недоступен в домене, что уже само по себе странно, так как сам домен тогда просто перестает работать. Когда процесс запускается, он запрашивает у всех прослушивающих сетевых интерфейсов повтор, если имя хоста является авторитетным. У протокола LLMNR нет механизма аутентификации, поэтому на отправленный запрос по сути может отвечать кто угодно, открывая возможность к потенциальным атакам. Злоумышленники могут прослушивать такие запросы и отвечать на них, представляясь не тем кем они являются, это ведет к несанкционированному доступу в среде Active Directory. В результате этого злоумышленник получит хэш учетных данных пользователя. Имея на руках хеш жертвы, мы можем попытаться перевести хеш в автономный режим и взломать его.
LLMNR может быть подвержен атакам, таким как spoofing (подмена) имен. Поэтому важно использовать его с осторожностью и в безопасных средах, а лучше вообще отключать чем мы и займемся
Как проверить текущее состояние LLMNR
Перед тем как мы начнем процедуру отключения протокола Link-Local Multicast Name Resolution, давайте проверим его статус. Проще всего это сделать через PowerShell. Запустите оснастку в режиме администратора и введите:
$(Get-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows NT\DNSClient" -name EnableMulticast).EnableMulticast
Если в ответ вы получаете "1" или ошибку, показанную ниже, то это означает. что LLMNR активен.
Get-ItemProperty : Cannot find path 'HKLM:\Software\Policies\Microsoft\Windows NT\DNSClient' because it does not exist.
At line:1 char:3
+ $(Get-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows N ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (HKLM:\Software\...ws NT\DNSClient:String) [Get-ItemProperty], ItemNotFo
undException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyCommand
Если статус "0", то LLMNR выключен.
Отключение LLMNR через групповую политику
Так как у меня Active Directory, то правильным централизованным инструментом должна выступать групповая политика. Создайте новую GPO или возьмите нужную, в которой вы будите менять настройки.
Я советую применять данную политику верхнеуровнево на все серверы и компьютеры домена, но изначально с помощью фильтрации GPO сделайте нацеливание на пилотную группу. После тестирования можно будет ее расширять или сразу применять на группу authenticated users (Прошедшие проверку)
Я создал отдельную GPO с именем Disable_NNLMR и открыл ее на редактирование. OU применения у меня это корень домена.
Переходим в раздел:
Computer Configuration - Administrative Templates - Network - DNS Client - Turn off multicast name resolution
В русской локализации это:
Конфигурация компьютера - Политики - Административные шаблоны - Сеть - DNS-клиент - Отключить многоадресное разрешение имен
Далее вам остается дождаться обновление групповой политики или сделать ее форсированно. Из приятного, что для отключения NNLMR протокола не требуется перезагрузка сервера. В результате этой политики на клиентах будет создан ключ реестра, о котором мы поговорим чуть ниже.
Отключаем протокол LLMNR через реестр
Данный метод может быть как точечный, так и массовый. Как я и писал выше, параметр GPO "Отключить многоадресное разрешение имен" формирует в реестре системы ключ:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\EnableMulticast со значением "0", с типом REG_DWORD
Напомню, что вы локально можете вызвать редактор реестра Windows и по нужному пути создать ключ реестра, либо можете воспользоваться PowerShell или командной строкой
Запустите командную строку от имени администратора и выполните команду, которая в реестр добавит нужный ключ EnableMulticast.
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" /v EnableMulticast /t REG_DWORD /d 0 /f
То же самое можно сделать и еще одним методом в групповой политике, создав с ее помощью ключ реестра. Создайте так же политику и перейдите к ее редактированию. Перейдите в раздел:
Computer Configuration - Preferences - Windows Settings - Registry (В русской версии: Конфигурация компьютера - Настройки - Конфигурация Windows - Реестр)
Щелкаем по пустому пространству правым кликом и из контекстного меню выберите "New - Registry Item".
- Action - Выбираем "Create"
- Hive - HKEY_LOCAL_MACHINE
- Key Path - SOFTWARE\Policies\Microsoft\Windows NT\DNSClient
- Value Name - EnableMultiCast
- Value type - REG_DWORD
- Value data - 0
Далее ждем применения политики и все готово.
Как отключить LLMNR через PowerShell
PowerShell очень универсальное средство управления системами Windows, чтобы вам деактивировать использование протокола NNLMR необходимо запустить консоль Powershell в режиме администратора. Далее выполните там команду:
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Name "EnableMulticast" -Value 0 -PropertyType DWord -Force
Проверим, что ключ EnableMultiCast появился в реестре, для этого сделаем запрос:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Name "EnableMulticast"
Если необходимо создать данный параметр на списке серверов, то нужно подготовить тестовый файл, где на каждой строке будет уникальное имя сервера и передать его командам:
# Путь к файлу со списком серверов
$servers = Get-Content -Path "C:\Temp\servers.txt"# Проходим по каждому серверу в списке
foreach ($server in $servers) {
try {
# Определяем путь к ключу реестра
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient"# Проверяем, существует ли ключ
if (-not (Test-Path $regPath -ErrorAction SilentlyContinue)) {
# Создаем ключ, если он не существует
New-Item -Path $regPath -Force | Out-Null
}# Устанавливаем значение реестра
Set-ItemProperty -Path $regPath -Name "EnableMulticast" -Value 0 -Type DWord -ErrorAction StopWrite-Host "Ключ реестра создан или обновлен на сервере: $server"
} catch {
Write-Host "Ошибка при работе с сервером $server $_"
}
}
Как отключить LLMNR с помощью локальной политики
Данный метод будет полезен, когда у вас нет может не быть Active Directory, либо же вы хотите точечно через графический интерфейс создать настройку. Запустите окно "Выполнить" и введите:
gpedit.msc и нажмите Enter
Переходим по пути:
Конфигурация компьютера - Административные шаблоны - Сеть - DNS-клиент - Отключить многоадресное разрешение имен
В английской локализации путь будет такой:
Computer Configuration - Administrative Templates - Network - DNS Client - Turn off multicast name resolution
Отключаем протокол LLMNR с помощью SCCM
Если у вас на работе используется System Center Configuration Manager, то вы можете взять команду описанную выше для PowerShell, создать ps1 файл и запускать его в SCCM для коллекции или отдельных компьютеров.
На этом у меня все. Мы с вами рассмотрели разные методы избавления вашей системы от протокола NNLMR, что очень полезно. Никогда не забывайте про эту настройку, чтобы максимально быть в цифровой безопасности. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.