В современном перевязанном массой связей мире компании стремятся предоставить максимальную гибкость и мобильность своим сотрудникам, многие из которых работают удаленно. В результате многие организации открывают доступ к сервисам через Интернет. Но в этой среде высок риск атак. Многие компании очень опасаются DoS-атак и атак с подбором паролей прямым перебором. И правильно делают. Такие атаки могут нарушать работу пользователей и создавать серьезную нагрузку на внутренние серверы.
Основная проблема с DoS-атаками заключается в том, что их практически невозможно отличить от вполне законных запросов на вход в систему. Единственный отличительный признак — частота попыток входа и их источник. Быстрая серия, состоящая из большого числа попыток входа, является признаком такой атаки.
Цель большинства DoS-атак — подобрать пароль пользователя для получения несанкционированного доступа. Часто это приводит к блокировке пользовательской учетной записи, если в доменной службе Active Directory включена политика, ограничивающая число попыток входа в систему.
Пограничный сервер (Edge Server) Microsoft Lync Server 2010 защищает от несанкционированного доступа, используя стандартные отраслевые средства защиты. Он отслеживает запросы на вход и принудительно отключает учетную запись на периметре сети. Вся связь шифруется и проходит проверку подлинности.
Пограничный сервер не защищает от DoS-атак. Однако Lync Server предоставляет гибкую платформу программирования, которую можно использовать для создания серверных приложений, позволяющих перехватывать сообщения протокола SIP (Session Initiation Protocol) на сервере и реализовывать особую логику, используя язык MSPL (Microsoft SIP Processing Language). Так работает фильтр безопасности.
Он проверяет все поступающие на вход пограничного сервера запросы. Проверка подлинности удаленного пользователя выполняется не на пограничном сервере, поэтому запрос пересылается компоненту Director или непосредственно во внутренний пул, который выполняет аутентификацию. Ответ возвращается на пограничный сервер. Фильтр безопасности проверяет запрос и ответ. Если попытка входа неудачна, фильтр безопасности проверяет число неудачных попыток для всех пользовательских учетных записей.
В следующий раз, когда клиент попытается войти, используя ту же учетную запись, и число неудачных попыток превысит максимально разрешенное значение, фильтр немедленно отвергнет запрос, не передавая его дальше для проверки подлинности. Блокировка учетных записей на пограничном сервере позволяет фильтру безопасности блокировать DoS-атаки на границе сети периметра. Это обеспечивает защиту внутренних ресурсов Lync Server.
Использование фильтра безопасности для предотвращения проверки подлинности по протоколу NTLM версии 2 позволяет принуждать пользователей входить в корпоративную сеть только с разрешенных мобильных компьютеров. При реализации дополнительных мер безопасности (таких как BitLocker и групповые политики для предотвращения установки неразрешенного ПО) корпоративные ноутбуки могут сами по себе служить «смарткартами», поддерживающими двухфакторную проверку подлинности.
Если не удалось добиться успеха с первого раза
Для предотвращения атак перебора паролей во многих организациях реализована групповая политика Active Directory, ограничивающая число попыток ввода пароля. Побочный эффект этой меры заключается в том, что атакующий может заблокировать пользовательскую учетную запись, просто выполнив большое число попыток. А это означает DoS-атаку.
Если учетная запись не защищена групповой политикой Active Directory, атакующий может подобрать пароль методом перебора. Такие атаки создают большую нагрузку на внутренние серверы и блокируют доступ пользователей к их учетным записям.
Уникальная идентификация пользователей может предотвратить атаки на учетные записи. Существует несколько вариантов выполнения этой задачи. Можно использовать IP-адрес источника, имя входа (то есть SIP URI), имя учетной записи или даже сочетание этих параметров. Внимательное изучение перечисленных вариантов показывает, что инициатор DoS-атаки может подменить IP-адрес, что исключает эту возможность идентификации пользователя.
Хотя имя входа и необходимо для успешного входа в систему Lync Server, оно не аутентифицирует пользователя. Имя входа может меняться в запросах на вход, однако это не предотвращает блокировку пользовательской учетной записи. Таким образом, ни IP-адрес источника, ни имя входа не являются хорошими средствами идентификации пользователя. Только имя учетной записи уникально идентифицирует пользователя.
Из протокола проверки подлинности можно извлечь только имя учетной записи, которое состоит из имени пользователя и имени домена. Удаленные пользователи для входа и проверки подлинности используют протокол NTLM v2, а не Kerberos. В протоколе NTLM используется состоящий из трех этапов процесс проверки подлинности. Учетные данные пользователя клиент передает на третьем этапе.
Фильтр безопасности работает на пограничном сервере в контексте доверенного серверного приложения, поэтому вправе перехватывать этот запрос на вход. Фильтр безопасности извлекает имя пользователя и домена из NTLM-сообщения проверки подлинности. Так как имени учетной записи в ответе нет, фильтр безопасности сопоставляет ответ из запроса, используя идентификатор сообщения.
Когда Director или внутренний пул отправляет ответ проверки подлинности на пограничный сервер, фильтр безопасности перехватывает его. Если ответ негативный, фильтр увеличивает на единицу счетчик неудачных попыток. В случае успешного ответа, фильтр сбрасывает счетчик до нуля.
Фильтрация на границе
Все полученные запросы на вход пограничный сервер передает фильтру безопасности, который проверяет, не превысил ли запрос на вход разрешенного числа попыток входа для данной пользовательской учетной записи. Если число попыток не превышено, фильтр пропускает запрос дальше во внутреннюю сеть.
В противном случае, фильтр блокирует запрос и возвращает ошибку 403. В итоге запрос отвергается. На протяжении всего периода блокировки все дальнейшие попытки входа отбрасываются. По истечении периода блокировки он сбрасывается и разрешаются новые запросы на вход.
Есть одна проблема, которая может возникнуть, когда пользователи входят с компьютера, не являющегося членом корпоративного домена Active Directory. Lync 2010 может автоматически попытаться войти в систему, используя учетные данные локального пользователя компьютера. Естественно, такая попытка приведет к отказу. Вход пользователя на Lync Server будет заблокирован. Чтобы фильтр безопасности не блокировал легитимных пользователей, такие попытки не считаются.
В Lync Server 2010 появился новый протокол проверки подлинности — TLS-DSK. В процессе проверки подлинности пользователи должны предоставлять клиентские сертификаты. Клиент Lync запрашивает сертификаты на сервере Lync Server. Это автоматический процесс, который происходит при первом входе в Lync Server из корпоративной сети, где пользователь прошел проверку подлинности по протоколу Kerberos.
Этот клиентский сертификат используется для аутентификации при всех последующих попытках входа. Этот сертификат подписан самим Lync Server, а не центром сертификации. Если этот же пользователь попытается подключиться к Lync с другого компьютера, проверка его подлинности будет выполняться по протоколу Kerberos (если он находится в корпоративной сети) или NTLM v2 (при доступе извне). И снова повторяется процесс получения еще одного клиентского сертификата.
TLS-DSK предоставляет уровень безопасности, очень близкий к двухфакторной проверке подлинности. При наличии Windows BitLocker компьютер или ноутбук практически является эквивалентом смарткарты (которая у нас уже есть). Пароль, необходимый BitLocker для загрузки компьютера, эквивалентен пин-коду авторизации с использованием смарт-карты.
Есть небольшой риск, что кто-то украдет клиентский сертификат с компьютера пользователя, но его можно исключить. Просто надо позаботиться о блокировании корпоративных компьютеров с тем, чтобы пользователи не могли загружать неразрешенные приложения.
Можно заставить пограничный сервер в процессе согласования сменить протокол с TLS-DSK на NTLM v2. В этом случае у злоумышленника остается возможность атаковать пользовательскую учетную запись, как было описано выше. Для предотвращения есть возможность настроить фильтр безопасности так, чтобы он отвергал запросы проверки подлинности по протоколу NTLM v2 и требовал только TLS-DSK. Это никак не влияет на федеративные и PIC-подключения.
Особенности настройки
До начала использования приложений фильтров безопасности их надо зарегистрировать на пограничном сервере. Эта операция выполняется лишь однажды, а ее последовательность описана ниже. Выполните следующие PowerShell-командлеты Lync Server 2010 под учетной записью с административными правами на Lync Server 2010.
1. Выполните следующую команду, чтобы зарегистрировать приложение фильтра безопасности с любого Lync Server. В параметре <Edge Server FQDN> надо указать полное доменное имя пограничного сервера:
new-CsServerApplication -identity "EdgeServer:<Edge Server FQDN >/security_filter" -uri "http://www.maximo.ws/security_filter" -critical $false
2. Выполните следующий командлет, чтобы инициировать репликацию конфигурации из центрального хранилища управления на пограничный сервер:
invoke-CsManagementStoreReplication
3. Выполните следующий командлет на пограничном сервере, чтобы убедиться в успешной регистрации фильтра безопасности:
get-CsServerApplication -localstore
Для запуска фильтра безопасности надо в версии для командной строки задать три параметра. В версии службы Windows установщик предложит указать эти параметра. В первом параметре указывается разделенный запятыми список внутренних доменных имен в формате Netbios. Это доменные имена, которые удаленные пользователи будут использовать для прохождения проверки подлинности на сервере Lync, подключаясь через пограничный сервер.
Допустим, ваша компания называется Woodgrove Bank и в ней есть три внутренних леса Active Directory: woodgrovebank.com, contoso.com и fabrikam.com. Учетные записи сотрудников распределены между этими лесами, поэтому в качестве значения первого параметра фильтра безопасности надо указать «woodgrovebank,contoso,fabrikam».
Эти доменные имена укажут на то, что удаленные пользователи пытаются войти в систему сервера Lync, используя учетные данные одного из этих трех доменов (например, contoso\bob, fabrikam\alice и т. п.).
Второй параметр — число неудачных попыток входа, после которого учетная запись блокируется.
Третий параметр — время, на которое блокируется учетная запись после превышения числа неудачных попыток и после которого можно снова предпринять попытку входа. Во время блокировки любые попытки входа отвергаются немедленно без проверки.
Используя описанные фильтры безопасности и протоколы проверки подлинности на пограничном сервере Microsoft Lync Server 2010, можно значительно затруднить злоумышленникам выполнение атак подбора паролей или DoS-атак.