Аутентификация 802.1x для Wi-Fi и Ethernet через radius

Как настроить radius было рассказано в предыдущей статье. Здесь я покажу, что поправить в его настройках для 802.1x с EAP, как настроить точку доступа Wi-Fi на примере прошивки dd-wrt, и как настроить свитч на примере HP V1910.

802.1 работает на канальном уровне и определяет протокол контроля доступа и аутентификации, который ограничивает права неавторизованных конечных устройчтв, подключенных к коммутатору или точке доступа Wi-Fi. Наибольшее распространение протокол получил в беспроводных сетях.

Достаточно удобно с его помошью разграничевать доступ для конечных пользователей к точке(ам) доступа, добавляя и удаляя пользователей при необходимости.


В первую очередь в radius надо включить EAP:

в файле /etc/raddb/sites-enabled/default
в секции authorize

eap {
ok = return
}

в секции authenticate

eap

в секции post-proxy

eap

в файле /etc/raddb/eap.conf

default_eap_type = md5

или

default_eap_type = peap

во втором случае, надо добавить/раскомментировать еще и
в секции peap

default_eap_type = mschapv2

для того чтобы все это работало с sql надо еще в файле /etc/raddb/sites-enabled/inner-tunnel раскомментировать строки

sql

далее, нам необходимо добавить юзера(ов) в таблицу radcheck , который(е) будут подключаться используя 802.1x:

mysql> INSERT INTO radcheck (username,attribute,op,value) values ('wifiuser','User-Password','==','wifipass');

проверяем:

mysql> select * from radcheck;

+----+----------+---------------+----+----------+
| id | username | attribute     | op | value    |
+----+----------+---------------+----+----------+
|  1 | wifiuser | User-Password | == | wifipass |
+----+----------+---------------+----+----------+

С radius закончено, переходим к настройкам точки доступа. Собственно все понятно из картинки. Прописываем ip radius-сервера, порт и секретную фразу. Применяем. Пытаемся подключиться к точке доступа по Wi-Fi, и видем что нас спрашивает не просто PresharedKey, а логин и пароль. Вводим прописанные нами логин и пароль (wifiuser и wifipass) и успешно подключаемся к точке доступа.

ddwrt-802-1x

Как это выглядит на примере android и iphone, видно на картинках:

android1-802-1x android2-802-1x

iphone-802-1x

То же самое мы можем проделать на свитче с поддержкой 802.1x , на картинках ниже показано как это выглядит.

Настраивам radius:
hp2-802-1x

hp3-802-1x
Настраиваем аутентификация на нужном порту:
hp1-802-1x
Включаем аутентификация:
hp4-802-1x

При соединении к Ethernet-порту компьютер спросит логин и пароль. Если этого не произошло, необходимо включить поддержку 802.1x на сетевой карте. Ниже, на картинке, это видно на примере OS X:
osx-802-1x

Linux с NetworkManager:
linux-802-1x

и Windows:
windows-802-1xДля Windows необходимо что-бы была запущена служба Wired Autoconfig

Стоит отметить, что здесь рассмотрена только аутентификация (Authentication), происходит только проверка по логину и паролю, дальнейшие действия клиента не учитываются. Если включить настройку Re-Authentication, и указать интервал времени, то девайс он будет проверять аутентификация через указанные промежутки времени, и отключит клиента если его удалили или поменяли ему пароль.

Вот и все.

Удачи в настройках.
© shadow_alone

  • У меня Радиус не хочет видеть/принимать пользователей, которые прописаны в mysql базе.
    Если прописываю пользователя в файл users, то без проблем проходит, а из базы нет.
    Радиус базу видит, данные считывает, но любому пользователю, который прописан в базе, отвечает:
    rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=241, length=20

    В чем проблема?

  • andrey0003

    проверьте вначале обратившись к радиусу напрямую через radcheck

  • Если Вы имеете ввиду выполнить radtest sqltest testpwd 127.0.0.1 1812 testing123, то выведет следующее

    root@ATMOSPHERE-NET:~# radtest sqltest testpwd 127.0.0.1 1812 testing123
    Sending Access-Request of id 236 to 127.0.0.1 port 1812
    User-Name = «sqltest»
    User-Password = «testpwd»
    NAS-IP-Address = 127.0.0.1
    NAS-Port = 1812
    rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=236, length=20

    В базе логин и пароль прописаны:
    mysql> select * from radcheck where UserName=’sqltest’;
    +—-+———-+————+—-+———+
    | id | username | attribute | op | value |
    +—-+———-+————+—-+———+
    | 1 | sqltest | Password | == | testpwd |
    +—-+———-+————+—-+———+
    4 rows in set (0.07 sec)

    Либо Вы имеете ввиду другую команду? Если да, то можете написать пример?

  • andrey0003

    Ну и… что непонятно то?
    Внимательно смотрите что у меня в базе, а что у вас…

  • Не понятно, почему не работает.
    Прописал пользователя, как у вас и все равно радиус не принимает пользователя.

    В базе логин и пароль прописаны:
    mysql> select * from radcheck where UserName=’wifiuser’;
    +—-+———-+————+—-+———+
    | id | username | attribute | op | value |
    +—-+———-+————+—-+———+
    | 1 | wifiuser | User-Password | == | wifipass |
    +—-+———-+————+—-+———+
    4 rows in set (0.07 sec)

    root@ATMOSPHERE-NET:~# radtest wifiuser wifipass 127.0.0.1 18128 testing123
    Sending Access-Request of id 144 to 127.0.0.1 port 1812
    User-Name = «wifiuser»
    User-Password = «wifipass»
    NAS-IP-Address = 127.0.0.1
    NAS-Port = 18128
    rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=144, length=20

    Причем, если прописать пользователей в файл, неважно с == либо как у меня с :=, то все работает без проблем. Именно из базы не хочет принимать пользователей, хотя при запуске, считывает данные из базы.

  • andrey0003

    Значит вы что-то неправильно настроили для связи с mysql.
    Внимательно проверьте все настройки.