FreeRadius+MySQL

tuxРассмотрим как настроить радиус-сервер с привязкой к базе данных в MySQL на примере CentOS, FreeRadius и MySQL.

Сейчас очень многие девайсы поддерживают работу через радиус, например точки доступа Wi-Fi.

Устанавливаем MySQL, если он конечно у Вас уже не стоит

#yum install mysql mysql-devel mysql-server

#chkconfig —levels 235 mysqld on
#/etc/init.d/mysqld start

#netstat -tap | grep mysql
получаем:
[root@nx ~]# netstat -tap | grep mysql
tcp        0      0 *:mysql                     *:*                         LISTEN      2793/mysqld

установим пароль для пользователя root для MySQL:
mysqladmin -u root password 123456

Устанавливаем FreeRadius
yum install freeradius freeradius-mysql

Правим файл /etc/raddb/users, добавляем:

shad  Auth-Type := Local, User-Password == «test»
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 192.168.0.7,
Framed-IP-Netmask = 255.255.255.0,

правим /etc/raddb/clients.conf
раздел client 127.0.0.1 должен выглядеть вот так:

client 127.0.0.1 {
secret          = 123
shortname       = localhost
nastype     = other
}

проверяем:
#radiusd -X
на другой консоли
#radtest shad test localhost 1812 123
получаем:
Sending Access-Request of id 35 to 127.0.0.1 port 1812
User-Name = «shad»
User-Password = «test»
NAS-IP-Address = 255.255.255.255
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=35, length=44
Service-Type = Framed-User
Framed-Protocol = PPP
Framed-IP-Address = 192.168.0.7
Framed-IP-Netmask = 255.255.255.0
Радиус работает и отвечает

перейдем к настройкам MySQL
#mysql -u root -p
mysql>CREATE DATABASE radius;
mysql>GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY «123»;
mysql>\q

#mysql -u root -p radius </usr/share/doc/freeradius-1.1.3/examples/mysql.sql

проверяем:

mysql -u root -p
mysql>use database radius;
mysql>show tables;
mysql>\q

правим /etc/raddb/sql.conf, раскомментируем
readclients = yes

правим /etc/raddb/radiusd.conf
в секциях authorize{},accounting{}, session{}, post-auth{} раскомментируем
sql
получиться примерно так:
authorize {
preprocess
chap
mschap
suffix
eap
sql
pap
}

Заполним базу в MySQL:
#mysql -u root -p
mysql> use database radius;
mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES (‘testsql’, ‘Password’, ‘test123’);

проверяем:
mysql> select * from radcheck where UserName=’testsql’;
mysql>\q

правим /etc/raddb/sql.conf
выставляем правильные значения:
server = «localhost»
login = «radius»
password = «123»
radius_db = «radius»

в файле /etc/raddb/users комментируем строки
#DEFAULT        Auth-Type = System
#       Fall-Through = 1

запускаем radiusd -X
на другой консоли
#radtest testsql test123 localhost 1812 123

если получили Access-Accept, то всё в порядке, связка FreeRadius+MySQL работает, теперь можете заполнять таблицы DB нужными значениями и использовать в своих устройствах авторизации через Ваш радиус, для этого IP устройства надо добавить в /etc/raddb/clients.conf, примерно так:

client 192.168.0.55 {
secret          = MysUp3rseCr3t
shortname       = my_device_name
nastype     = other
}

Удачной работы!!!

© shadow_alone