Двухфакторная аутентификация — предоставление информации для входа в систему от двух различных типов аутентификации, в большинстве случаев первым источником является имя пользователя и пароль, которые являются неизменными и могут быть скомпрометированы (троянами, кейлоггерами и.т.д.). Для этого и применяется второй тип аутентификации, какое либо устройство, которое генерирует уникальный временный пароль/код, действующий в течении короткого периода (5-30 секунд), что обеспечивает безопасность даже если временный пароль перехвачен.
Кроме того, временный пароль генерируется устройствами, не подверженными рискам перехвата, обычно аппаратными ключами, например такими:
Citrix Web Interface «из коробки» поддерживает двухфакторную аутентификацию с использованием аппаратных ключей Aladdin SafeWord и RSA SecurID, стоимость которых колеблется в пределах 25-50USD, а также двухфакторную аутентификацию с использованием RADIUS сервера, с помощью которой можно подключать ключи подешевле (около 5USD)
В целях еще большей экономии для этой же цели можно воспользоваться софт-токенами на мобильных телефонах. Кстати, целью внедрения софт-токенов может быть также удобство для конечного пользователя — аппаратный ключ это дополнительное устройство, которое нужно всегда иметь при себе, а телефон у большинства юзеров и так все время под рукой.
Бесплатных софт-токенов для телефонов на рынке достаточно много, например Google Authenticator, но наш выбор пал на проект Mobile-OTP по следующим причинам:
- наличие клиентов для всех телефонов (а не только для ios/android/blackberry) — J2ME,WP7,PalmOS,webOS,Maemo,Openmoko
- дополнительная защита пинкодом (чего нет в Google Authenticator), то есть даже при утере устройства временный пароль без пина не сгенерится
- Наличие исходников для всех клиентов — можно пересобрать со своим брендингом, если очень надо
OK, выбор обоснован, перейдем к реализации.
Установка и конфигурация RADIUS сервера для MOTP
Можно воспользоваться любым готовым RADIUS сервером, и только подключить pam модуль для MOTP (например motpy). Но легче воспользоваться готовой сборкой MOTP-AS
MOTP-AS
MOTP-AS — это RADIUS сервер с поддержкой for Mobile-OTP плюс веб интерфейс для создания и подключения юзеров. Можно скачать VMWare image и запустить прямо на машине где установлен WI, или на другом хосте в той же сетке. Понятно, что сервер MOTP-AS не должен быть доступен извне.
Подключение пользователей
MOTP-AS предоставляет удобный админ интерфейс, подключить софт-токен для пользователя довольно просто:
1. Добавляем клиента для RADIUS
«System» => «RADIUS» => «Add new RADIUS client»
Name: Citrix Web Interface
Secret: RADsecret — Radius секрет ( его же будем указывать к в конфиге WI)
IP: 192.168.0.100 — адрес по которому будет доступен WI сервере
2. Добавляем пользователя
«Administration» => «Users» => «Add new User»
User: john
Name: John Doe
Role: user
3. Добавляем софт-токен
=> «Administration» => «Devices» => «Add new Device»
Name: nokia 6310i
Secret: 1234567812345678
Здесь, значение поля Secret берется со сгенерированного телефоном клиента, см. инструкции конкретного клиента для генерации секрета.
Настройка Citrix Web Interfacе для использования MOTP-AS в качестве второго фактора аутентификации
Указываем Shared Secret для RADIUS сервера на WI
Shared Secret для RADIUS сервера будет хранится в текстовом файле на локаольном диске, путь к нему указываетя переменной RADIUS_SECRET_PATH в файле web.config (путь должен быть относительным к /WEB_INF)
Активируем RADIUS аутентификацию для XenApp сайта
— в Citrix Web Interface management console щелкните правой кнопкой мышки и выберите «authentication methods»
— Кликните Properties и выберите Two-Factor authentication
— Укажите RADIUS в списке Two-Factor settings
— Укажите адрес по которому доступен MOTP-AS сервер (порт оставьте стандартным — 1812)
— щелкните OK
Ну вот, в принципе, и все
Должно работать так: при входе в систему будет запрашиваться дополнительно код PASSCODE, куда и надо вписывать временный пароль
С успехом применено для версии WI 5.3 и 5.4.
Подробная инфо по подключению юзеров здесь
Автор: EminH