Технический обзор системы двухфакторной аутентификации AUTH.AS

 

ВВЕДЕНИЕ

Давайте для себя ответим на вопрос - что такое система двухфакторной аутентификации? Если не вдаваться в подробности, ответ довольно прост – это система которая помогает защитить данные. Но, как известно, дьявол в деталях, а детали в том, что к такой системе предъявляются весьма специфические требования и соответствовать им непросто. 

 

АРХИТЕКТУРА СИСТЕМЫ

Мы для себя определили следующие требования:

  1. Безопасность
  2. Масштабируемость и отказоустойчивость
  3. Удобство, функциональность и простота в эксплуатации

Эти требования звучат просто, но одновременно сложны в деталях. При проектировании и создании нашей системы, мы опирались на каждое из перечисленных требований. Мы применили лучшие, на наш взгляд, решения для того, чтобы соответствовать этим требованиям.

Давайте кратко посмотрим на «стек технологий», который мы используем.

  • В качестве платформы мы используем открытую операционную систему (ОС) семейства Linux – за основу мы взяли CentOS. Этот дистрибутив активно развивается и поддерживается.
  • Поскольку система должна хранить в себе данные, мы использовали в качестве основной базы достаточно зрелое и активно развивающееся решение - Apache Cassandra. Это NoSQL база данных с уникальными свойствами, чуть дальше мы их рассмотрим.
  • Любая система, которая является звеном в цепочке предоставления доступа, должна обладать хорошей, масштабируемой системой журналирования. Для этого мы использовали специализированную базу данных ElasticSearch.
  • В качестве основного рабочего инструмента мы реализовали web-интерфейс, который позволяет просто и удобно выполнять необходимые операции. Никаких клиентов – только браузер! Также, мы создали простой и удобный API для интеграции в уже существующие решения.
 

Архитектура системы в пределах одного узла проста – это Linux сервер, на котором запущены две базы данных под разные цели – Cassandra, как основное хранилище данных и ElasticSearch для хранения журналов и событий. Также, на сервере запущено несколько приложений для решения разных задач в рамках системы.

  • Web-подсистема – реализует административный веб-интерфейс
  • API-подсистема – реализует интеграцию и доступ к основным функциям системы через программный интерфейс. Доступ к подсистеме реализован через протокол HTTPS.
  • Radius-подсистема – реализует интеграцию с внешними системами по протоколу Radius.
  • SSL Offload-подсистема – реализует снятие «тяжелой» SSL нагрузки с основных приложений на специализированный программный комплекс на базе открытого ПО NGINX.
 

Архитектура в пределах кластера не будет выглядеть сложнее - это набор одинаковых узлов, которые выполняют одинаковые функци и и содержат избыточное количество данных (redundancy) для обеспечения производительности и отказоустойчивости. Каждый из них может заменить другой, взяв на себя нагрузку «соседа».

 

РЕАЛИЗАЦИЯ БЕЗОПАСНОСТИ

Безопасность - это требование, которое говорит обо всём сразу и ничего конкретного. Что такое безопасность для нас и нашей системы auth.as:

 
1. Операционная система
  • Отрытая ОС семейства Linux (CentOS) с модулем принудительного мандатного контроля доступа SELinux и контролем целостности файлов. Модуль контроля доступа всегда контролирует какие процессы ОС к каким файлам, какими системными вызовами пользуются. Всё это контролируется на основе составленных политик безопасности и никакой процесс не может их обойти. Все данные о том, какие процессы к каким ресурсам обращаются, журналируются. Модуль контроля целостности файлов ежедневно вычисляет контрольные суммы основных файлов и сверяет их с эталонными значениям. Результаты проверок также журналируются.
  • Файловая подсистема. Шифрование данных «на лету» доступно опционально. Данная функция крайне полезна для случаев, когда система размещается в сторонних Центрах Обработки Данных и/или есть необходимость защититься от физического изъятия данных. Шифрование обеспечивается средствами набора библиотек OpenSSL, в числе которых есть модуль GOST.
  • Сетевая подсистема. В обязательном порядке используется преднастроенный сетевой экран (firewall) - по умолчанию разрешены соединения только от доверенных узлов по заранее определённым портам. Административный доступ только через консоль или средствами SSH. Администратору доступен только специальный интерфейс командной строки (CLI). Доступ к интерфейсам системы, по умолчанию, только с использованием шифрованных соединений – HTTPS.
  • Подсистема журналирования. Локальное журналирование позволяет фиксировать все события, происходящие со всеми подсистемами, такими как SELinux, БД, Ядро и другими. Режим дистанционного журналирования позволяет отправлять все события на специализированные системы контроля, системы мониторинга и хранилища журналов. Сейчас доступны протоколы rSyslog и logstash.
 
2. Регулярные обновления ПО
  • Для системы двухфакторной аутентификации auth.as регулярно выпускаются обновления. Мы постоянно работаем над повышением надежности и увеличением производительности системы, тем самым стараемся защитить инвестиции наших заказчиков.
 
3. Механизмы резервного копирования
  • Средствами БД доступны как резервные копии всей базы, которые создаются сразу на всех узлах системы, так и могут создаваться единичные копии текущей базы данного узла. Доступен функционал инкрементальных копий базы данных. Резервные копии создаются в виде файлов, создаются «на лету», то есть не требуют остановки системы и могут быть легко архивированы централизованными корпоративными средствами резервного копирования.
  • Резервное копирование БД для хранения журналов, осуществляется таким же способом как и основной БД архивированы – создаются файлы резервной копии, которые могут быть централизованно архивированы.
 
4. Журналирование всех действий и событий в системе
  • Производится журналирование всех действий администраторов;
  • Успешное и неуспешное использование токенов пользователями;
  • Возникающие ошибки системы;
  • Журналы доступны с любого узла системы;
  • Журналы могут быть перенаправлены на внешние системы хранения, контроля и архивации.
 
5. Доступно разграничение прав внутри системы.
 
6. Система не хранит паролей пользователей.

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

 
7. Для удобства пользователей, в системе доступны временные пароли, действующие:
  • период времени
  • N-раз
  • до заданной даты (это сделано на случай, если пользователь утерял генератор или по какой-либо причине он не работает).
 
8. Система реализует защиту от перебора одноразовых паролей.
 
9. Система реализует «белые списки» доступа

В рамках “доменов”, ограничивая доступ к ним разными источниками запросов.

 
10. Мобильное приложение хранит все данные в зашифрованном виде,

Имеет свою собственную систему защиты PIN-кодом, поддерживает биометрический способ аутентификации пользователя Touch ID, на iOS платформе, скоро станет доступен аналогичный функционал на платформе Android.

 

РЕАЛИЗАЦИЯ МАСШТАБИРУЕМОСТИ И ОТКАЗОУСТОЙЧИВОСТИ

Масштабируемость и Отказоустойчивость - это два термина, которые значат очень много, каждый производитель в них вкладывает своё понимание того, как это должно быть. Давайте посмотрим, что эти слова значат в нашем случае.

Мы уверены, что единственный честный способ масштабирования – горизонтальный, с линейным ростом производительности. Это значит, что если 1 элемент системы обслуживает 1 000 запросов в секунду, то 2 элемента должны обслуживать 2 000, а 10 - уже 10 000. И так, до необходимой заказчику производительности. Именно таким принц ипом мы руководствовались при проекти ровании системы. А главной парадигмой отказоустойчивости системы является отсутствие в ней единой точки сбоя.

1. Ключевым элементом системы является NoSQL База Данных Cassandra. Её ключевые характеристики:

  • Высокая производительность;
  • Автоматическое распределение и избыточное хранение данных;
  • Автоматическая кластеризация БД.

2. Вторым ключевым элементом является сама система двухфакторной аутентификации – программный комплекс выполняющий всю логику работы системы, он самостоятелен и сессионно независим. Его масштабируемость ограничена только производительностью сети и базы данных.

3. Все узлы системы унифицированы. Они идентичны по своим функциям. Это даёт удобство масштабирования и прогнозируемость результата.

4. Производительность одного узла составляет примерно 1000 аутентификаци й в секунду (зависит от конфигурации серверов и конфигурации интеграции со сторонними системами)

5. Если Вы используете интеграцию с корпоративной Active Directory, то система будет каждые 5 минут проверять доступность серверов AD и, в случае сбоя, не будет обращаться к сбойным, при этом оповестит администратора о сбое Active Directory. Определение сбойный серверов также происходит в процессе каждой аутентификации.

6. Важный аспект при масштабировании систем – Балансировка нагрузки. Система auth.as обрабатывает запросы всеми доступными узлами, к такому режиму работы хорош о подходя т ме тодик и бал ансиров ки механизмами DNS (DNS round-robin). Т.е. система для масштабирования сама по себе не требует внешних программных или аппаратных балансировщиков нагрузки. При этом, система поддерживает и также хорошо масштабируется с использованием внешних программных или аппара тных балансировщиков нагрузки. Мы используем очень стандартные протоколы на базе HTTP(S), Radius. Для их балансировки подходят практически любые современные решения для балансировки нагрузки, такие как Citrix Netscaler, Riverbed Zeus или Microsoft Network Policy Server.

7. Ещё одним важным критерием масштабируемости является способность быстро наращивать производительность системы. Поскольку, узлы auth.as предельно унифицированы, масштабирование сводится просто к добавлению дополнительных узлов системы.

Типовым способом поставки решения является предоставление эталонного образа системы в виде контейнера для платформ виртуализации (VMware, KVM, Hyper-V, Xen). В этом случае, задача наращивания производительности сводится к запуску дополнительных виртуальных машин и подключение их в кластер БД Cassandra, что не занимает много времени и делается «на лету». По окончании автоматической репликации данных на дополнительные машины, остаётся только распределить на них нагрузку. 

 

УДОБСТВО, ФУНКЦИОНАЛЬНОСТЬ И ПРОСТОТА ЭКСПЛУАТАЦИИ

Немного о том, как мы видим простоту и функциональность:

  1. Простые, наглядные и красивые интерфейсы – Web-интерфейс системы построен на современных web-технологиях – максимально используется framework AJAX, мы не перезагружаем по каждому клику страницу. Все данные подгружаются асинхронно и незаметно для пользователя. Широко используется web-framework Bootstrap 3, интерфейсы выглядят опрятно и аккуратно. Для заказчиков доступна опция адаптации интерфейса под корпоративную стилистику.
  2. При проектировании интерфейсов мы старались соблюсти правило – любое действие должно делаться не более чем в 1-3 клика, при этом интерфейс должен быть прост и интуитивно понятен.
  3. Красивое и удобное мобильное приложение с дополнительной степенью защиты.
  4. Возможность импорта данных из системы двухфакторной аутентификации, с функцией LazySync, для физических генераторов переменных паролей. Данная функция даёт возможность не останавливая работу пользователей, в фоновом режиме, синхронизировать Event-Based генераторы.
  5. TrueOTP – функция повышающая безопасность Time-Based паролей. Она позволяет блокировать пароль после использования, в других системах переменный Time-Based пароль действует до истечения интервала его существования.
  6. Модуль SMS оповещения позволяет отправлять пользователю сообщения, с помощью которых можно подтвердить его личность и позволить ему производить операции по привязке, отвязке, блокировке или разблокировке токена самостоятельно.
  7. В системе реализовано множество функций мониторинга системных параметров, сквозного мониторинга работоспособности системы, функций «самовосстановления», перенаправления нагрузки на штатно функционирующие узлы.
  8. Удобный способ «доставки» решения заказчику – система поставляется в виде образов для платформ виртуализации (VMware, KVM, Hyper-V, Xen).
 

РАБОТАЮЩИЕ И ПРОТЕСТИРОВАННЫЕ СХЕМЫ И РЕШЕНИЯ

  • Решение по виртуализации рабочих столов пользователей на базе VMware Virtual Desktop Infrastructure, на данный момент более 1 000 рабочих столов - протестировано и работает с системой двухфакторной аутентификации auth.as. Протокол интеграции Radius, без промежуточных балансировщиков нагрузки.
  • Решение по виртуализации приложений на базе Citrix Metaframe, более 10 000 конкурентных пользователей. Протокол интеграции Radius, с промежуточным программным балансировщиком на базе Microsoft Network Policy Server. Решение протестировано, сейчас находится в ограниченном продуктивном режиме работы. Вскоре планируется переход на полномасштабное использование. Протестировано так же с Citrix Netscaler в рамках данного проекта.
  • Решение по защите корпоративного портала на основе Microsoft SharePoint Portal, более 10 000 конкурентных пользователей. Протокол интеграции Radius, с промежуточным сервером аутентификации на основе Microsoft Forefront Treat Management Gateway и промежуточным балансировщиком нагрузки на базе Microsoft Network Policy Server. Решение протестировано, сейчас находится в ограниченном продуктивном режиме работы, планируется переход на полномасштабное использование.
  • Интеграция в решение Bitrix Корпоративный Портал, более 1 000 пользователей. Протокол интеграции – API. Решение протестировано и введено в продуктивную эксплуатацию.
  • Решение по защите удалённого корпоративного доступа через сеть Интернет, на основе открытого решения OpenVPN, более 1 000 пользователей. Протоколы интеграции Radius и API, используется API. Решение протестировано и введено в продуктивную эксплуатацию.
  • Протестирована и подтверждена интеграция в продукт Identity Service Engine компании Cisco Systems. Использование данной связки позволит защитить вторым фактором аутентификации доступ к сетевому оборудованию Cisco и др. Запущен проект по внедрению в одном из операторов связи.
  • Решение по двухфакторной аутентификации в серверной Linux-инфраструктуре, доступ администраторов на серверы осуществляется только с использованием переменных паролей. Интеграция осуществлена по протоколу Radius через подсистему аутентификации PAM внутри Linux.
 

Скачать полную версию технического обзора AUTH.AS в формате PDF