Cisco AnyConnect

Подключения к корпоративным ресурсам через Cisco AnyConnect на базе FreeRadius и Google Authenticator

Подключения к корпоративным ресурсам через Cisco AnyConnect посредстовм FreeRadius и Google Authenticator имеет свои плюсы и минусы.

Из плюсов данного варианта можно отметить то, что это решение бесплатное.

Минусы:

  • Интеграция с AD. Конечно можно интегрировать FreeRadius с AD через LDAP, но особенности архитектуры данного решения предусматривают хранение профилей пользователей локально на FreeRadius сервере.
  • Только один тип аутентификации – Time-Based One Time Password (TOTP).
  • Неочевидность необходимости использования второго фактора (пояснения в статье).

Установка компонентов

Для установки FreeRaduis в данном случае используется Debian Jessie 8.0 на виртуальной машине.

Ввиду того, что для авторизации будет использоваться TOTP, время на сервере должно быть правильным. Лучший способ синхронизировать время – установка NTP.

Далее устанавливаем FreeRadius и необходимые модули:

Загружаем и устанавливаем Google Authenticator:

Также потребуется группа для пользователей, которых не нужно аутентифицировать:

Настройка FreeRadius

Так как FreeRadius должен иметь доступ к .google_authenticator токенам во всех пользовательских директориях, он должен иметь права root-а. Для предоставления прав редактируем файл /etc/freeradius/radusd.conf.

Находим строки:

И меняем на:

Здесь, и в дальнейшем, сохраняем изменения.

Далее редактируем /etc/freeradius/users. Мы должны добавить ранее созданную группу «radius-off» в секцию «Deny access for a group of users.»

После строк:

Добавляем:

Теперь редактируем /etc/freeradius/sites-enabled/default.

Находим:

И раскомментируем строку с pam

Редактируем /etc/pam.d/radiusd. Говорим FreeRadius аутентифицировать пользователей по принципу локальный unix пароль + Google Authenticator код.

Здесь мы должны закомметнировать все строки которые начинаются с @:

И добавляем:

Теперь нам нужно добавить Radius клиента, что бы FreeRadius обрабатывал запросы от CISCO ASA. В файл/etc/freeradius/clients.conf добавляем:

Настройка пользователя

Создаем пользователя:

Создаем для него google-authenticator:

В ответ получаем QR code:

QR code

После этого необходимо перезапустить сервис FreeRadius:

На мобильном устройстве должно быть установлено приложение Google Authenticator (ссылки для iOS и Android).

Сканируем QR code с помощью приложения Google Authenticator. В итоге учетная запись «mfatest» подвязывается к Вашему мобильному устройству.

Google Authenticator app

Протестируем аутентификацию:

Где:

  • <unix_password><google_auth> — это unix пароль + код из приложения в одну строку. В данном случае пароль Pass_123, код – 731923.
  • localhost 18120 testing123– это параметры стандартного локального radius клиента.

В итоге получается:

33

Настройка CISCO ASA

На ASA лучше настроить AnyConnect VPN gateway с локальной аутентификацией. Убедиться, что подключение работает, после чего приступить к настройке аутентификации через Radius.

Настраиваем RADIUS:

  1. Переходим на Configuration / Remote Access VPN / AAA/Local Users / AAA Server Groups и создаем группу:

edit AAA Server Group

  1. Добавляем в группу сервер:

edit AAA Server Group

Где Server Name or IP Address – это адрес нашего FreeRadius, Server Secret Key – ключ который мы настроили для клиента.

  1. Тестируем связку с RADIUS сервером:

test AAA Server

Где Password – это пароль пользователя + код из Google Authenticator

При успешном тесте, на ранее настроенном «AnyConnect Connection Profiles» меняем аутентификацию с локальной на группу FreeRad:

AnyConnect Connection Profiles

На этом настройки закончены. Чтобы убедится что все работает инициируем тестовое подключение.

AnyConnect Connection test connection

Вот здесь и появляется та неочевидность, о которой упоминалось ранее. FreeRadius не использует поэтапную аутентификацию, он не может запрашивать код для Google Authentication отдельно. Поэтому для успешной аутентификации, как и в тестах, в строке Password мы вводим пароль+код. Для неискушенного пользователя это может стать преградой для комфортного использования сервиса.

Данная схема универсальна и может быть реализована для любых сервисов, поддерживающих аутентификацию посредством протокола Radius.

Обсуждение статьи доступно здесь.