Требования к идентификации EAP TLS

Вопрос или проблема

Я использую freeradius для тестирования EAP-TLS. Авторизация проходит успешно только в том случае, если я указываю идентичность. Она даже не должна соответствовать каким-либо полям в клиентском сертификате. Почему это требуется, если у меня есть сертификат и закрытый ключ? Я знаю, что протокол EAP имеет сообщение-ответ, которое должно содержать строку идентичности. Существует ли конфигурация, при которой AS принимает пустое поле?

Моя система:

  • Точка доступа (NAS): Openwrt с HostAP
  • AS: freeradius
  • Клиент: wpa_supplicant

Ответ EAP-Identity обычно содержит имя пользователя или какой-либо идентификатор, который может использоваться AS для упрощения процесса аутентификации.

Вы можете установить идентичность по умолчанию в конфигурационном файле eap, который обычно находится по пути /etc/freeradius/номер версии/mods-enabled/eap. Найдите раздел tls и добавьте следующую строку: identity = "default"

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

ИЛИ

Вы можете настроить прием анонимных идентичностей, изменив конфигурационные файлы ‘sites-enabled/default’ или ‘sites-enabled/inner-tunnel’. Найдите раздел authorize и измените условие if, проверяющее имя пользователя, на что-то вроде:

if (User-Name == "anonymous" || User-Name == "") {
    update control {
        Cleartext-Password := "<некоторая-случайная-строка>"
    }
    update request {
        Stripped-User-Name := "anonymous"
        Realm := "NULL"
    }
}

Ответ или решение

EAP-TLS использует клиентские сертификаты для аутентификации, но при этом, согласно протоколу EAP, требуется предоставление идентификатора. Это связано с тем, что идентификатор необходим для управления сессиями и может быть использован сервером аутентификации (AS) для установки конкретного контекста или пользователя.

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

  1. Определение идентификатора по умолчанию:
    Вы можете установить идентификатор по умолчанию в конфигурационном файле EAP. Обычно этот файл находится по пути /etc/freeradius/<номер версии>/mods-enabled/eap. Найдите раздел tls и добавьте следующую строку:

    identity = "default"

    Замените "default" на идентификатор, который вы хотите использовать, если клиент предоставляет пустое значение. Это позволит вам избежать ошибки, связанной с отсутствием идентификатора.

  2. Настройка анонимного идентификатора:
    Если вы хотите принимать анонимные идентификаторы, вам нужно изменить конфигурацию в файлах sites-enabled/default или sites-enabled/inner-tunnel. Найдите секцию authorize и измените условие, которое проверяет имя пользователя, на что-то вроде:

    if (User-Name == "anonymous" || User-Name == "") {
       update control {
           Cleartext-Password := "<some-random-string>"
       }
       update request {
           Stripped-User-Name := "anonymous"
           Realm := "NULL"
       }
    }

    Это позволит серверу принимать пустой идентификатор, присваивая анонимному пользователю определенное имя, что упростит аутентификацию.

  3. Проверка конфигурации wpa_supplicant:
    Убедитесь, что в конфигурации вашего supplicant (wpa_supplicant) также правильно указаны параметры идентификации. Возможно, стоит явно указать используемую идентификацию, если по каким-то причинам она не передается.

  4. Тестирование и отладка:
    После внесения изменений проверьте логи FreeRADIUS, чтобы убедиться, что аутентификация проходит успешно и идентификатор обрабатывается правильно. Также вы можете использовать инструменты для отладки, такие как radtest, для тестирования ваших настроек.

Следуя этим шагам, вы сможете настроить FreeRADIUS для работы с EAP-TLS без необходимости предоставления идентификатора.

Оцените материал
Добавить комментарий

Капча загружается...