802.1x динамическое назначение VLAN не назначает VLAN

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

Недавно я погрузился в аутентификацию 802.1x с динамическим назначением VLAN.

Моя текущая конфигурация состоит из:
– Клиента
– Коммутатора SG220 Cisco (суппликант)
– FreeRADIUS (аутентификатор), основанного на LDAP AD
– Fortigate для работы в качестве межсетевого экрана и DHCP-сервера.

Что касается аутентификации, то она работает. Мой пользователь аутентифицирован и получает сообщение Access-Accept в следующем формате.

Отправка Access-Accept с id 12 на xxx.xxx.xxx.xxx порт 6103
Tunnel-Private-Group-Id:0 = "vlan_name"
Tunnel-Medium-Type:0 = IEEE-802
Tunnel-Type:0 = VLAN
MS-MPPE-Recv-Key = 0xd899b158c44adb59894a8ad4c7554010571fffe1c3ef87f74db910c482c2be82
MS-MPPE-Send-Key = 0xe094d1c3e2fb5d5153963089c533278338d655284858156b0fb2e78e72ab7060
EAP-Message = 0x03320004
Message-Authenticator = 0x00000000000000000000000000000000
User-Name = "username"

Я добавил атрибуты туннеля в свой LDAP-директорий, и, как показывает предыдущее сообщение от FreeRADIUS в режиме отладки, они хранятся в пакете RADIUS.

Я прочитал множество тем, где советуют добавить “use_tunneled_reply = yes” в ваш файл eap.conf, что я и сделал, как показано ниже:

eap {
            use_tunneled_reply = yes
            default_eap_type = ttls
            timer_expire     = 60
            ignore_unknown_eap_types = no
            cisco_accounting_username_bug = no
            max_sessions = 4096
            md5 {
            }
            leap {
            }
            gtc {
                    auth_type = PAP
            }
            tls {
                    certdir = ${confdir}/certs
                    cadir = ${confdir}/certs
                    private_key_password = whatever
                    private_key_file = ${certdir}/server.key
                    pem_file_type = yes
                    certificate_file = ${certdir}/server.pem
                    CA_file = ${cadir}/ca.pem
                    dh_file = ${certdir}/dh
                    random_file = /dev/urandom
                    CA_path = ${cadir}
                    cipher_list = "DEFAULT"
                    make_cert_command = "${certdir}/bootstrap"
                    cache {
                          enable = no
                          max_entries = 255
                    }
                    verify {
                    }
            }
            ttls {
                    virtual_server = "inner-tunnel"
            }
            peap {
                    virtual_server = "inner-tunnel"
            }
            mschapv2 {
            }
    }

Что касается конфигурации коммутатора для интерфейса:

encrypted radius-server host xxx.xxx.xxx.xxx auth-port 1812 acct-port 0 key "some hash"== priority 1 usg-type 802.1x
aaa authentication enable default radius
dot1x system-auth-control

vlan 50
    name "vlan_name"

interface gi1
    switchport mode access
    dot1x port-control auto
    spanning-tree portfast

VLAN коммутатора получают DHCP от Fortigate, где VLAN также созданы.

Я только лишь настроил это до той степени, что установил статические порты доступа.

На данный момент у меня закончились варианты и форумы для изучения.

Буду рад, если кто-то сможет дать мне толчок в правильном направлении. Я даже не уверен, стоит ли искать проблему со стороны FreeRADIUS или со стороны коммутатора.

Если вам нужны дополнительные файлы или логи, просто дайте мне знать.

С наилучшими пожеланиями

Существует шаг, который необходим согласно руководству пользователя (конфигурация через GUI), но из вашей конфигурации CLI неясно, применили ли вы его:

Шаг 5. (Необязательный) Выберите радиокнопку для назначения VLAN RADIUS. Это включает динамическое назначение VLAN на указанном порту. Доступные опции:

  • Отключено — игнорирует результат авторизации VLAN и сохраняет исходный VLAN хоста. Это действие по умолчанию.
  • Отклонить — если указанный порт получает информацию об авторизации VLAN, он будет использовать эту информацию. Однако, если нет информации об авторизации VLAN, он отклонит хоста и сделает его неавторизованным.
  • Статический — если указанный порт получает информацию об авторизации VLAN, он будет использовать эту информацию. Однако, если нет информации об авторизации VLAN, он сохранит исходный VLAN хоста.

Я не вижу такой настройки в вашей конфигурации interface, и Отключено — это действие по умолчанию, так что, похоже, вы, возможно, не применили его?

Также говорится:

Для того чтобы функция динамического назначения VLAN работала, коммутатор требует, чтобы следующие атрибуты VLAN отправлялись RADIUS-сервером:

  • [64] Tunnel-Type = VLAN (тип 13)
  • [65] Tunnel-Medium-Type = 802 (тип 6)
  • [81] Tunnel-Private-Group-Id = VLAN ID

Но, похоже, ваше сообщение Access-Accept содержит вместо этого:

  • Tunnel-Medium-Type:0 = IEEE-802
  • Tunnel-Private-Group-Id:0 = “vlan_name”

Мы не можем видеть численные значения, но, по крайней мере, атрибут 81 должен быть VLAN ID (числом), а не именем VLAN name.

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

Проблема динамического назначения VLAN с использованием 802.1x

Введение

Настройка 802.1x с динамическим назначением VLAN – это сложный, но мощный инструмент для обеспечения безопасности сети. Вы столкнулись с проблемой, когда ваш клиент не получает правильное назначение VLAN после успешной аутентификации. Давайте разберем вашу конфигурацию и потенциальные проблемы, которые могут быть этому причиной.

Анализ конфигурации

У вас есть следующие компоненты:

  • Клиент: устройство, которое пытается подключиться к сети.
  • Коммутатор Cisco SG220: работает как суппликант (supplicant).
  • FreeRADIUS: сервер аутентификации, использующий LDAP для связи с Active Directory.
  • Fortigate: используется для предоставления DHCP и как межсетевой экран.

Согласно вашему описанию, аутентификация работает корректно, так как вы получаете Access-Accept сообщение.

Анализ Access-Accept сообщения

Содержимое вашего Access-Accept сообщения выглядит следующим образом:

Tunnel-Private-Group-Id:0 = "vlan_name"
Tunnel-Medium-Type:0 = IEEE-802
Tunnel-Type:0 = VLAN

Однако, здесь есть несколько ключевых моментов:

  1. Tunnel-Private-Group-Id должен содержать идентификатор VLAN (число), а не имя VLAN. Вы указали "vlan_name", поэтому вам необходимо исправить это в конфигурации FreeRADIUS, чтобы он передавал числовое значение VLAN.

  2. Атрибуты, которые должны быть переданы коммутатору для корректного динамического назначения VLAN, включают:

    • Tunnel-Type = VLAN (тип 13)
    • Tunnel-Medium-Type = 802 (тип 6)
    • Tunnel-Private-Group-Id = идентификатор VLAN (число)

Ваше сообщение содержит Tunnel-Medium-Type:0 = IEEE-802, что соответствует правильному значению, но необходимо проверить, что Tunnel-Private-Group-Id является числовым.

Проверка настройки переключателя

Согласно документации Cisco, для корректного динамического назначения VLAN необходимо убедиться, что на вашем коммутаторе выбрана правильная опция для назначения VLAN через RADIUS. В вашей конфигурации интерфейса не отображается настройка параметра RADIUS VLAN Assignment. Убедитесь, что:

  1. Переключатель настроен на использование динамического назначения VLAN:
    • Disabled: игнорирует информацию о VLAN.
    • Reject: отклоняет доступ, если VLAN не указан.
    • Static: оставляет оригинальный VLAN, если динамическое назначение отсутствует.

Для вашего случая нужно выбрать подходящий режим, соответствующий динамическому назначению VLAN. Убедитесь, что на интерфейсе, где подключается клиент, задействован правильный параметр, например, Reject.

Настройка FreeRADIUS

Убедитесь, что в конфигурации FreeRADIUS атрибуты Tunnel-Private-Group-Id и другие указаны корректно:

  • Проверьте, что вы настраивали LDAP для возвращения правильного атрибута.
  • Убедитесь, что вы используете параметр use_tunneled_reply = yes в конфигурации eap.conf.

Заключение

Чтобы решить вашу проблему, вам следует:

  1. Убедиться, что Tunnel-Private-Group-Id в Access-Accept содержит числовое значение VLAN.
  2. Проверить настройки коммутатора Cisco на наличие опции RADIUS VLAN Assignment и убедиться, что выставлена правильная опция.
  3. Переосмыслить конфигурацию FreeRADIUS для передачи всех необходимых атрибутов.

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

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

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