Netbios описание протокола. Протокол NetBIOS

Последний протокол, который мы рассмотрим в нашей книге, - протокол NETBIOS (Network Basic Input/Output System - базовая сетевая система ввода/вывода), разработанный IBM. Этот протокол работает на трех уровнях семиуровневой модели OSI: сетевом уровне, транспортном уровне и на уровне каналов связи. Уровень каналов связи обеспечивает механизм обмена сообщениями между программами, работающими на станциях в рамках канала связи или сессии. NETBIOS может обеспечить интерфейс более высокого уровня, чем протоколы IPX и SPX.

Протокол NETBIOS поддерживается в сетях IBM (IBM PC LAN), Novell NetWare, Microsoft Windows for Workgroups и в других сетях. К сожалению, нет единого стандарта на протокол NETBIOS, поэтому в сетевом программном обеспечении разных фирм используются разные интерфейсы для вызова команд NETBIOS.

С нашей точки зрения, наибольший интерес представляет применение NETBIOS в сетях Novell NetWare и Microsoft Windows for Workgroups. Мы рассмотрим основные возможности NETBIOS, связанные с передачей данных между рабочими станциями в пределах одного логического сегмента сети.

Для работы с протоколом NETBIOS в сетях Novell NetWare необходимо запустить специальный эмулятор NETBIOS - программу netbios.exe , входящую в комплект поставки Novell NetWare. Эта программа эмулирует протокол NETBIOS с использованием уже знакомых нам протоколов IPX/SPX.

Использовать NETBIOS проще, чем IPX или SPX. Однако, так как в среде Novell NetWare нужен специальный эмулятор NETBIOS, эффективность работы программы может снизиться. Кроме того, для эмулятора нужна дополнительная память, так как он реализован в виде резидентной программы.

4.1. Адресация станций и программ

Как вы помните, для идентификации рабочей станции протоколы IPX и SPX используют номер сети, адрес станции в сети и сокет. Адрес станции определяется на аппаратном уровне и представляет собой число длиной 6 байт. Номер сети занимает 4 байта. Сокеты выделяются динамически драйвером протокола IPX или могут быть получены в Novell.

Протокол NETBIOS использует другой механизм адресации станций и программ. Для адресации станции используются имена размером 16 байт. Каждая станция имеет одно постоянное имя (permanent name), которое образуется из аппаратного адреса добавлением к нему слева десяти нулевых байт. Кроме постоянного имени протокол NETBIOS позволяет добавлять (и удалять) обычные имена и групповые имена . Обычные имена служат для идентификации рабочей станции, групповые могут служить для посылки пакетов одновременно нескольким станциям в сети. Постоянное имя удалить нельзя, так как оно полностью определяется аппаратным обеспечением станции.

При добавлении обычного имени протокол NETBIOS опрашивает всю сеть для проверки уникальности имени. Групповое имя может быть одинаковое на нескольких станциях, поэтому при добавлении группового имени опрос сети
не выполняется.

После добавления нового имени этому имени присваивается так называемый номер имени (name number), который используется для передачи данных по сети.

Сравнивая методы адресации, используемые протоколами IPX/SPX и NETBIOS, нетрудно заметить, что метод адресации протокола NETBIOS более удобен. Вы можете адресовать данные не только одной станции (как в IPX и SPX) или всем станциям сразу (как в IPX), но и группам станций, имеющим одинаковое групповое имя. Это может быть удобно, если в сети работают несколько групп пользователей, которые интенсивно обмениваются данными между собой.

Другим преимуществом схемы адресации протокола NETBIOS перед схемой адресации протоколов IPX/SPX можно считать отсутствие необходимости получать в фирме Novell свой собственный номер сокета для идентификации вашего программного обеспечения. Вы можете придумать свое собственное уникальное групповое имя, включающее, например, название программы и вашей фирмы, и использовать его для работы по схеме клиент-сервер.

4.2. Работа с протоколом NETBIOS

Протокол NETBIOS предоставляет программам интерфейс для передачи данных на уровне датаграмм и на уровне каналов связи. Для вызова NETBIOS программа должна создать в памяти управляющий блок, который называется NCB (Network Control Block - сетевой управляющий блок). Адрес заполненного блока NCB передается прерыванию INT 5Ch, в рамках которого и реализован интерфейс протокола NETBIOS. Есть также альтернативный интерфейс, реализованный в рамках прерывания INT 2Ah, который поддерживается эмулятором NETBIOS, разработанным фирмой Novell, а также операционной системой Windows for Workgroups версии 3.1.

4.2.1. Проверка присутствия NETBIOS

Первое, что должна сделать программа, желающая воспользоваться протоколом NETBIOS, - проверить наличие в системе интерфейса NETBIOS.

Ниже приведена программа, которая определяет, установлен ли драйвер NETBIOS.

С помощью функции getvect() программа получает указатель на обработчик прерывания INT 5Ch. Это прерывание используется для вызова NETBIOS. Если сегментная компонента адреса равна нулю или F000h, обработчик прерывания не установлен или установлена заглушка, расположенная в BIOS. В этом случае программа считает, что NETBIOS отсутствует.

// =================================================== // Листинг 16. Проверка присутствия NETBIOS // // Файл nbver.cpp // // (C) A. Frolov, 1993 // =================================================== #include #include #include #include #include #include void main(void) { void interrupt (*int5C)(...); printf("Check if NETBIOS is installed\n"); int5C = getvect(0x5c); if(FP_SEG(int5C) == 0x0000 || FP_SEG(int5C) == 0xF000) { printf("NETBIOS NOT installed.\n"); } else printf("NETBIOS is installed!\n"); }

Другой способ проверки наличия интерфейса NETBIOS заключается в вызове прерывания INT 2Ah. Загрузите в регистр AH нулевое значение и вызовите прерывание INT 2Ah. Если после возврата из прерывания в регистре AH
попрежнему находится нуль, драйвер NETBIOS не установлен.

Данный способ проверки будет работать на виртуальной машине DOS, запущенной в среде Windows for Workgroups версии 3.1 (если Windows работает в расширенном режиме).

Приведенная ниже программа определяет присутствие NETBIOS с помощью вызова прерывания INT 2Ah (листинг 17):

// =================================================== // Листинг 17. Проверка присутствия NETBIOS // с использованием интерфейса INT 2Ah // // Файл 2atest.cpp // // (C) A. Frolov, 1993 // =================================================== #include #include #include #include #include #include void main(void) { union REGS regs; printf("Check if NETBIOS is installed\n"); regs.h.ah = 0; int86(0x2a, ®s, ®s); if(regs.h.ah == 0) { printf("NETBIOS NOT installed.\n"); } else printf("NETBIOS is installed!\n"); }

Прерывание INT 2Ah используется в сетях фирм Microsoft и Lantastic. Эмулятор протокола NETBIOS, поставляющийся фирмой Novell вместе с операционной системой Novell NetWare, поддерживает как интерфейс прерывания INT 5Ch, так и интерфейс INT 2Ah.

4.2.2. Вызов команд протокола NETBIOS

Интерфейс протокола NETBIOS реализован в рамках прерывания INT 5Ch или INT 2Ah и очень прост.

Для вызова команд протокола NETBIOS вам достаточно подготовить блок NCB, загрузить его дальний адрес в регистры ES:BX и вызвать прерывание INT 5Ch.

Протокол NetBIOS был создан для работы в локальных сетях. Система NetBIOS предназначена для персональных ЭВМ типа IBM/PC в качестве интерфейса, независящего от фирмы-производителя. NetBIOS использует в качестве транспортных протоколов TCP и UDP. Описание NetBIOS содержится в документе IBM 6322916 "Technical Reference PC Network".

Пакет NetBIOS создан для использования группой ЭВМ, поддерживает как режим сессий (работа через соединение), так и режим дейтограмм (без установления соединения). 16-и символьные имена объектов в netbios распределяются динамически. NetBIOS имеет собственную dns, которая может взаимодействовать с интернетовской. Имя объекта при работе с NetBIOS не может начинаться с символа *.

Приложения могут через NetBIOS найти нужные им ресурсы, установить связь и послать или получить информацию. NetBIOS использует для службы имен порт - 137, для службы дейтограмм - порт 138, а для сессий - порт 139.

Любая сессия начинается с NetBIOS -запроса, задания ip-адреса и определения tcp-порта удаленного объекта, далее следует обмен NetBIOS -сообщениями, после чего сессия закрывается. Сессия осуществляет обмен информацией между двумя NetBIOS -приложениями. Длина сообщения лежит в пределах от 0 до 131071 байт. Допустимо одновременное осуществление нескольких сессий между двумя объектами.

При организации IP-транспорта через NetBIOS IP-дейтограмма вкладывается в NetBIOS -пакет. Информационный обмен происходит в этом случае без установления связи между объектами. Имена Netbios должны содержать в себе IP-адреса. Так часть NetBIOS -адреса может иметь вид, ip.**.**.**.**, где IP указывает на тип операции (IP через NetBIOS), а **.**.**.** - ip-адрес. Система NetBIOS имеет собственную систему команд (call, listen, hang up, send, receive, session status, reset, cancel, adapter status, unlink, remote program load) и примитивов для работы с дейтограммами (send datagram, send broadcast datagram, receive datagram, receive broadcast datagram). Все оконечные узлы NetBIOS делятся на три типа:

Широковещательные ("b") узлы;

узлы точка-точка ("p");

узлы смешанного типа ("m").

IP-адрес может ассоциироваться с одним из указанных типов. B-узлы устанавливают связь со своим партнером посредством широковещательных запросов. P- и M-узлы для этой цели используют netbios сервер имен (NBNS) и сервер распределения дейтограмм (NBDD).

В настоящее время разработана улучшенная версия протокола NetBIOS - NetBeui (NetBios extended user interface). Этот новый протокол используется операционными системами LAN manager, LAN server, Windows for Workgroups и Windows NT, а по своей функции занимает нишу протоколов TCP/IP, охватывая связной, сетевой и транспортный уровни. Здесь стандартизован формат пакетов NetBios, добавлены некоторые новые функции. Netbuei базируется на протоколе OSI LLC2, вводит стандарт на формат кадра netbios (NDF) и использует NetBios в качестве интерфейса высокого уровня. Протокол обладает высоким быстродействием и служит для объединения небольших локальных сетей (20-200 ЭВМ) друг с другом или с главной ЭВМ. Этот протокол соответствует связному, сетевому и транспортному уровню модели OSI. В новых версиях NetBuei (3.0 и выше) снято ограничение на число одновременных сессий (254). Среди ограничений NetBuei следует назвать отсутствие внутренней маршрутизации и серьезные ограничения при работе в региональных сетях. По этой причине netbuei рекомендуется для локальных сетей (здесь они предпочтительнее других протоколов), а для внешних связей использовать, например, TCP/IP.

Самый простой способ разрешения хост-имен – это ведение таблицы этих имен и соответствующих им IP-адресов. Этой задаче отвечает файл HOSTS – ASCII-файл, который хранится на локальном жестком диске и в котором слева содержатся IP-адреса и справа хост-имена. Если пользователь передает в какое-либо приложение хост-имя, это приложение ищет его в файле HOSTS. Если это имя найдено, то эквивалентный ему IP-адрес используется для создания сетевого соединения. Если имя не найдено, то соединение не может быть установлено.

Хотя в это трудно поверить, но в свое время услуги разрешения имен для всего интернета предоставлялись с помощью одной таблицы HOSTS, содержащей тысячи записей, которые должны были регулярно скачиваться пользователями интернета для обновления их файла. Проблемы использования этого метода очевидны. Вставку имен и адресов в файл для их регистрации можно выполнять только вручную. Пользователи или администраторы должны по отдельности изменять или обновлять файл HOSTS на каждом сетевом компьютере, чтобы включить имя и адрес каждого хоста, к которому нужно обращаться по имени. Кроме того, число записей растет, файл быстро увеличивается в размерах, что начинает влиять на скорость разрешения имен. Вообразите, что вам приходится управлять файлом HOSTS с сотнями или тысячами записей для отображения имен в IP-адреса. Каждое изменение этого файла потребовало бы обновления на всех компьютерах сети, то есть пересылки файла HOSTS каждому из них.

Использование системы доменных имен (DNS)

Система доменных имен (DNS – Domain Name System) – это наиболее распространенный метод разрешения хост-имен интернет, поскольку он позволяет пользователям подсоединяться к любому сайту в Internet по имени. Это может показаться невероятно трудным, особенно в свете роста интернета за последние несколько лет, но DNS использует доменную структуру хост-имен интернет и, конечно, является основной причиной ее использования.

Система доменных имен состоит из тысяч серверов DNS, распределенных по всей сети интернет. Если вы регистрируете какое-либо доменное имя, то должны обязательно указать основной (primary) и резервный (backup) сервер DNS. Их называют доверяемыми (authoritative) серверами для вашего домена. Сервер DNS – это демон UNIX или служба Windows, отвечающая за поддержку и публикацию базы данных хост-имен и адресов в ее собственном домене.

Серверы DNS какого-либо домена не обязательно должны находиться в его собственной сети, и действительно, многие провайдеры услуг интернета (ISP) поддерживают службы веб-хостинга, в которых они предоставляют использование их серверов DNS за плату. Здесь важно то, что уполномоченный орган интернет или другая организация, зарегистрировавшая имя этого домена, имеет запись для серверов DNS, ответственных за хосты этого домена.

Поскольку администраторы отдельных сетей отвечают за назначение хост-имен в своих доменах, они также должны обеспечивать поддержку записей DNS для этих имен. Удивительно, но регистрация хост-имен домена на его серверах DNS – это такая же ручная операция, как и для файла HOSTS. Например, если вы добавляете новый сервер ftp к своей сети, то должны вручную добавить или изменить ресурсную запись DNS, указав имя и адрес новой машины.

Имена NetBIOS

Хотя NetBIOS больше не является обязательным компонентом в сети Windows Server 2003, она важна для обратной совместимости с предыдущими системами Windows, такими как Windows 9x и Windows NT, где для обмена данных используется NetBIOS, а также с приложениями, которые используют NetBIOS.

NetBIOS – это программный интерфейс, который использовался на протяжении многих лет для предоставления возможностей сетевого обмена приложениям. Некоторые возможности исходной архитектуры Windows NT, встроенные в Windows Server 2003, полностью основывались на системе именования NetBIOS для именования других компьютеров в сети.

Имя NetBIOS содержит до 16 символов, последний из которых регистрируется в Windows для идентификации конкретных функций определенных компьютеров, например, контроллеров домена или браузеров. Если включена служба NetBIOS, то каждому компьютеру операционной системой присваивается имя NetBIOS. Это имя может совпадать или не совпадать с именем входа пользователя или хост-именем компьютера. Вы используете имена NetBIOS, когда вводите UNC-имя пути, указывающее какой-либо узел сети Windows.

NetBIOS уже не является обязательным компонентом, если у вас нет клиентов более ранних версий Windows или зависящих от NetBIOS приложений, но это все еще составная часть сетевых средств Windows. Службы Workstation и Server, которые запускаются на всех компьютерах Windows Server 2003/2000, используют как NetBIOS, так и непосредственный хостинг (direct hosting) для предоставления базовых услуг разделяемого доступа к файлам, которые запрашиваются какой-либо операционной системой. Непосредственный хостинг – это протокол, который использует для разрешения имен DNS, а не NetBIOS. По умолчанию задана конфигурация, в которой включены как NetBIOS, так и непосредственный хостинг, которые используются одновременно при разрешении имен для новых соединений с другими машинами.

Поскольку NetBIOS запускается поверх интерфейса Transport Device Interface ( TDI ), она может теоретически использовать любые совместимые протоколы для своих нужд низкоуровневого взаимодействия. Первоначально операционные системы, предшествовавшие Windows 2000, использовали для трафика NetBIOS интерфейс NetBEUI (NetBIOS Extended Use Interface). Однако NetBEUI не является маршрутизируемым, поэтому, когда в качестве альтернативы был предложен TCP/IP, была начата разработка открытого стандарта (опубликованного в дальнейшем в виде документа RFC), чтобы определить способ, посредством которого можно было бы предоставлять услуги NetBIOS, используя протоколы TCP/IP. Этот стандарт получил название NetBIOS over TCP/IP, или NetBT.

Стандарт NetBT определяет два вида служб – службы сеансов и дейтаграмм. Службы сеансов используют TCP для обеспечения полностью надежной ориентированной на соединения службы передачи сообщений, а службы дейтаграмм используют протокол UDP, который требует небольшого объема служебной информации и имеет не очень высокую надежность.

В запросах к сетевым службам, которые генерируются интерфейсом NetBIOS, для обращения к другим системам используются NetBIOS-имена компьютеров. Чтобы TCP/IP мог передавать запросы через сеть, имена NetBIOS (аналогично хост-именам) должны быть сначала разрешены (преобразованы) в IP-адреса.

Поскольку имена NetBIOS преобразуются в IP-адреса до передачи данных, то вы можете использовать их вместо хост-имен во внутренних сетях. Например, чтобы подсоединиться к веб-серверу интранет, пользователь может задать NetBIOS-имя этого сервера вместо обычного хост-имени. Аналогичным образом, вы можете использовать хост-имя в UNC-пути вместо NetBIOS-имени.

Типы узлов

Имеется несколько различных методов, посредством которых компьютеры могут регистрировать и разрешать свои имена NetBIOS в сети Windows Server 2003/2000. Эти методы варьируются по своим возможностям и эффективности. Для поиска машины с определенным NetBIOS-именем компьютер может использовать сетевые широковещательные сообщения, может обращаться к серверу имен NetBIOS (NBNS) в своей сети (например, к серверу WINS) или использовать таблицу поиска в локально хранящемся файле LMHOSTS.

В стандарте NetBT определены несколько типов узлов, которые указывают, какие методы и в каком порядке должен использовать компьютер. Типы узлов присваиваются клиентам сервером DHCP или определяются параметрами TCP/IP, заданными в конфигурации клиента. В стандарте NetBT определяются следующие типы узлов.

  • B-узел. Клиент использует широковещательные сообщения в сети как для регистрации, так и для разрешения имен.
  • P-узел. Клиент направляет отдельное сообщение для регистрации или разрешения имени серверу имен NetBIOS.
  • M-узел. Клиент использует широковещательные сообщения для регистрации имен; для разрешения имен клиент использует сначала широковещательные сообщения, и если это не дает результата, то он направляет запросы серверу имен NetBIOS.
  • H-узел. Клиент направляет отдельное сообщение регистрации или разрешения имени серверу имен NetBIOS (NBNS); если NBNS недоступен, то клиент использует широковещательные сообщения, пока не будет восстановлено соединение с NBNS.

Сначала операционные системы, предшествовавшие Windows 2000, использовали для регистрации и разрешения имен расширенную службу B-узла. Служба считалась расширенной, так как при невозможности разрешения имени с помощью широковещательных сообщений в качестве альтернативы использовался файл LMHOSTS данного компьютера. Это позволяло пользователям обращаться к компьютерам в других сегментах сети, если эти компьютеры были вручную внесены в файл LMHOSTS.

В Windows Server 2003 по-прежнему включена служба WINS как сервер имен NetBIOS, в базе данных которого хранятся имена NetBIOS и IP-адреса для всей интерсети, что позволяет предоставлять эту информацию пользователям всего предприятия. Компьютеры с более ранними версиями Windows описываются как расширенные H-узлы. Эти компьютеры сначала пытаются разрешать имена NetBIOS с помощью WINS, обращаясь к широковещательным сообщениям, если WINS не дает результата или недоступна, и затем обращаются к файлу LMHOSTS, если не удается получить разрешение имени с помощью широковещательных сообщений.

Регистрация имен NetBIOS

Стандарт NetBT требует, что когда машина с более ранней версией Windows выполняет вход в сеть, ее NetBIOS-имя должно быть зарегистрировано, чтобы никакой другой компьютер не мог использовать дублированное имя и чтобы был правильно задан IP-адрес. Если вы переводите рабочую станцию в другую подсеть и вручную изменяете ее IP-адрес, то процесс регистрации обеспечивает, что другие компьютеры и серверы WINS будут знать об этом изменении.

Метод регистрации имени, используемый рабочей станцией, зависит от ее типа узла. Для регистрации имен B-узлов и M-узлов используются широковещательные сообщения, в то время как H-узлы и P-узлы направляют запросы регистрации непосредственно серверу WINS. Эти два метода описываются в следующих разделах. Один из этих двух методов используется любым компьютером с более ранней версией Windows, который подсоединяется к сети.

Регистрация имен с помощью широковещательных сообщений

B-узлы и M-узлы, использующие широковещательные сообщения для регистрации имен NetBIOS, не выполняют регистрацию в том смысле, как это делают узлы других типов. Это имя не вводится в какую-либо таблицу и не сохраняется на других компьютерах сети. Вместо этого данный компьютер использует широковещательные сообщения, чтобы "объявить" свое имя NetBIOS и проверить, не используется ли уже это имя каким-либо другим компьютером.

Процесс регистрации начинается при входе данного компьютера в сеть. Он распространяет с помощью протокола UDP набор широковещательных сообщений NAME REGISTRATION REQUEST (запрос регистрации имени), содержащих его предлагаемое имя NetBIOS и его IP-адрес. Если это имя уже используется какой-либо другой машиной в данной сети, то эта машина передает отдельное сообщение NEGATIVE NAME REGISTRATION RESPONSE (отрицательный ответ на запрос регистрации имени) по IP-адресу запрашивающего компьютера. Тем самым происходит отказ запроса регистрации. Запрашивающий компьютер должен выбрать другое имя и выполнить новую попытку регистрации.

Если компьютер не получает никакого ответа на повторяющиеся попытки рассылки пакетов NAME REGISTRATION REQUEST в течение заданного периода времени, то он передает сообщение NAME OVERWRITE DEMAND (требование перезаписи имени), объявляя, что он успешно зарегистрировал свое имя. Этот компьютер теперь должен отвечать на любые запросы, направляемые другими компьютерами по данному NetBIOS-имени.

Как и все широковещательные сообщения, эти сообщения регистрации имени ограничены локальным сегментом сети. Это означает, что компьютеры в других сетевых сегментах могут использовать то же NetBIOS-имя. Это представляет очевидную проблему. Только тщательная работа администраторов сети может воспрепятствовать конфликтам имен и неверной адресации пакетов. Эта опасность, а также излишний сетевой трафик, вызываемый отправкой широковещательных сообщений, являются причинами для создания сервера WINS как средства регистрации имен.

Регистрация имен с помощью WINS

Клиентский компьютер WINS начинает процедуру регистрации имени с генерации того же пакета NAME REGISTRATION REQUEST, что и при широковещательной передаче. Но на этот раз пакет отправляется как отдельное сообщение непосредственно серверу WINS, указанному во вкладке WINS Configuration диалогового окна TCP/IP Properties. Если никакой другой компьютер не использует это имя, то сервер WINS возвращает отправителю POSITIVE NAME REGISTRATION RESPONSE (положительный ответ на запрос регистрации имени) и записывает данное имя NetBIOS и IP-адрес в свою базу данных.

Если сервер WINS обнаруживает, что данное имя NetBIOS уже зарегистрировано другим компьютером, то сервер WINS отправляет этому компьютеру сообщение NAME QUERY REQUEST (запрос имени), чтобы он "защитил" свое зарегистрированное имя. Если этот обладатель имени не отвечает или отправляет ответ NEGATIVE NAME QUERY RESPONSE (отрицательный ответ на запрос имени), то сервер WINS регистрирует это имя для нового компьютера и отправляет ему сообщение POSITIVE NAME REGISTRATION RESPONSE. Если запрашиваемый обладатель имени отправляет ответ POSITIVE NAME QUERY RESPONSE (положительный ответ на запрос имени), это означает, что он успешно "защитил" свое имя. В этом случае сервер WINS отправляет новому компьютеру сообщение NEGATIVE NAME REGISTRATION RESPONSE, информируя, что ему отказано в попытке регистрации.

Когда сервер WINS успешно регистрирует определенное имя NetBIOS, он назначает дату истечения срока регистрации в форме значения TTL (time-to-live). Каждый раз, когда компьютер выполняет вход в сеть, это значение обновляется. Пока не истечет этот период времени, любая попытка зарегистрировать данное NetBIOS-имя будет отклоняться. Но если за этот период времени не будет выполнено ни одного входа, то данное NetBIOS-имя будет освобождено и может быть назначено снова сервером WINS без запроса какого-либо компьютера. Если данное имя остается неиспользованным в течение указанного периода времени, то объявляется как вышедшее из употребления и стирается из базы данных WINS.

Отметим, что вся транзакция проводится с помощью отдельных сообщений, направляемых между компьютерами. Здесь нет потока широковещательных сообщений, переполняющих сеть, и это является одним из главных преимуществ WINS.

Использование устаревших протоколов без явной необходимости может являться потенциальной брешью в безопасности любой компьютерной сети. В этом плане показательна недавняя шумиха вокруг , простейшая защита от которого заключалась в отказе от использования устаревшего протокола 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 сервера. Возможно они и нужны в рабочей группе, но в доменной сети оба этих протокола можно отключить.

Совет . Перед массовым внедрением данных политики в домене, настоятельно рекомендуем протестировать работу компьютеров с отключенными NetBIOS и LLMNR на тестовых группах компьютеров и серверах. И если проблем с отключением LLMNR нет, отключение NetBIOS может парализовать работу устаревших систем

Отключение протокола LLMNR с помощью групповой политики

В доменной среде широковещательные запросы LLMNR на компьютерах домена можно отключить с помощью групповой политики. Для этого:

  1. В консоли GPMC.msc создайте новую или отредактируйте имеющуюся политику, применяемую ко всем рабочим станциям и серверам.
  2. Перейдите в раздел Computer Configuration -> Administrative Templates -> Network -> DNS Client
  3. Включите политику Turn Off Multicast Name Resolution , изменив ее значение на Enabled

Отключение протокола NetBIOS over TCP/IP

Примечание . Протокол NetBIOS может используется старыми версиями Windows и некоторыми не-Windows-системами, поэтому его процесс его отключения в конкретной среде стоит тестировать.

На конкретном клиенте отключить NetBIOS можно вручную.

  1. Откройте свойства сетевого подключения
  2. Выберите протокол TCP/ IPv4 и откройте его свойства
  3. Нажмите кнопку Advanced , затем перейдите на вкладку WINS и выберите опцию Disable NetBIOS over TCP (Отключить NetBIOS через TCP/IP)
  4. Сохраните изменения

Отключить поддержку NetBIOS для конкретного сетевого адаптера можно и из реестра. Для каждого сетевого адаптера компьютера есть отдельная ветка с его TCPIP_GUID внутри HKEY_ LOCAL_ MACHINE\ SYSTEM\ CurrentControlSet\ Services\ NetBT\ Parameters\ Interfaces .

Чтобы отключить NetBIOS для конкретного адаптера, нужно открыть его ветку и изменить значение параметра NetbiosOptions на 2 (по умолчанию значение – 0).

Для полного отключение протокола NetBIOS, рассмотренные выше операции нужно выполнить для всех сетевых адаптеров компьютера.

На клиентах домена, получающих IP адреса с DHCP сервера, отключить NetBIOS можно через настройку опций DHCP сервера.

  1. Для этого откройте консоль dhcpmgmt .ms c и выберите настройки зоны Scope Option (или сервера – Server Options)
  2. Перейдите на вкладку Advanced , в выпадающем списке Vendor class выберите Microsoft Windows 2000 Options
  3. Включите опцию 001 Microsoft Disable Netbios Option и измените ее значение на 0 x2

Отдельной опции, позволяющей отключить 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}

Примечание . Для вступления изменений в силу, нужно отключить/включить сетевые адаптеры или перезагрузить компьютер.

Для работы в локальных сетях на персональных ЭВМ типа IBM/PC, разработан в виде интерфейса , который не зависит от фирмы-производителя. Был разработан фирмой Sytek Corporation по заказу IBM в 1983 году . Он включает в себя интерфейс сеансового уровня (англ. NetBIOS interface ), в качестве транспортных протоколов использует TCP и UDP .

Особенностью NetBIOS является возможность его работы поверх разных протоколов, самыми распространёнными/известными из которых являются NetBEUI , IPX и стек протоколов TCP/IP ; причём если старые версии Windows ориентировались на более лёгкие в реализации и менее ресурсоёмкие NetBEUI и IPX , то современные Windows ориентируются на TCP/IP . При использовании NetBEUI и IPX NetBIOS сам обеспечивает надёжность доставки данных (функциональность SPX не использовалась), а при использовании TCP/IP надёжность доставки обеспечивает TCP , за что удостоился отдельного имени «NBT ».

Интерфейс NetBIOS представляет собой типичный интерфейс взаимодействия приложений (API) для обеспечения сетевых операций ввода-вывода и управления низлежащим транспортным протоколом. Приложения, использующие NetBIOS API интерфейс, могут работать только при наличии протокола, допускающего использование такого интерфейса.

NetBIOS также определяет протокол, функционирующий на сеансовом/транспортном уровнях модели OSI. Этот протокол используется протоколами нижележащих уровней, такими как NBF P (NetBEUI) и NetBT для выполнения сетевых запросов ввода-вывода и операций, описанных в стандартном интерфейсном наборе команд NetBIOS. То есть, NetBIOS сам не поддерживает выполнения файловых операций. Эта функция возлагается на протоколы нижележащих уровней, а сам NetBIOS обеспечивает только связь с этими протоколами и NetBIOS API-интерфейс.

Пакет NETBIOS создан для использования группой ЭВМ. Поддерживает как режим сессий (работа через соединение), так и режим дейтаграмм (без установления соединения). 16-символьные имена объектов в NETBIOS распределяются динамически. NETBIOS имеет собственную DNS, которая может взаимодействовать с интернетовской. Имя объекта при работе с NETBIOS не может начинаться с символа *.

Приложения могут найти через NETBIOS нужные им ресурсы, установить связь и послать или получить информацию. NETBIOS использует для службы имен порт 137, для службы дейтаграмм - порт 138, а для сессий - порт 139. Любая сессия начинается с NETBIOS-запроса, задания IP-адреса и определения TCP-порта удаленного объекта, далее следует обмен NETBIOS-сообщениями, после чего сессия закрывается. Сессия осуществляет обмен информацией между двумя NETBIOS-приложениями. Длина сообщения лежит в пределах от 0 до 131071 байт. Допустимо одновременное установление нескольких сессий между двумя объектами. При организации IP-транспорта через NETBIOS IP-дейтаграмма вкладывается в NETBIOS-пакет. Информационный обмен происходит в этом случае без установления связи между объектами. Имена NETBIOS должны содержать в себе IP-адреса. Так, часть NETBIOS-адреса может иметь вид IP.**.**.**.**, где IP указывает на тип операции (IP через Netbios), а **.**.**.** - IP-адрес. Система NETBIOS имеет собственную систему команд (call, listen, hang up, send, receive, session status, reset, cancel, adapter status, unlink, remote program load) и примитивов для работы с дейтаграммами (send datagram, send broadcast datagram, receive datagram, receive broadcast datagram). Все оконечные узлы NETBIOS делятся на три типа:

  • широковещательные («b») узлы;
  • узлы точка-точка («p»);
  • узлы смешанного типа («m»).

IP-адрес может ассоциироваться с одним из указанных типов. B-узлы устанавливают связь со своим партнером посредством широковещательных запросов. P- и M-узлы для этой цели используют netbios сервер имен (NBNS) и сервер распределения дейтаграмм (NBDD).

NetBIOS обеспечивает:

  • регистрацию и проверку сетевых имен;
  • установление и разрыв соединений;
  • связь с подтверждением доставки информации;
  • связь без подтверждения доставки информации;
  • поддержку управления и мониторинга драйвера и сетевой карты.