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