Аутентификация 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) и успешно подключаемся к точке доступа.
Как это выглядит на примере android и iphone, видно на картинках:
То же самое мы можем проделать на свитче с поддержкой 802.1x , на картинках ниже показано как это выглядит.
Настраивам radius:
Настраиваем аутентификация на нужном порту:
Включаем аутентификация:
При соединении к Ethernet-порту компьютер спросит логин и пароль. Если этого не произошло, необходимо включить поддержку 802.1x на сетевой карте. Ниже, на картинке, это видно на примере OS X:
Linux с NetworkManager:
и Windows:
Для 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
В чем проблема?
проверьте вначале обратившись к радиусу напрямую через 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)
Либо Вы имеете ввиду другую команду? Если да, то можете написать пример?
Ну и… что непонятно то?
Внимательно смотрите что у меня в базе, а что у вас…
Не понятно, почему не работает.
Прописал пользователя, как у вас и все равно радиус не принимает пользователя.
В базе логин и пароль прописаны:
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
Причем, если прописать пользователей в файл, неважно с == либо как у меня с :=, то все работает без проблем. Именно из базы не хочет принимать пользователей, хотя при запуске, считывает данные из базы.
Значит вы что-то неправильно настроили для связи с mysql.
Внимательно проверьте все настройки.