FreeRADIUS Windows Vista

advertisement
Настройка сервера FreeRADIUS под Windows Vista
для подключения коммутаторов Raisecom
Для теста использовался сервер FreeRADIUS ver 1.1.7 для Windows на стр.
http://www.freeradius.net/Downloads/FreeRADIUS.net-1.1.7-r0.0.2.exe . Для более новой
версии сервера FreeRADIUS ver 2.1.12 на стр. http://sourceforge.net/projects/freeradius/files/
конфигурация немного отличается от приведенной ниже!!
На
коммутаторе
ISCOM2110EA-MA
используется
прошивка
ROS_4.14.1781.ISCOM2110EA-MA.167.20120920, на коммутаторе ISCOM2126EA-MA Rev
B используется прошивка ROS_4.14.1781.ISCOM2126EA-B-MA.167.20120920, на
коммутаторе ISCOM2128EA-MA используется прошивка ROS_4.14.1781.ISCOM2128EAMA.167.20120920 .
После установки сервера FreeRADIUS ver 1.1.7 под Windows Vista необходимо изменить
имя каталога с «C:\FreeRADIUS.NET» на «C:\freeradius». Также необходимо
отредактировать в каталоге «C:\freeradius\etc\raddb» файлы «radiusd.conf» , «clients.conf» ,
«users.conf».
В файле «radiusd.conf» необходимо настроить символ «/» для каталога:
prefix = C:/freeradius , а не prefix = C:\freeradius
Так как сервер SQL не используется при тесте, то соответствующие настройки отмечены
«#» для комментария, например:
#$INCLUDE ${confdir}/sql.conf
# query = "SELECT SUM(AcctSessionTime - \
# GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \
# FROM radacct WHERE UserName='%{%k}' AND \
# UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'"
(Пример настройки для сервера SQL приведен ниже.)
В файле «clients.conf» необходимо настроить IP адрес клиента и пароль RADIUS-key:
client 192.168.1.210 {
secret = qqqq
shortname = raisecom
nastype = other
}
В файле «users.conf» необходимо настроить имя пользователя user-name , пароль UserPassword и уровень привилегий priority для этого user-name:
user-name Auth-Type := local, User-Password == "password"
Raisecom-Priority = priority
Например, можно добавить пользователя «raisecomadm» с паролем «admadm» и уровнем
привилегий 15 и пользователя «raisecomuser» с паролем «useruser» и уровнем привилегий
5:
raisecomadm Auth-Type := Local, User-Password == "admadm"
Service-Type = Login-User,
NAS-IP-Address = 192.168.1.210,
Raisecom-Priority = 15
raisecomuser Auth-Type := Local, User-Password == "useruser"
Service-Type = Login-User,
NAS-IP-Address = 192.168.1.210,
Raisecom-Priority = 5
Пользователи с разным уровнем привилегий
Пользователь с приоритетом меньше чем 10 может прямо зайти в enable, пользователь с
приоритетом больше чем 10 должен дополнительно ввести пароль для перехода в
привилегированный ражим enable.
Привилегии
Команды
Привилегии 0-4
команды show (visitor):
language-mode, ping, quit, exit, enable, disable, telnet,
traceroute, clear (clear экран), end, help, history, logout
Привилегии 5-10
команды для мониторинга (monitor):debugging, show,
terminal, list, reboot, dir
Привилегии 11-14
команды для настройки (operator):кроме команд
администратора, FTP , TFTP, все команды конфигурации
Привилегии 15
управление (administrator):команды администратора,
FTP , TFTP, управление прошивками и конфигурациями
(сохранение, удаление, upgrade/download файл)
Также
необходимо
добавить
файл
«dictionary.raisecom»
в
каталог
«C:\freeradius\share\freeradius» и отредактировать файл «dictionary» в каталоге
«C:\freeradius\share\freeradius»: необходимо добавить в разделе «# Include vendor
dictionaries after the standard ones» строку
$INCLUDE dictionary.raisecom
Файл «dictionary.raisecom» необходим для определения private внутрифирменных
атрибутов Vendor-specific Attribute(26) уровня привилегий и содержит текст:
“VENDOR Raisecom 8886
BEGIN-VENDOR Raisecom
#форма:атрибут
имя атрибута
номер private атрибута
ATTRIBUTE Raisecom-Upstream-Speed-Limit 1 integer
ATTRIBUTE Raisecom-Downstream-Speed-Limit 2 integer
ATTRIBUTE Raisecom-Priority 3 integer
END-VENDOR Raisecom”
тип атрибута
После этого перейти в каталог C:\freeradius\bin и запустить сервер FreeRADIUS в
отладочном режиме с «-X»:
C:\freeradius\bin> radiusd –X
В случае ошибок в файле конфигурации в командной строке будет выводиться сообщение
об ошибке в файле конфигурации и номере строки в этом файле с ошибкой. Например,
ошибка в строке 113 файла users.conf :
Если все настроено нормально, то будет сообщение «Ready to process requests.»
Для теста используется топология:
На коммутаторе Ethernet необходимо настроить авторизацию для login и \ или enable на
сервере RADIUS, IP address сервера RADIUS и shared-key для протокола RADIUS и
опционально авторизацию при недоступности сервера RADIUS, например:
Raisecom# user ?
USERNAME User name (Not exceed 16 characters)
login
name
Login method information
Set user name
Raisecom# user login ?
local-radius User saved on local machine preference
local-user
User saved on local machine or default user
radius-local User saved on remote radius server preference
radius-user User saved on remote radius server
local-tacacs User saved on local machine in preference to tacacs+ user
tacacs-local User saved on remote tacacs+ server in preference to local user
tacacs-user User saved on remote tacacs+ server
Raisecom# user login radius-local ?
server-no-response only use local auth when radius server does not response
<cr>
Raisecom# user login radius-local
Raisecom# enable ?
login
Login method information
password Change current enable password
Raisecom# enable login ?
local-radius User saved on local machine preference
local-user
User saved on local machine or default user
radius-local User saved on remote radius server preference
radius-user User saved on remote radius server
local-tacacs User saved on local machine in preference to tacacs+ user
tacacs-local User saved on remote tacacs+ server in preference to local user
tacacs-user User saved on remote tacacs+ server
Raisecom# enable login radius-local ?
server-no-response only use local auth when radius server dose not response
<cr>
Raisecom# enable login radius-local
Raisecom# radius ?
A.B.C.D
backup
Radius server IP address
Backup radius server
accounting-server Information of radius accounting server
Raisecom# radius 192.168.1.37 ?
auth-port Radius server port
<cr>
Raisecom# radius 192.168.1.37
Raisecom# radius-key ?
WORD Radius server share key
Raisecom# radius-key qqqq
<cr>
Raisecom# radius-key qqqq
Посмотреть настройки можно при помощи команды «show radius-server»:
Raisecom# show radius-server
Authentication server IP:
192.168.1.37
Backup authentication server IP:0.0.0.0
Authentication server key:
Accounting server IP:
port:1812
qqqq
192.168.1.37
Backup accounting server IP:
Accounting server key:
port:1812
0.0.0.0
qqqq
Raisecom#
Ниже вывод команд «sh run» и «sh ver»
port:1813
port:1813
Raisecom# sh run
System current configuration:
!ROS Version ROS_4.14.1727.ISCOM2110EA-MA.154.20120306
!command in view_mode
!
!command in config_mode first-step
ethernet cfm domain md-name MdLevel0Default level 0
!
!command in aclmap_mode
!
!command in enable_mode
user login radius-local
enable login radius-local
radius 192.168.1.37
radius-key qqqq
!
!command in region_mode
!
!command in ip igmp profile mode
!
!command in service_mode
service Level0MaName level 0
!
!command in port_mode
!
!command in vlan configuration mode
!
!command in ip interface mode
interface ip 0
ip address 192.168.1.210 255.255.255.0 1
!
!command in cluster_mode
!
!command in cmap_mode
!
!command in pmap_mode
!
!command in config_mode
service config
!
Raisecom#
Ниже пример подключения для пользователя «raisecomuser» с паролем «useruser» и
уровнем привилегий 5 :
Login: raisecomuser
Password: useruser
Raisecom> enable
Raisecom#
Raisecom#
Raisecom# show user
Username
Priority
Server
-------------------------------------------raisecom
15
raisecomuser
Raisecom#
Raisecom# config
5
Local
192.168.1.37
Raisecom(config)#
Raisecom(config)# download check-version disable
% You Need higher priority!
Raisecom(config)#
Настройка сервера FreeRADIUS под Windows Vista для сервера SQL
Если необходимо, чтобы сервер FreeRADIUS работал с базами MySQL, в которых
хранится информация о клиентах и учетных записях, то необходимо изменить некоторые
настройки, описанные выше. При этом другие настройки, например, файл
«dictionary.raisecom» в каталоге «C:\freeradius\share\freeradius» не меняются. Ниже
приведены только дополнительные настройки для работы с базами MySQL и
измененные настройки!!
Необходимо загрузить файл «MySQL Community Server 5.5.28» (файл «mysql-5.5.28win32.msi») на стр. http://www.mysql.com/downloads/mysql/ и при необходимости файл
«MySQL Workbench 5.2.44» (файл «mysql-workbench-gpl-5.2.44-win32.msi») на стр.
http://www.mysql.com/downloads/workbench/ и настроить сервер MySQL.
Ниже приведены настройки сервера MySQL для тестовой топологии, настройки сервера
MySQL на реальной сети могут отличаться (например, количество сессий, которое
поддерживается и т. д.)
После этого можно в меню «Пуск > MySQL > MySQL Server 5.5 > MySQL Server 5.5
Command Line Client» запустить командную строку для работы с сервером MySQL или
установить графическую программу MySQL Workbench 5.2.44 .
Для установки программы MySQL Workbench 5.2.44 необходимо установить “Visual C++
2010 Redistributable Package” и после этого «Microsoft .NET Framework 4 Client Profile» на
стр. http://dev.mysql.com/resources/wb52_prerequisites.html
После установки “Visual C++ 2010 Redistributable Package” и «Microsoft .NET Framework 4
Client Profile»
Скопировать файл «mysql.sql» из каталога «C:\freeradius\share\doc\freeradius\examples» в
каталог «C:\freeradius».
В файле «radiusd.conf» необходимо настроить для сервера SQL:
$INCLUDE ${confdir}/sql.conf
Также в файле «radiusd.conf» необходимо отредактировать комментарий:
query = "SELECT SUM(AcctSessionTime - \
GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \
FROM radacct WHERE UserName='%{%k}' AND \
UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'"
и
query = "SELECT SUM(AcctSessionTime - \
GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \
FROM radacct WHERE UserName='%{%k}' AND \
UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'"
Также в файле «radiusd.conf» необходимо отредактировать «#files», а не «files» в строке
1848 и «sql» , а не «#sql» в строке 1855:
Также в файле «radiusd.conf» необходимо отредактировать «sql» , а не «#sql» в строке
2017 :
Также в файле «radiusd.conf» необходимо отредактировать «sql» , а не «#sql» в строке
2039 :
В файле «sql.conf» необходимо настроить для сервера SQL IP адрес 127.0.0.1 , а не
“localhost”, пароль при необходимости, например, настроить пароль «root», а не "rootpass"
в строке 24 и в строке 329 настроить readclients = yes :
# Connect info
server = "127.0.0.1"
login = "root"
password = "root"
readclients = yes
В файле «users.conf» необходимо отметить “#” для комментария существующих
пользователей, которых добавили до этого, например:
#
#
#
#
raisecomadm Auth-Type := Local, User-Password == "admadm"
Service-Type = Login-User,
NAS-IP-Address = 192.168.1.210,
Raisecom-Priority = 15
#
#
#
#
raisecomuser Auth-Type := Local, User-Password == "useruser"
Service-Type = Login-User,
NAS-IP-Address = 192.168.1.210,
Raisecom-Priority = 5
В файле «clients.conf» необходимо отметить “#” для комментария существующих
клиентов, которых добавили до этого, например:
#client 192.168.1.210 {
#
secret
= qqqq
#
shortname = raisecom
#
nastype
= other
#}
В файле «eap.conf» необходимо настроить алгоритм MD5 , а не TLS для авторизации EAP
default_eap_type ==md5
, а не
default_eap_type = tls
После этого при помощи командной строки SQL «MySQL Server 5.5 Command Line Client»
или программы MySQL Workbench 5.2.44 создать базу данных «radius»:
Mysql> status
/ статус сервера
Mysql> create database radius;
/создать базу данных «radius»
Mysql> use radius;
/использовать базу данных «radius»
Mysql> source c:/freeradius/mysql.sql;
/ по требованию mysql.sql создать таблицу в
database
Mysql> show tables;
/смотреть все таблицы в базе данных «radius»
Добавить в таблицу «nas» IP адрес коммутатора, название и ключ RADIUS, например:
insert into nas (nasname,shortname,secret) values (“192.168.1.210”, “raisecom” , “qqqq”);
Для просмотра таблицы «nas» команда
select * from nas;
После этого добавить группы пользователей и privilege level для каждой группы в таблицу
«radgroupreply », например, группу пользователей «administrator» с уровнем привилегий
15 и группу пользователей "network" с уровнем привилегий 5:
insert into radgroupreply (Groupname, attribute, op, value) values (“network”, “RaisecomPriority”, “:=”, “5”);
insert into radgroupreply (Groupname, attribute, op, value) values (“administrator”, “RaisecomPriority”, “:=”, “15”);
Добавить пароль для каждого пользователя в таблицу «radcheck», например, для
пользователя «admadm» пароль «aaa1234» и для “useruser” пароль «user777» :
insert into radcheck (Username, Attribute, op, value) values (“admadm”, “User-Password”, “:=”,
“aaa1234”);
insert into radcheck (Username, Attribute, op, value) values (“useruser”, “User-Password”, “:=”,
“user777”);
В таблице «usergroup» добавить пользователей в группы пользователей, например,
пользователь «admadm» в группе «administrator» и пользователь «useruser» в группе
«network»:
insert into usergroup (UserName, GroupName, priority) values (“admadm”, “administrator”,
“15”);
insert into usergroup (UserName, GroupName, priority) values (“useruser”, “network”, “5”);
После этого перейти в каталог C:\freeradius\bin и запустить сервер FreeRADIUS в
отладочном режиме с «-X»:
C:\freeradius\bin> radiusd –X
Если все нормально настроено, то будет сообщение
Login: useruser
Password: user777
Raisecom> enable
Raisecom# show user
Username
Priority
Server
-------------------------------------------raisecom
15
useruser
5
Raisecom#
Local
192.168.1.37
Login: admadm
Password: aaa1234
Raisecom> enable
Password: raisecom
Raisecom# show user
Username
Priority
Server
-------------------------------------------raisecom
admadm
Raisecom#
15
15
Local
192.168.1.37
Ниже логи FreeRADIUS при авторизации клиента с SQL :
rad_recv: Access-Request packet from host 192.168.1.210:1024, id=3, length=88
User-Name = "useruser"
User-Password = "user777"
NAS-IP-Address = 192.168.1.210
NAS-Port = 0
NAS-Port-Type = Async
Service-Type = Login-User
Framed-IP-Address = 127.0.0.1
NAS-Identifier = "Raisecom"
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 0
modcall[authorize]: module "preprocess" returns ok for request 0
radius_xlat: 'C:/freeradius/var/log/radius/radacct/192.168.1.210/auth-detail-20
121224.log'
rlm_detail: C:/freeradius/var/log/radius/radacct/%{Client-IP-Address}/auth-detai
l-%Y%m%d.log expands to C:/freeradius/var/log/radius/radacct/192.168.1.210/authdetail-20121224.log
modcall[authorize]: module "auth_log" returns ok for request 0
modcall[authorize]: module "chap" returns noop for request 0
modcall[authorize]: module "mschap" returns noop for request 0
rlm_realm: No '@' in User-Name = "useruser", looking up realm NULL
rlm_realm: No such realm "NULL"
modcall[authorize]: module "suffix" returns noop for request 0
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 0
radius_xlat: 'useruser'
rlm_sql (sql): sql_set_user escaped user --> 'useruser'
radius_xlat: 'SELECT id, UserName, Attribute, Value, op
WHERE Username = 'useruser'
FROM radcheck
ORDER BY id'
rlm_sql (sql): Reserving sql socket id: 3
radius_xlat: 'SELECT radgroupcheck.id,radgroupcheck.GroupName,radgroupcheck.Att
ribute,radgroupcheck.Value,radgroupcheck.op FROM radgroupcheck,usergroup WHERE
usergroup.Username = 'useruser' AND usergroup.GroupName = radgroupcheck.GroupNam
e ORDER BY radgroupcheck.id'
radius_xlat: 'SELECT id, UserName, Attribute, Value, op
WHERE Username = 'useruser'
FROM radreply
ORDER BY id'
radius_xlat: 'SELECT radgroupreply.id,radgroupreply.GroupName,radgroupreply.Att
ribute,radgroupreply.Value,radgroupreply.op FROM radgroupreply,usergroup WHERE
usergroup.Username = 'useruser' AND usergroup.GroupName = radgroupreply.GroupNam
e ORDER BY radgroupreply.id'
rlm_sql (sql): Released sql socket id: 3
modcall[authorize]: module "sql" returns ok for request 0
modcall[authorize]: module "pap" returns updated for request 0
modcall: leaving group authorize (returns updated) for request 0
rad_check_password: Found Auth-Type pap
auth: type "PAP"
Processing the authenticate section of radiusd.conf
modcall: entering group PAP for request 0
rlm_pap: login attempt with password user777
rlm_pap: Using clear text password "user777".
rlm_pap: User authenticated successfully
modcall[authenticate]: module "pap" returns ok for request 0
modcall: leaving group PAP (returns ok) for request 0
Login OK: [useruser/user777] (from client raisecom port 0)
Processing the post-auth section of radiusd.conf
modcall: entering group post-auth for request 0
radius_xlat: 'C:/freeradius/var/log/radius/radacct/192.168.1.210/reply-detail-2
0121224.log'
rlm_detail: C:/freeradius/var/log/radius/radacct/%{Client-IP-Address}/reply-deta
il-%Y%m%d.log expands to C:/freeradius/var/log/radius/radacct/192.168.1.210/repl
y-detail-20121224.log
modcall[post-auth]: module "reply_log" returns ok for request 0
modcall: leaving group post-auth (returns ok) for request 0
Sending Access-Accept of id 3 to 192.168.1.210 port 1024
Raisecom-Priority := 5
Finished request 0
Going to the next request
--- Walking the entire request list --Waking up in 6 seconds...
rad_recv: Access-Request packet from host 192.168.1.210:1024, id=3, length=88
Sending duplicate reply to client raisecom:1024 - ID: 3
Re-sending Access-Accept of id 3 to 192.168.1.210 port 1024
--- Walking the entire request list --Waking up in 5 seconds...
rad_recv: Access-Request packet from host 192.168.1.210:1024, id=3, length=88
Sending duplicate reply to client raisecom:1024 - ID: 3
Re-sending Access-Accept of id 3 to 192.168.1.210 port 1024
Waking up in 5 seconds...
Error receiving packet: Connection reset by peer
Waking up in 5 seconds...
Error receiving packet: Connection reset by peer
Waking up in 5 seconds...
--- Walking the entire request list --Cleaning up request 0 ID 3 with timestamp 50d869cb
Nothing to do. Sleeping until we see a request.
Download