Стоимость коммерческих решений двухфакторной проверки подлинности нередко высока, а размещать устройства идентификации и управлять ими сложно. Однако можно создать собственное решение для двухфакторной проверки подлинности с использованием IP-адреса пользователя, файла-«маяка» или цифрового сертификата.

Различные коммерческие решения обеспечивают защиту Web-узлов, выходящую за рамки традиционных методов проверки подлинности с использованием одного фактора (т. е. комбинации имени пользователя и пароля). В качестве второго фактора можно взять географическое положение, поведение пользователя, запросы с изображениями, а также более знакомые смарт-карты, устройства и отпечатки пальцев. Дополнительные сведения о двухфакторных коммерческих решениях можно найти в статьях, перечисленных во врезке «Дополнительная литература».

Но коммерческие решения — не единственный вариант. Двухфакторную процедуру проверки подлинности можно подготовить самостоятельно. В данной статье предлагаются некоторые рекомендации по проектированию двухфакторной проверки подлинности для Web-приложений, а также приводятся примеры исходного текста, на основе которых можно начать собственный проект.

Обзор двухфакторной проверки

Вернемся к краткому обзору двухфакторной проверки подлинности, т. е. использования двух различных форм идентификации потенциальных пользователей. Проверить подлинность можно с применением трех форм:

  • чего-то известного;
  • какой-то характеристики пользователя;
  • чего-то, что имеется у пользователя.

В большинстве приложений применяется только одна из этих форм, обычно первая. Имя пользователя и пароль представляют собой известные данные.

Этот уровень безопасности вполне приемлем для большинства Web-узлов и приложений. Однако, учитывая значительное увеличение числа краж личных данных и других видов мошенничества в сети, на некоторых Web-узлах вводится двухфакторная проверка подлинности. В соответствии с новым законодательством начиная с 2007 г. все электронные банковские сайты должны применять двухфакторную проверку. В скором времени эти требования могут быть распространены на сайты по подбору персонала, медицинские, правительственные и другие сайты, на которых можно получить доступ к личным данным.

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

Применение IP-адреса

В статье «Защитите сайт от атак», опубликованной в Windows IT Pro/RE № 7 за 2007 г., дается краткое описание применения IP-адреса для дополнительной идентификации пользователя. Этот метод относится к категории «какой-то характеристики пользователя». Во многих коммерческих решениях используются биологические характеристики (например, отпечатки пальцев или узор радужной оболочки глаза). Благодаря снижению стоимости аппаратных средств и совершенствованию программ этот вариант стал более практичным, но цены все еще довольно высоки.

Кроме того, некоторые пользователи возражают против хранения их биометрических данных в компании. Одно дело, если кто-то посторонний узнает номер карты социального обеспечения, и совсем другое — кража отпечатков пальцев!

Использовать решение, основанное на программном коде, проще и дешевле. Естественно, его достоверность уступает физическим решениям, но для многих случаев применения оно обеспечивает достаточную точность. У каждого пользователя есть IP-адрес, который может использоваться как второй фактор проверки.

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

Существует несколько способов проверки IP-адреса, каждый из которых обеспечивает определенный уровень достоверности при идентификации пользователя. Самый простой тест — сравнить IP-адрес пользователя со списком известных нежелательных адресов вне области обслуживания. Например, если пользователи находятся в основном в одной стране, то можно проводить сравнение со списком нежелательных адресов вне этой страны. Учитывая, что значительная часть попыток кражи личных данных исходит из-за пределов конкретной страны, блокирование опасных адресов за пределами страны наверняка позволит предотвратить большое число попыток мошенничества.

Получить списки опасных адресов не составит труда. Список Bob’s Block List по адресу http://www.unixhub.com/block.html  начинается с блоков адресов в Азии, Латинской Америке и странах Карибского бассейна. Сопоставление с ним может быть полезным, если у компании нет пользователей в этих регионах. Следует отметить, что в списки, полученные с бесплатных узлов, требуется внести некоторые изменения, чтобы не блокировать полезные сайты. Коммерческие списки отличаются более высокой точностью, например MaxMind по адресу http://www.maxmind.com . В листинге 1 показан образец псевдокода для реализации этого подхода.

 Листинг 1. Псевдокод сопоставления адреса со списком блокируемых адресов

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

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

Менее надежное решение — сравнивать «нечеткие» IP-адреса. Internet-провайдеры домашних пользователей назначают IP-адреса из принадлежащего им диапазона, обычно подсети класса C или B. Поэтому для проверки подлинности можно использовать лишь первые два или три октета IP-адреса. Например, если для пользователя зарегистрирован адрес 192.168.1.1, то впоследствии для него, возможно, придется принимать адреса с 192.168.1.1 до 192.168.254.254. Такой подход связан с некоторым риском атаки со стороны злоумышленника, пользующегося услугами того же провайдера, но тем не менее он дает хорошие результаты.

Кроме того, пользователей можно проверять, используя IP-адреса для определения их местонахождения. Необходимо купить коммерческую базу данных, содержащую все известные области IP-адресов и их приблизительное местоположение, например у такой компании, как MaxMind или Geobytes (http://www.geobytes.com ). Если зарегистрированное местоположение пользователя — Хьюстон и впоследствии он попробует обратиться к сайту из Румынии или даже из Нью-Йорка, то в доступе можно отказать или, по крайней мере, выполнить более глубокую проверку. Этот метод решает проблемы смены провайдером блока адресов. Однако у злоумышленника остается шанс доступа из того места, где есть зарегистрированные пользователи.

Можно выполнить проверку подлинности с двойным вторым фактором, начиная с исключения всех IP-адресов, совпадающих со списком блокировки, или сопоставления с «белым» списком. Если применяется «белый» список и в нем нет проверяемого IP-адреса, то пользователю может быть задан дополнительный вопрос. Если IP-адрес наконец одобрен, то пользователю можно предложить добавить текущий IP-адрес в «белый» список (пользователям следует объяснить, что в список можно вносить только адреса регулярно используемых компьютеров). В листинге 2 показан псевдокод для сопоставления со списком блокировки и «белым» списком.

Листинг 2. Псевдокод сопоставления адреса со списком блокируемых и разрешенных адресов 

Проверка подлинности с применением IP-адресов не годится для тех случаев, когда многочисленные мобильные пользователи обращаются к сайту из гостиничных номеров и других мест в стране и за ее пределами, постоянно меняя IP-адреса, Internet-провайдеров и местонахождение. Для таких пользователей нельзя применить список запрещенных IP-адресов. Этих пользователей не окажется и в списке дозволенных IP-адресов. Однако они все же могут ответить на контрольный вопрос в ходе проверки подлинности.

Чтобы предоставить более надежную защиту для «странствующих пользователей», можно углубить проверку, приняв во внимание версию браузера (которая, как правило, меняется нечасто), операционной системы и даже MAC-адрес сетевой платы. Однако при использовании таких методов обычно требуется запустить специальную программу на клиенте для доступа к необходимым параметрам. Правда, MAC-адреса и версии браузера и операционной системы можно подделать, и этот метод защиты не является безупречно надежным.

Использование файлов-«маяков» и сертификатов

Альтернативный вариант — задействовать одну из двух других форм проверки: «чего-то, что имеется у пользователя». Аппаратные системы проверки запрашивают специальное устройство. В самостоятельно проектируемых программных системах можно использовать файлы-«маяки» или сертификат, хранящийся в компьютерах пользователей. Этот подход подобен сертификатам безопасности на Web-узлах электронной коммерции, которые удостоверяют, что информация о заказе передается на нужный сайт.

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

Более высокий уровень безопасности обеспечивают цифровые сертификаты. Они требуют определенной подготовки со стороны пользователя: сертификат необходимо создать внутри компании или получить из центра сертификации (Certificate Authority, CA). Последний метод более надежный, так как подделать внешний сертификат труднее. Однако текущие расходы на поддержание сертификата сопоставимы с затратами на двухфакторное решение на основе устройств идентификации.

Конечно, файлы-«маяки» и сертификаты применимы только на домашних компьютерах сотрудников и других компьютерах, зарегистрированных в системе проверки подлинности. Нужен альтернативный метод для опознания пользователей, работающих с компьютерами, которые им не принадлежат. Один из таких методов — контрольные вопросы, упомянутые выше и приведенные в листинге 2. Однако подумайте, оправданно ли предоставление доступа к важным приложениям из общедоступных компьютеров, учитывая угрозу со стороны программ, регистрирующих нажатия на клавиши, шпионских и других вредоносных программ.

В статье рассмотрены два способа организовать простую двухфакторную проверку подлинности для Web-приложений: один с использованием «какой-то характеристики пользователя» (IP-адрес), другой с использованием «чего-то, что имеется у пользователя» (файлы-«маяки» или сертификаты). Следует помнить, что эти решения не обеспечивают очень высокого уровня безопасности, необходимого, например, в финансовой сфере, для которой больше подходят аппаратные средства. Но приведенные в статье решения превосходно сочетаются с другими методами для более надежной защиты корпоративных сетей и сайтов электронной коммерции.


Поль Хенсарлинг (phensarling@netsecuritysvcs.com ) — аналитик по безопасности в консалтинговой компании. Имеет сертификат CSSA;

Тони Хаулетт (thowlett@netsecuritysvcs.com ) — президент сетевой консалтинговой фирмы Network Security Services. Имеет сертификаты CISSP и CSNA