Freeradius 802.1X + LDAP | Ethernet

Freeradius + MAC address (MySQL) + LDAP + 802.1X Ethernet authentication

Реализация RADIUS сервера с механизмом проверки Ethernet MAC адреса и LDAP учетки для ограничения доступа к среде Ethernet

Эта архитектура является доработкой механизма ограничения доступа из предыдущей статьи. Предполагается, что у вас уже есть RADIUS, проверяющий MAC адреса устройств (в моем случае — это были беспроводные девайсы).

Теперь мы хотим пойти дальше и внедрить ограничение доступа к Ethernet среде. И простого логин-пароля мало, будем использовать LDAP учетку пользователя для его авторизации в сети.

# Прописываем настройки подключения к своему LDAP каталогу

modules/ldap.conf

# Ставим тип аутентификации по умолчанию TTLS

eap.conf
eap {
    default_eap_type = ttls
...
}

sites-enabled/inner-tunnel.conf

# Нужно раскомментировать во всех секциях модуль ldap

authorize {
...
    ldap
....
}
authenticate {
...
    ldap
...
}
post-auth {
...
    ldap
...
}

Для удобного траблшутинга и статистики можно настроить логгирование reject-событий в БД. Мой вариант такой:

В стандартной БД freeradius создал вот такую таблицу

mysql> select * from reject_reason limit 1;
+----+--------------+-----------------------------------------+---------------------+
| id | username | reason | date |

Далее в том самом блоке проверки MAC адреса к условию reject добавил INSERT

sites-enabled/default

post-auth {

if("%{sql:SELECT COUNT(mac) FROM radmac WHERE mac ='%{Calling-Station-Id}'}" > 0){ 
      ok } 
else {   
%{sql: INSERT INTO reject_reason (username,reason,date) VALUES ('%{User-Name}','Wrong Mac-Addr %{Calling-Station-Id}','%S')}
   reject 
}
 Post-Auth-Type REJECT {
 # log failed authentications in SQL, too.
 %{sql: INSERT INTO reject_reason (username,reason,date) VALUES ('%{User-Name}','Wrong LDAP','%S')}
 attr_filter.access_reject
 }
}

 

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

 

Конечно же, не забываем, что для 802.1Х необходимо настроить сетевое оборудование соответствующим образом. Для CISCO-like свичей интересующая часть конфига будет выглядеть следующим образом:

radius-server timeout 10
radius-server key 0 %radius secret pass%
radius-server authentication host %radius ip%
radius-server accounting host %radius ip%
aaa-accounting enable
aaa enable
!
dot1x enable
dot1x web authentication enable
!
Interface Ethernet1/0/1
 dot1x enable
 dot1x port-method macbased

Небольшого комментария заслуживает срока port-method macbased. Основных методов два: macbased и portbased. При первом, авторизация на порту будет требоваться для каждого MAC адреса, во втором же случае, если первый MAC авторизован, порт переходит в открытое состояние и у всех последующих клиентов авторизация запрошена не будет. Актуально для случаев, когда за портом управляемого свича стоит L2 оборудование.

И последний пункт программы: клиентские девайсы. Процесс авторизации по протоколу 802.1Х должен инициализировать сам клиент. Для этого в некоторых операционных системах предусмотрены стандартные механизмы, для других требуется вспомогательное ПО.

P.S. Авторизация по MAC, LDAP, логин-паролю, работа freeradius с базой данных — чтение и запись в нее информации это лишь часть того, что можно реализовать на базе протокола. Также можно на основе любых credentials ( учетных данных, MAC IP адресов) помещать клиента в гостевой VLAN, реализовывать dynamic VLAN с назначением порту нужного VLANID для определенного клиента и др.

 

Related posts:

1 thought on “Freeradius 802.1X + LDAP | Ethernet

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *