Настройка FreeRadius.
FreeRadius один из наиболее быстро развивающихся radius сервером с большими функциональными возможностями. В свомих задачах я применяю FreeRadius для авторизации, поэтому в моем конфиге, все лишнее убрано. FreeRadius я использую в связке с MySQL.
Стаим FreeRadius из портов:
cd /usr/ports/net/freeradius-mysql/ make install clean
Перед сборкой появится меню выбора опция компиляции:
┌────────────────────────────────────────────────────────────────────┐ │ Options for freeradius-mysql 1.1.8 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │[ ] KERBEROS With Kerberos support │ │ │ │[ ] HEIMDAL With Heimdal Kerberos support │ │ │ │[ ] LDAP With LDAP database support │ │ │ │[ ] PGSQL With PostgreSQL database support │ │ │ │[ ] UNIXODBC With unixODBC database support │ │ │ │[ ] FIREBIRD With Firebird database support (EXPERIMENTAL) │ │ │ │[ ] SNMP With SNMP support │ │ │ │[ ] EDIR With Novell eDirectory support │ │ │ │[ ] NOPERL Do not require perl (use only if necessary) │ │ │ │[ ] EXPERIMENTAL Build experimental modules │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘
После того как сборка и инсталяция FreeRadiusа можно переходить к настройке. Директория в которой находятся конфигурационный фвйлы FreeRadius – /usr/local/etc/raddb/ Нас интересуют 3 конфигурационных файла radiusd.conf – основной файл настроек, sql.conf – настройки отвечающие за работу с SQL сервером и clients.conf – тут настраиваются доступы клиентов приходящих за авторизацией.
Настройку начнем с radiusd.conf у меня выглядит так:
prefix = /usr/local exec_prefix = ${prefix} sysconfdir = ${prefix}/etc localstatedir = /var sbindir = ${exec_prefix}/sbin logdir = /var/log raddbdir = ${sysconfdir}/raddb radacctdir = ${logdir}/radacct confdir = ${raddbdir} run_dir = ${localstatedir}/run/radiusd log_file = ${logdir}/radius.log libdir = ${exec_prefix}/lib pidfile = /var/run/radiusd/radiusd.pid max_request_time = 30 delete_blocked_requests = no cleanup_delay = 5 max_requests = 1024 bind_address = * hostname_lookups = no allow_core_dumps = no regular_expressions = yes extended_expressions = yes log_stripped_names = no log_auth = no log_auth_badpass = no log_auth_goodpass = no usercollide = no lower_user = no lower_pass = no nospace_user = no nospace_pass = no checkrad = ${sbindir}/checkrad security { max_attributes = 200 reject_delay = 1 status_server = no } proxy_requests = no $INCLUDE ${confdir}/clients.conf snmp = no thread pool { start_servers = 5 max_servers = 32 min_spare_servers = 3 max_spare_servers = 10 max_requests_per_server = 0 } modules { acct_unique { key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port" } $INCLUDE ${confdir}/sql.conf radutmp { filename = ${logdir}/radutmp username = %{User-Name} case_sensitive = yes check_with_nas = yes perm = 0600 callerid = "yes" } radutmp sradutmp { filename = ${logdir}/sradutmp perm = 0644 callerid = "no" } attr_filter { attrsfile = ${confdir}/attrs } always fail { rcode = fail } always reject { rcode = reject } always ok { rcode = ok simulcount = 0 mpp = no } expr { } digest { } exec { wait = yes input_pairs = request } exec echo { wait = yes program = "/bin/echo %{User-Name}" input_pairs = request output_pairs = reply } } instantiate { exec expr } authorize { sql } authenticate { } preacct { acct_unique } accounting { } session { radutmp sql } post-auth { sql } pre-proxy { } post-proxy { }
В radiusd.conf я только удалял не нужные секции, а вот в sql.conf я правил логины и пароли для доступа к MySQL
Файл отвечающий за подключение к MySQL выглядит так:
sql { #Работаем с MySQL driver = "rlm_sql_mysql" #Сервер MySQL на локалхосте server = "localhost" #Имя пользователя для доступа к MySQL login = "freeradius" #Пароль для доступа к MySQL password = "123" #База MySQL в которой хранятся данные для авторизации radius_db = "freeradius" authcheck_table = "radcheck" authreply_table = "radreply" nas_table = "nas" deletestalesessions = yes sqltrace = no num_sql_socks = 5 connect_failure_retry_delay = 60 sql_user_name = "%{User-Name}" authorize_check_query = "SELECT id, UserName, Attribute, Value, op \ FROM ${authcheck_table} \ WHERE Username = '%{SQL-User-Name}' \ ORDER BY id" authorize_reply_query = "SELECT id, UserName, Attribute, Value, op \ FROM ${authreply_table} \ WHERE Username = '%{SQL-User-Name}' \ ORDER BY id" readclients = yes }
То что по умолчанию находится в файлах настроек я не комментирую.
Теперь создадим базу и пользователя:
Подключимся к MySQL:
mysql -uroot -p
И в командной строке mysql выполним команды по созданию базы и пользователя
create database freeradius; GRANT ALL ON freeradius.* TO freeradius@localhost IDENTIFIED BY "123";
А теперь создадим структуру таблиц:
mysql -u root -p freeradius < /usr/local/share/doc/freeradius/examples/mysql.sql
И теперь создадим одного администратора и одного простого пользователя:
Администратор с логином hilik и паролем hilik-123
use freeradius; insert into radcheck set UserName='hilik', Attribute='Password', op='==', Value='hilik-123'; insert into radreply set UserName='hilik', Attribute='Service-Type', op='=', Value='Administrative-User';
И read only пользователь(он добавляется одним запросом) с логином hilikr и паролем hilikr-123:
use freeradius; insert into radcheck set UserName='hilikr', Attribute='Password', op='==', Value='hilikr-123';
Теперь вернемся к редактированию конфигов. Внесем настройки в clients.conf.
Тут мы пропишем localhost и опорную сеть свитчей:
client 127.0.0.1 { secret = 123 shortname = localhost nastype = other } client 192.168.25.0/24 { secret = cisco-123 shortname = private-network-1 nastype = other }
Теперь запустим и протестируем наш радиус сервер.
echo "radiusd_enable="YES" >> /etc/rc.conf
И теперь запустим:
/usr/local/etc/rc.d/radiusd start
Теперь протестируем с помощью radtest. Сначала проверим административного пользователя:
radtest hilik hilik-123 localhost 1812 123
И в ответ увидим:
Sending Access-Request of id 60 to 127.0.0.1 port 1812 User-Name = "hilik" User-Password = "hilik-123" NAS-IP-Address = 255.255.255.255 NAS-Port = 1812 rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=60, length=26 Service-Type = Administrative-User
Атрибут Service-Type = Administrative-User – означает что на свитчах Extreme Networks и Edge-Core пользователь будет с правами администратора.
Теперь рид онли юзер:
radtest hilikr hilikr-123 localhost 1812 123
И в ответ получим:
Sending Access-Request of id 64 to 127.0.0.1 port 1812 User-Name = "hilikr" User-Password = "hilikr-123" NAS-IP-Address = 255.255.255.255 NAS-Port = 1812 rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=64, length=20
Атрибут отсутствует. То есть так и должно быть. Теперь можно настраивать на свитчах авторизацию через Radius сервер.
PS Если что то идет не так, можно запустить radiusd с ключем -X – это режим отладки, radius запустится на фореграунде и всю отладку будет выводить на консоль.




By Andrey, 17.03.2010 @ 12:46
А с каким паролем root ставиться mysql ???
By hilik, 17.03.2010 @ 12:55
По умолчанию пароля не стоит. Доступ только с локалхоста.
By sss, 07.05.2010 @ 09:23
как сделать так , чтоб пользователь смог поменять себе пароль самомтоятельно после того как его в базу завел админ ? в целях того чтоб никто не знал чужих паролей
By ааа, 07.05.2010 @ 09:24
Как сделать , чтоб пользователь смог поменять себе пароль самостоятельно ?
By admin, 07.05.2010 @ 09:49
Сделать свою панель управления.
By ааа, 07.05.2010 @ 12:05
а чтоб так как на сисковском АCS: забил пароль пользователю а он при заходе на любое у-во под радиусом может себе поменять пароль с того, который ему админ дал на свой