Учет IPSec-подключений с RSA-аутентификацией

Учет IPSec-подключений с RSA-аутентификацией

В Apple iOS есть функция "VPN On Demand". С помощью этой функции VPN-подключение устанавливается всякий раз, когда устройство пытается подключиться к определенным доменам или к Интернету вообще. iOS поддерживает "VPN On Demand" только с аутентификацией на основе сертификатов.

Для предоставления услуги «VPN по запросу» для пользователей iOS моего офисного VPN-сервера мы используем следующее решение IPSec:

  • Ubuntu 14.04 — ОС VPN-сервера.
  • strongSwan 5.1.2 — демон IKE.
  • Для каждого пира я генерирую индивидуальный закрытый ключ и выпускаю соответствующий сертификат. Клиент (iOS IKEv1) аутентифицируется с помощью RSA и Xauth.
  • iPhone и iPad не могут использовать IPSec без Xauth (так называемый Cisco IPSec). А "VPN On Demand" не может использовать профиль VPN, требующий ввода пароля, но имя пользователя/пароль обычно требуются для Xauth. Чтобы решить эту проблему, мы используем xauth-noauth - поддельный аутентификатор Xauth, который допускает любое имя пользователя и пароль. В этом случае мы используем только клиентский сертификат для его аутентификации.

Это решение отлично работает для нас. Но у нас появилось новое требование - настроить несколько VPN-серверов с одной базой данных пользователей и вести учет использования VPN.

Это обычная практика для этой задачи — использовать RADIUS, и strongSwan имеет плагин для этого. Но strongSwan с IKEv1/Xauth использует имя пользователя/пароль для аутентификации пользователя на внутреннем сервере RADIUS. имя пользователя/пароль не используются в моем решении.

Мои вопросы:

  1. Как использовать учет Radius, если Xauth не использует имя пользователя/пароль?
  2. Можно ли делегировать проверку подлинности RSA серверу RADIUS?

PS Большинство моих клиентов iOS используют iOS 8, которая поддерживает IKEv2. В IKEv2 есть EAP-TLS. Можно ли использовать EAP-TLS для делегирования проверки аутентификации RSA серверу RADIUS? Или я копаю не в том направлении с EAP-TLS?

PSPS Второе, что я хотел сказать, это про интерфейс VICI strongSwan. Я предполагал получать уведомления о каждом новом подключении IPSec, но, похоже, VICI работает по-другому.

решение1

Учет RADIUS врадиус-eapплагин не требует аутентификации XAuth. Фактически он работает с любым типом аутентификации, через RADIUS или нет, пока клиент запрашивает виртуальный IP-адрес (для IKEv2 даже это требование может быть отключено). Однако с некоторыми клиентами IKEv1 возникают некоторые проблемы в случае повторной аутентификации (см. проблему#937и связанные с ними).

EAP-TLS позволяет делегировать аутентификацию сертификатов для клиентов IKEv2 серверу AAA, но это не связано с учетом RADIUS.

решение2

Благодаря ecdsa я нашел несколько решений своей проблемы.

  1. Используйте учет RADIUS без аутентификации RADIUS.

Если плагин eap-radius включен с опциейучет = да, strongSwan отправит сообщение RADIUS для начала учета, даже если eap-radius не используется в файле ipsec.conf. В моем случае это сообщение RADIUS выглядит так:

Acct-Status-Type = Start
Acct-Session-Id = 1434531934-1
NAS-Port-Type = Virtual
Service-Type = Framed-User
NAS-Port = 1
NAS-Port-Id = ios-ikev1-fakexauth
NAS-IP-Address = <nas_ip>
Called-Station-Id = <nas_ip>[4500]
Calling-Station-Id = <client_ip>[4500]
User-Name = "C=CH, O=strongSwan, [email protected]"
Framed-IP-Address = 172.20.1.1
NAS-Identifier = strongSwan

Я могу получить сертификат CN из сообщения, и мне этого достаточно, чтобы сделать правильный учет. Если я хочу отклонить доступ для некоторого CN, я могу просто отклонить сообщение RADIUS от stronSwan, и соединение ipsec будет прервано.

  1. Проведите учет и проверку доступа ввверх внизскрипт вместо использования RADIUS.

Также я хотел бы использовать плагин strongSwan curl для доступа к списку отозванных сертификатов. Но я обнаружил отсутствие документации по этому плагину. Я что-то упустил?

Связанный контент