Использование устаревших протоколов без явной необходимости может являться потенциальной брешью в безопасности любой компьютерной сети. В этом плане показательна недавняя шумиха вокруг шифровальщика WCry, простейшая защита от которого заключалась в отказе от использования устаревшего протокола SMBv1 путем его полного отключения. Широковещательные протоколы NetBIOS через TCP/IP и LLMNR также являются устаревшими протоколами, и в большинстве современных сетей они используются только с целями совместимости. Одновременно с этим в инструментарии хакеров есть различные инструменты, позволяющие использовать уязвимости в протоколах NetBIOS и LLMNR для перехвата учетных данных пользователей в локальной подсети (в т.ч. хэши NTLMv2). Поэтому в целях безопасности в доменной сети эти протоколы следует отключать. Разберемся как отключить LLMNR и NetBIOS с помощью групповых политик.
Прежде всего следует напомнить, что это за протоколы.
Протокол LLMNR
LLMNR (UDP/5355, Link-Local Multicast Name Resolution — механизм широковещательного разрешения имен) – протокол присутствует во всех версиях Windows, начиная с Vista и позволяет IPv6 и IPv4 клиентам за счет широковещательных запросов в локальном сегменте сети L2 разрешать имена соседних компьютеров без использования DNS сервера. Этот протокол также автоматически используется при недоступности DNS. Соответственно, при работающих DNS-серверах в домене, этот протокол абсолютно не нужен.
Протокол NetBIOS поверх TCP/IP
Протокол NetBIOS over TCP/IP или NBT-NS (UDP/137,138;TCP/139) – является широковещательным протоколом-предшественником LLMNR и используется в локальной сети для публикации и поиска ресурсов. Поддержка NetBIOS over TCP/IP по умолчанию включена для всех интерфейсов во всех ОС Windows.
Таким образом эти протоколы позволяют компьютерам в локальной сети найти друг друга при недоступности DNS сервера. Возможно они и нужны в рабочей группе, но в доменной сети оба этих протокола можно отключить.
Отключение протокола LLMNR с помощью групповой политики
В доменной среде широковещательные запросы LLMNR на компьютерах домена можно отключить с помощью групповой политики. Для этого:
- В консоли GPMC.msc создайте новую или отредактируйте имеющуюся политику, применяемую ко всем рабочим станциям и серверам.
- Перейдите в раздел Computer Configuration -> Administrative Templates -> Network -> DNS Client
- Включите политику Turn Off Multicast Name Resolution, изменив ее значение на Enabled
Отключение протокола NetBIOS over TCP/IP
На конкретном клиенте отключить NetBIOS можно вручную.
- Откройте свойства сетевого подключения
- Выберите протокол TCP/IPv4 и откройте его свойства
- Нажмите кнопку Advanced, затем перейдите на вкладку WINS и выберите опцию Disable NetBIOS over TCP (Отключить NetBIOS через TCP/IP)
- Сохраните изменения
Отключить поддержку NetBIOS для конкретного сетевого адаптера можно и из реестра. Для каждого сетевого адаптера компьютера есть отдельная ветка с его TCPIP_GUID внутри HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces.
Чтобы отключить NetBIOS для конкретного адаптера, нужно открыть его ветку и изменить значение параметра NetbiosOptions на 2 (по умолчанию значение – 0).
Для полного отключение протокола NetBIOS, рассмотренные выше операции нужно выполнить для всех сетевых адаптеров компьютера.
На клиентах домена, получающих IP адреса с DHCP сервера, отключить NetBIOS можно через настройку опций DHCP сервера.
- Для этого откройте консоль dhcpmgmt.msc и выберите настройки зоны Scope Option (или сервера – Server Options)
- Перейдите на вкладку Advanced, в выпадающем списке Vendor class выберите Microsoft Windows 2000 Options
- Включите опцию 001 Microsoft Disable Netbios Option и измените ее значение на 0x2
Отдельной опции, позволяющей отключить NETBIOS over TCP/IP для всех сетевых адаптеров компьютера через групповые политики нет. Чтобы отключить NETBIOS для всех адаптеров компьютера воспользуйтесь следующим PowerShell скриптом, который нужно поместить в политику Computer Configuration -> Policies -> Windows Settings ->Scripts ->Startup->PowerShell Scripts
$regkey = "HKLM:SYSTEM\CurrentControlSet\services\NetBT\Parameters\Interfaces"
Get-ChildItem $regkey |foreach { Set-ItemProperty -Path "$regkey\$($_.pschildname)" -Name NetbiosOptions -Value 2 -Verbose}