Безопасность сервера SMB. Microsoft Windows 95 и Windows for Workgroups. Диалекты протокола SMB, страница 13

Приняв во внимание справедливую критику методов защиты от несанкционированного доступа в существующих версиях SMB, корпорация Microsoft предприняла попытку модифицировать протокол с целью повышения степени его защищенности. Соответствующее предложение опубликовано в виде поправки №4 к предварительному описанию стандарта CIFS. Модифицированный протокол называется SMB Signing.

Суть его состоит в том, чтобы и клиент, и сервер проверяли подлинность каждого сообщения, поступающего по протоколу SMB. Для этого в каждое сообщение SMB помещается электронная подпись, удостоверяющая знание пароля пользователя клиентом или сервером, издавшим это сообщение. Перед отправкой каждого сообщения и клиент, и сервер вычисляют дайджест MD5 (см. приложение 1) от текста, образованного из хешированного пароля пользователя, «ответа», сформированного при установлении сеанса, самого сообщения и его порядкового номера. Результатом является последовательность из 16 байтов, которую практически невозможно фальсифицировать, не зная хотя бы одного из перечисленных выше компонентов. Первые 8 байтов дайджеста передаются вместе с сообщением в качестве электронной подписи. Принимающая сторона выполняет те же вычисления и «послушна» только тем командам SMB, под которыми стоит проверенная электронная подпись.

Таким образом, электронная подпись удостоверяет, что команда SMB:

*  издана стороной, владеющей паролем пользователя;

*  издана в рамках именно этого сеанса;

*  не была модифицирована при передаче между сервером и клиентом.

Проверка подлинности сообщений исключает возможность атак типа «активная модификация сообщений» и «набег», для которых при прежнем протоколе знания имени и пароля пользователя не требовалось вообще. Гораздо труднее становится провести также атаки типа Man-in-the-Middle, так как после открытия сеанса для моделирования электронной подписи в каждом последующем сообщении требуется знание хешированного пароля.

Включить проверку электронных подписей в сообщениях SMB можно только в операционной системе Windows NT 4.0 с установленным обновлением Service Pack 3. Поддержка устанавливается отдельно для сервера SMB и для клиента SMB этой операционной системы. Чтобы протокол SMB Signing начал работать, необходимо при помощи редактора реестра установить значения ряда параметров.

Для сервера:

куст:   HKEY_LOCAL_MACHINE\System

раздел:    CurrentControlSet\Services\LanManServer\Parameters

параметр: EnableSecuritySignature

тип:    REG_DWORD

значение: 0 (выключено) или 1 (включено)

Если параметра нет или его значение равно 0, поддержка SMB Signing на сервере выключена. Установка значения этого параметра в 1 включает возможность работы сервера с проверкой подлинности сообщений.

параметр:RequireSecuritySignature

тип:REG_DWORD

значение:0 (выключено) или 1 (включено)

По умолчанию этого параметра значение 0. При установке в 1 он разрешит серверу работать только с клиентами, поддерживающими 8MB с электронными подписями.

Работу клиента, который подключается к серверу SMB, определяют параметры с точно таким же синтаксисом, находящиеся в реестре в ключе:

куст:HKEY_LOCAL_MACHINE\System

раздел:CurrentControlSet\Services\Rdr\Parameters

В отличие от сервера SMB значение EnableSecuritySignature для клиента SMB по умолчанию равно 1. Это значит, что, если при установлении сеанса сервер запрашивает данный протокол, клиент использует проверку подлинности сообщений по электронной подписи.

К недостаткам протокола SMB Signing можно отнести следующее:

*  В настоящее время поддерживается только в Windows NT 4.0. Установка параметра RequireSecuritySigniture в 1 приведет к тому, что соответствующий сервер или клиент не сможет устанавливать соединения SMB с другими системами.

*  Протокол не усиливает защиту пароля. Для предотвращения атак на пароли служит запрет на передачу паролей открытым текстом и запрет на передачу паролей LAN Manager.

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