Как отключить протокол LLMNR, за минуту

LLMNR logo

Доброго времени суток, уважаемые читатели 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

Проверка статуса LLMNR

Если статус "0", то LLMNR выключен.

Проверка статуса LLMNR на Windows Server

Отключение LLMNR через групповую политику

Так как у меня Active Directory, то правильным централизованным инструментом должна выступать групповая политика. Создайте новую GPO или возьмите нужную, в которой вы будите менять настройки.

Я советую применять данную политику верхнеуровнево на все серверы и компьютеры домена, но изначально с помощью фильтрации GPO сделайте нацеливание на пилотную группу. После тестирования можно будет ее расширять или сразу применять на группу authenticated users (Прошедшие проверку)

Я создал отдельную GPO с именем Disable_NNLMR и открыл ее на редактирование. OU применения у меня это корень домена.

Отключение NNLMR через GPO

Переходим в раздел:

Computer Configuration - Administrative Templates - Network - DNS Client - Turn off multicast name resolution

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

Запустите командную строку от имени администратора и выполните команду, которая в реестр добавит нужный ключ EnableMulticast.

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" /v EnableMulticast /t REG_DWORD /d 0 /f

Отключение протокола LLMNR через реестр

То же самое можно сделать и еще одним методом в групповой политике, создав с ее помощью ключ реестра. Создайте так же политику и перейдите к ее редактированию. Перейдите в раздел:

Computer Configuration - Preferences - Windows Settings - Registry (В русской версии: Конфигурация компьютера - Настройки - Конфигурация Windows - Реестр)

Щелкаем по пустому пространству правым кликом и из контекстного меню выберите "New - Registry Item".

Создание ключа реестра с помощью GPO

  • Action - Выбираем "Create"
  • Hive - HKEY_LOCAL_MACHINE
  • Key Path - SOFTWARE\Policies\Microsoft\Windows NT\DNSClient
  • Value Name - EnableMultiCast
  • Value type - REG_DWORD
  • Value data - 0

Создание ключа реестра EnableMultiCast через GPO

Далее ждем применения политики и все готово.

Как отключить 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

Как отключить LLMNR через PowerShell

Проверим, что ключ EnableMultiCast появился в реестре, для этого сделаем запрос:

Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Name "EnableMulticast"

Проверка ключа реестра EnableMultiCast через Powershell

Если необходимо создать данный параметр на списке серверов, то нужно подготовить тестовый файл, где на каждой строке будет уникальное имя сервера и передать его командам:

# Путь к файлу со списком серверов
$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 Stop

Write-Host "Ключ реестра создан или обновлен на сервере: $server"
} catch {
Write-Host "Ошибка при работе с сервером $server $_"
}
}

Как отключить LLMNR с помощью локальной политики

Данный метод будет полезен, когда у вас нет может не быть Active Directory, либо же вы хотите точечно через графический интерфейс создать настройку. Запустите окно "Выполнить" и введите:

gpedit.msc и нажмите Enter

Открываем gpedit.msc

Переходим по пути:

Конфигурация компьютера - Административные шаблоны - Сеть - DNS-клиент - Отключить многоадресное разрешение имен

Отключить многоадресное разрешение имен gpedit.msc

В английской локализации путь будет такой:

Computer Configuration - Administrative Templates - Network - DNS Client - Turn off multicast name resolution

Отключаем протокол LLMNR с помощью SCCM

Если у вас на работе используется System Center Configuration Manager, то вы можете взять команду описанную выше для PowerShell, создать ps1 файл и запускать его в SCCM для коллекции или отдельных компьютеров.

Run Scripts SCCM

На этом у меня все. Мы с вами рассмотрели разные методы избавления вашей системы от протокола NNLMR, что очень полезно. Никогда не забывайте про эту настройку, чтобы максимально быть в цифровой безопасности. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Оцените статью
Настройка серверов windows и linux
Добавить комментарий