Широковещательные протоколы NetBIOS over TCP/IP и LLMNR являются устаревшими и в большинстве современных сетей они используются только для совместимости с legacy версиями Windows. Оба протокола подвержены спуфингу и атакам MITM. В том же Metasploit есть готовые модули, позволяющие легко использовать уязвимости в широковещательных протоколах NetBIOS и LLMNR для перехвата учетных данных пользователей в локальной подсети (в т.ч. можно получить хэши NTLMv2). Для повышения безопасности необходимо отключать эти старые протоколы в доменной сети. Разберемся, как отключить протоколы LLMNR и NetBIOS в Windows 10/Windows 2016 вручную или через групповые политики.
Протокол LLMNR
LLMNR (UDP/5355, Link-Local Multicast Name Resolution — механизм широковещательного разрешения имен) – протокол присутствует во всех версиях Windows, начиная с Vista и позволяет IPv6 и IPv4 клиентам разрешать имена соседних компьютеров без использования DNS сервера за счет широковещательных запросов в локальном сегменте сети L2. Этот протокол также автоматически используется при недоступности DNS (в рабочих группах Windows этот протокол используется для сетевого обнаружения/Network Discovery). Соответственно, при работающих DNS-серверах в домене, этот протокол абсолютно не нужен.
Протокол NetBIOS over TCP/IP
Протокол NetBIOS over TCP/IP или NBT-NS (UDP/137,138;TCP/139) – является широковещательным протоколом-предшественником LLMNR и используется в локальной сети для публикации и поиска ресурсов. Поддержка NetBIOS over TCP/IP по умолчанию включена для всех интерфейсов во всех версиях Windows.
В Windows вы можете вывести статистику протокола NetBIOS и текущий подключений TCP/IP по NBT с помощью команды nbtstat. Чтобы по IP адресу получить имя компьютера, выполните:
nbtstat -A 192.168.31.90
Как вы видите, утилита с помощью NetBIOS обнаружила в локальной сети компьютер и вернула его имя.
Можете вывести все записи о соседних компьютерах в локальных сети в кэше NetBIOS:
nbtstat -c
Протоколы NetBIOS и LLMNR позволяют компьютерам в локальной сети найти друг друга при недоступности DNS сервера. Возможно они и нужны в рабочей группе, но в доменной сети оба этих протокола можно отключить.
Отключение протокола LLMNR с помощью GPO
Можно отключить LLMNR на компьютере Windows локально через реестр с помощью следующей команды PowerShell:
New-Item "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT" -Name DNSClient -Force
New-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Name EnableMultiCast -Value 0 -PropertyType DWORD -Force
В доменной среде широковещательные запросы LLMNR на компьютерах и серверах домена проще отключить с помощью групповой политики. Для этого:
- В консоли
GPMC.msc
создайте новую или отредактируйте имеющуюся политику GPO, применяемую ко всем рабочим станциям и серверам; - Перейдите в раздел Computer Configuration -> Administrative Templates -> Network -> DNS Client;
- Включите политику Turn off smart multi-homed name resolution, изменив ее значение на Enabled;
- Дождитесь обновления параметров GPO на клиентах или обновите их вручную командой
gpupdate /force
.
Отключение протокола NetBIOS over TCP/IP в Windows 10
Вы можете отключить NetBIOS в Windows вручную:
- Откройте свойства сетевого подключения;
- Выберите протокол TCP/IPv4 и откройте его свойства;
- Нажмите кнопку Advanced, затем перейдите на вкладку WINS и выберите опцию Disable NetBIOS over TCP (Отключить NetBIOS через TCP/IP);
- Сохраните изменения.
Если у вас на компьютере несколько сетевых интерфейсов (или отдельных VLAN), нужно будет отключить NetBIOS в свойствах каждого их них.
Вы можете проверить статус NetBIOS over TCP/IP для сетевых адаптеров из командной строки Windows:
ipconfig /all |find "NetBIOS"
NetBIOS over Tcpip. . . . . . . . : Disabled
Отключить поддержку NetBIOS для конкретного сетевого адаптера можно и из реестра. Для каждого сетевого адаптера компьютера есть отдельная ветка с его TCPIP_GUID внутри HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces.
Чтобы отключить NetBIOS для конкретного сетевого адаптера, нужно открыть его ветку и изменить значение параметра NetbiosOptions на 2 (по умолчанию значение – 0).
На клиентах домена, получающих IP адреса с DHCP на Windows Server, вы можете отключить NetBIOS через настройку опций DHCP сервера.
- Для этого откройте консоль
dhcpmgmt.msc
и выберите настройки зоны Scope Option (или сервера – Server Options); - Перейдите на вкладку Advanced, в выпадающем списке Vendor class выберите Microsoft Windows 2000 Options;
- Включите опцию 001 Microsoft Disable Netbios Option и измените ее значение на 0x2.
Как отключить NetBIOS через групповые политики?
В редакторе групповых политик или последней версии административных шаблонов для Windows 10/Windows Server 2019 нет отдельного параметра, позволяющего отключить протокол NETBIOS over TCP/IP для всех сетевых адаптеров компьютера. Чтобы отключить NETBIOS для всех адаптеров компьютера воспользуйтесь таким логон скриптом PowerShell.
$regkey = "HKLM:SYSTEM\CurrentControlSet\services\NetBT\Parameters\Interfaces"
Get-ChildItem $regkey |foreach { Set-ItemProperty -Path "$regkey\$($_.pschildname)" -Name NetbiosOptions -Value 2 -Verbose}
Сохраните этот код в файл disableNetbios.ps1, скопируйте его в каталог вашей GPO и запускайте на клиентах через Computer Configuration -> Policies -> Windows Settings -> Scripts -> Startup- > PowerShell Scripts.
Затем откройте командную строку и проверьте, что NetBIOS отключен для ваших сетевых адаптеров (кроме туннельных интерфейсов):
wmic nicconfig get caption,index,TcpipNetbiosOptions
Ну LLMNR не является устаревшим протоколом, он как раз относительно свежий и появился на замену NetBIOS. Но у него задачи другие — он для небольших сетей. Ну и конечно для корпоративных сетей, где DNS настроен корректно, включенный LLMNR совсем не нужен и его стоит отключить — тут я согласен. )
В общем то да, вы правы, протокол LLMNR относительно свежий, но это не умоляет того факта, что он в домене не нужен
Ну да, я так и написал что согласен. 🙂
LLMNR не поддерживает ipv4 (по крайней мере так говорит книга проектирование сетевой инфраструктуры Windows server 2008 Тони Нортроп и Макин)
Да, так и есть. Именно благодаря этому, несколько компьютеров на базе Windows Vista и выше, подключенные к одному коммутатору, могут видеть друг друг безо всякой настройки сетевых интерфейсов в Windows. )
просто написано — протокол присутствует во всех версиях Windows, начиная с Vista и позволяет IPv6 и IPv4 клиентам
но причем тут клиенты ipv4?
Согласно RFC 4795 — протокол LLMNR работает для ipv4 и ipv6 клиентов.
Насчет реализации его MSFT — не уверен, возможно и есть какие-то свои особенности.
Достаточно просто ввести команду обвновления политик: gpupdate /force
Я поправил бы ваш код на вот такой:
Get-ChildItem -Path ‘HKLM:SYSTEM\CurrentControlSet\services\NetBT\Parameters\Interfaces\’ | Set-ItemProperty -Name NetbiosOptions -Value 2
Но потом я нашел на, мой взгляд, более правильное решение:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration | % {$_.SetTcpipNetbios(2)}
унимание! admx-шаблон политики отрабатывает не правильно(windows server 2012 r2), нужно создать параметр DisableSmartNameResolution со значением 1. EnableMulticast это другая политика
Specifies that a multi-homed DNS client should optimize name resolution across networks. The setting improves performance by issuing parallel DNS, link local multicast name resolution (LLMNR) and NetBIOS over TCP/IP (NetBT) queries across all networks. In the event that multiple positive responses are received, the network binding order is used to determine which response to accept.
If you enable this policy setting, the DNS client will not perform any optimizations. DNS queries will be issued across all networks first. LLMNR queries will be issued if the DNS queries fail, followed by NetBT queries if LLMNR queries fail.
If you disable this policy setting, or if you do not configure this policy setting, name resolution will be optimized when issuing DNS, LLMNR and NetBT queries.
Registry Hive HKEY_LOCAL_MACHINE
Registry Path Software\Policies\Microsoft\Windows NT\DNSClient
Value Name DisableSmartNameResolution
Value Type REG_DWORD
Enabled Value 1
Disabled Value 0
ну ты pridoorok конечно, читай сам что написано:
EnableMulticast 0
If you enable this policy setting, LLMNR will be disabled on all available network adapters on the client computer.
DisableSmartNameResolution 1
If you enable this policy setting, the DNS client will not perform any optimizations. DNS queries will be issued across all networks first. LLMNR queries will be issued if the DNS queries fail, followed by NetBT queries if LLMNR queries fail.
Вместо “Turn off smart multi-homed name resolution” нужно включить “Turn off multicast name resolution”
Я выключил оба.
то есть включил оба )