如何搭建Radius服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何搭建Radius服务器相关的知识,希望对你有一定的参考价值。

RADIUS(Remote Authentication Dial In User Service,远程用户拨号认证服务)服务器提供了三种基本的功能:认证(Authentication)、授权(Authorization)和审计(Accounting),即提供了3A功能。其中审计也称为“记账”或“计费”。
RADIUS协议采用了客户机/服务器(C/S)工作模式。网络接入服务器(Network Access Server,NAS)是RADIUS的客户端,它负责将用户的验证信息传递给指定的RADIUS服务器,然后处理返回的响应。
搭建Radius服务器的方法:
用户接入NAS,NAS向RADIUS服务器使用Access-Require数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NAS向RADIUS服务器提出计费请求Account- Require,RADIUS服务器响应Account-Accept,对用户的计费开始,同时用户可以进行自己的相关操作。
RADIUS还支持代理和漫游功能。简单地说,代理就是一台服务器,可以作为其他RADIUS服务器的代理,负责转发RADIUS认证和计费数据包。所谓漫游功能,就是代理的一个具体实现,这样可以让用户通过本来和其无关的RADIUS服务器进行认证,用户到非归属运营商所在地也可以得到服务,也可以实现虚拟运营。
RADIUS服务器和NAS服务器通过UDP协议进行通信,RADIUS服务器的1812端口负责认证,1813端口负责计费工作。采用UDP的基本考虑是因为NAS和RADIUS服务器大多在同一个局域网中,使用UDP更加快捷方便,而且UDP是无连接的,会减轻RADIUS的压力,也更安全。
RADIUS协议还规定了重传机制。如果NAS向某个RADIUS服务器提交请求没有收到返回信息,那么可以要求备份RADIUS服务器重传。由于有多个备份RADIUS服务器,因此NAS进行重传的时候,可以采用轮询的方法。如果备份RADIUS服务器的密钥和以前RADIUS服务器的密钥不同,则需要重新进行认证。
参考技术A 作为一名网络管理员,您需要为您所需管理的每个网络设备存放用于管理的用户信息。但是网络设备通常只支持有限的用户管理功能。学习如何使用Linux上的一个外部RADIUS服务器来验证用户,具体来说是通过一个LDAP服务器进行验证,可以集中放置存储在LDAP服务器上并且由RADIUS服务器进行验证的用户信息,从而既可以减少用户管理上的管理开销,又可以使远程登录过程更加安全。
数据安全作为现代系统中网络安全的一部分,与系统安全一样的重要,所以保护数据--确保提供机密性、完整性和可用性--对管理员来说至关重要。
在本文中,我将谈到数据安全性的机密性方面:确保受保护的数据只能被授权用户或系统访问。您将学习如何在Linux系统上建立和配置一个Remote Authentication Dial-In User Service 服务器(RADIUS),以执行对用户的验证、授权和记帐(AAA)。
各组成元素介绍
首先让我们谈一谈RADIUS协议、AAA组件以及它们如何工作,另外还有LDAP协议。
Remote Authentication Dial-In User Service 协议是在IET的RFC 2865中定义的(请参阅参考资料获得相关链接)。它允许网络访问服务器(NAS)执行对用户的验证、授权和记帐。RADIUS是基于UDP的一种客户机/服务器协议。RADIUS客户机是网络访问服务器,它通常是一个路由器、交换机或无线访问点(访问点是网络上专门配置的节点;WAP是无线版本)。RADIUS服务器通常是在UNIX或Windows 2000服务器上运行的一个监护程序。
RADIUS和AAA
如果NAS收到用户连接请求,它会将它们传递到指定的RADIUS服务器,后者对用户进行验证,并将用户的配置信息返回给NAS。然后,NAS接受或拒绝连接请求。
功能完整的RADIUS服务器可以支持很多不同的用户验证机制,除了LDAP以外,还包括:
PAP(Password Authentication Protocol,密码验证协议,与PPP一起使用,在此机制下,密码以明文形式被发送到客户机进行比较);
CHAP(Challenge Handshake Authentication Protocol,挑战握手验证协议,比PAP更安全,它同时使用用户名和密码);
本地UNIX/Linux系统密码数据库(/etc/passwd);
其他本地数据库。
在RADIUS中,验证和授权是组合在一起的。如果发现了用户名,并且密码正确,那么RADIUS服务器将返回一个Access-Accept响应,其中包括一些参数(属性-值对),以保证对该用户的访问。这些参数是在RADIUS中配置的,包括访问类型、协议类型、用户指定该用户的IP地址以及一个访问控制列表(ACL)或要在NAS上应用的静态路由,另外还有其他一些值。
RADIUS记帐特性(在RFC 2866中定义;请参阅参考资料获得相关链接)允许在连接会话的开始和结束发送数据,表明在会话期间使用的可能用于安全或开单(billing)需要的大量资源--例如时间、包和字节。
轻量级目录访问协议
轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)是一种开放标准,它定义了用于访问和更新类X.500 目录中信息的一种方法。LDAP可用于将用户信息保存在一个中央场所,从而不必将相同的信息存储在每个系统上。它还可以用于以一种一致的、可控制的方式维护和访问信息。
LDAP在一个集中的目录中管理用户,从而简化了用户管理工作。除了存储用户信息外,在LDAP中定义用户还可以使一些可选特性得到启用,例如限制登录的数量。在本文中,您将学习如何配置RADIUS服务器,以便基于LDAP验证用户--由于本文的重点在于RADIUS,我不会描述关于LDAP服务器的安装和配置的细节。
OpenLDAP是LDAP的一种开放源码实现。在OpenLDAP.org上可以找到关于它的详细信息(请参阅参考资料获得相关链接)。
场景
想像以下场景:
用户在家里可以通过拨号验证访问他公司的内部网。
带无线支持的笔记本电脑可以通过无线验证连接到一个校园网。
管理员使用他们的工作站通过管理用户验证以telnet或HTTP登录到网络设备。
所有这些验证任务都可以通过一个RADIUS服务器基于一个中央LDAP服务器来完成(见图 1)。

图1 通过RADIUS和LDAP进行验证
在本文中,我将重点描述对最后一种选项的实现,作为对该解决方案的一个介绍。首先安装RADIUS服务器。
安装 RADIUS
RADIUS服务器软件可以从多个地方获得。在本文中,我将使用FreeRADIUS(请参阅参考资料获得相关链接),但Cisco Secure Access Control Server (ACS)是一种集中式用户访问控制框架,可用于跨UNIX和Windows上多个Cisco设备的用户管理,并支持Cisco 特有的协议TACACS+(据说在支持TACACS+的设备上可拥有更多的特性)。
FreeRADIUS是来自开放源码社区的一种强大的Linux上的RADIUS服务器,可用于如今的分布式和异构计算环境。FreeRADIUS 1.0.2 支持LDAP、mysql、PostgreSQL和Oracle数据库,并与诸如EAP和Cisco LEAP之类的网络协议兼容。FreeRADIUS目前被部署在很多大型生产网络系统中。
下面的步骤演示如何在Red Hat Enterprise Linux Advanced Server 3.0上安装和测试FreeRADIUS 1.0.2:
清单1 安装和测试FreeRADIUS

tar -zxvf freeradius-1.0.2.tar.gz - extract it with gunzip and tar
./configure
make
make install - run this command as root
radiusd or - start RADIUS server
radiusd -X - start RADIUS server in debug mode
radtest test test localhost 0 testing123 - test RADIUS server

如果radtest收到一个响应,则表明FreeRADIUS服务器工作正常。
同时我还推荐另一种免费工具,那就是NTRadPing,它可用于测试来自Windows客户机的验证和授权请求。它可以显示从RADIUS服务器发回的详细的响应,例如属性值。
现在让我们来配置FreeRADIUS。
配置FreeRADIUS
RADIUS服务器的配置包括对服务器、客户机和用户的配置(都是用于验证和授权)。出于不同的需要,对RADIUS服务器可以有不同的配置。幸运的是,大多数配置都是类似的。
* 配置服务器
FreeRADIUS配置文件通常位于/etc/raddb文件夹下。首先,我们需要像下面这样修改radiusd.conf文件。
清单2 修改radiusd.conf
1) Global settings:

log_auth = yes - log authentication requests to the log file
log_auth_badpass = no - don't log passwords if request rejected
log_auth_goodpass = no - don't log passwords if request accepted

2) LDAP Settings:

modules
ldap
server = "bluepages.ibm.com" - the hostname or IP address of the LDAP server
port = 636 - encrypted communications
basedn = "ou=bluepages,o=ibm.com" - define the base Distinguished Names (DN),
- under the Organization (O) "ibm.com",
- in the Organization Unit (OU) "bluepages"
filter = "(mail=%u)" - specify search criteria
base_filter = "(objectclass=person)" - specify base search criteria


authenticate - enable authentication against LDAP
Auth-Type LDAP
ldap


参数被设为使用 IBM BluePages,这是LDAP服务的一个实例。对于其他LDAP服务器,参数可能有所不同。
* 配置客户机
客户机是在/etc/raddb/clients.conf 文件中配置的。有两种方式可用于配置RADIUS客户机。您可以按IP subnet将NAS分组(清单 3),或者可以按主机名或 IP 地址列出NAS(清单4)。如果按照第二种方法,可以定义shortname和nastype。
清单3 按IP subnet将NAS分组

client 192.168.0.0/24
secret = mysecret1 - the "secret" should be the same as configured on NAS
shortname = mylan - the "shortname" can be used for logging
nastype = cisco - the "nastype" is used for checkrad and is optional


清单4 按主机名或 IP 地址列出 NAS

client 192.168.0.1
secret = mysecret1
shortname = myserver
nastype = other


* 为验证而配置用户
文件 /etc/raddb/user 包含每个用户的验证和配置信息。
清单5 /etc/raddb/user 文件
1) Authentication type:

Auth-Type := LDAP - authenticate against LDAP
Auth-Type := Local, User-Password == "mypasswd"
- authenticate against the
- password set in /etc/raddb/user
Auth-Type := System - authenticate against the system password file
- /etc/passwd or /etc/shadow

2) Service type:

Service-Type = Login, - for administrative login

* 为授权而配置用户
下面的验证服务器属性-值对(AV)应该为用户授权而进行配置。在验证被接受后,这个属性-值对被返回给NAS,作为对管理员登录请求的响应。
对于Cisco路由器,有不同的权限级别:
级别1是无特权(non-privileged)。提示符是 router>,这是用于登录的默认级别。
级别15是特权(privileged)。 提示符是 router#,这是进入 enable 模式后的级别。
级别2到14 在默认配置中不使用。
下面的命令可以使一个用户从网络访问服务器登录,并获得对EXEC命令的立即访问:
cisco-avpair ="shell:priv-lvl=15"
下面的代码处理相同的任务,这一次是对于Cisco无线访问点:
Cisco:Avpair= "aironet:admin-capability=write+snmp+ident+firmware+admin"
任何功能组合都和这个属性一起返回:
Cisco:Avpair = "aironet:admin-capability=ident+admin"
Cisco:Avpair = "aironet:admin-capability=admin"
请与 Cisco 联系,以获得关于这些命令的更多信息。
配置网络访问服务器
接下来我们将配置NAS,首先是配置一个Cisco路由器,然后轮到一个Cisco WAP。
对于Cisco ios 12.1路由器,我们将启用AAA,然后配置验证、授权和记帐。
清单6 启用AAA

aaa new-model
radius-server host 192.168.0.100
radius-server key mysecret1

AAA 在路由器上应该被启用。然后,指定能为 NAS 提供 AAA 服务的 RADIUS 服务器的列表。加密密钥用于加密 NAS 和 RADIUS 服务器之间的数据传输。它必须与 FreeRADIUS 上配置的一样。
清单7 配置验证

aaa authentication login default group radius local
line vty 0 4
login authentication default

在这个例子中,网络管理员使用 RADIUS 验证。如果 RADIUS 服务器不可用,则使用 NAS 的本地用户数据库密码。
清单8 配置授权

aaa authorization exec default group radius if-authenticated

允许用户在登录到 NAS 中时运行 EXEC shell。
清单9 配置记帐

aaa accounting system default start-stop group radius
aaa accounting network default start-stop group radius
aaa accounting connection default start-stop group radius
aaa accounting exec default stop-only group radius
aaa accounting commands 1 default stop-only group radius
aaa accounting commands 15 default wait-start group radius

必须对路由器进行特别的配置,以使之发送记帐记录到RADIUS服务器。使用清单9中的命令记录关于NAS系统事件、网络连接、输出连接、EXEC操作以及级别1和级别15上的命令的记帐信息。
这样就好了。现在让我们看看为Cisco无线访问点而进行的配置。下面的配置适用于带有Firmware 12.01T1的Cisco 1200 Series AP。如图2中的屏幕快照所示,您:
* 输入服务器名或 IP 地址和共享的秘密。
* 选择“Radius”作为类型,并选中“User Authentication”。

图2 为WAP配置NAS
实际上,在这里您还可以配置EAP Authentication,使FreeRADIUS可用于验证无线LAN的一般用户。
记帐:工作中的RADIUS
现在所有配置都已经完成,FreeRADIUS服务器可以开始记录NAS发送的所有信息,将该信息存储在/var/log/radius/radius.log文件中,就像这样:
清单10 /var/log/radius/radius.log文件

Thu Mar 3 21:37:32 2005 : Auth: Login OK: [David] (from client
mylan port 1 cli 192.168.0.94)
Mon Mar 7 23:39:53 2005 : Auth: Login incorrect: [John] (from
client mylan port 1 cli 192.168.0.94)

详细的记帐信息被存放在/var/log/radius/radacct目录中。清单11表明,David在2005年3月4日19:40到19:51这段时间里从 192.168.0.94登录到了路由器192.168.0.1。这么详细的信息对于正在调查安全事故以及试图维护易于审计的记录的管理员来说无疑是一大帮助。
清单11 RADIUS 提供的记帐细节示例

Fri Mar 4 19:40:12 2005
NAS-IP-Address = 192.168.0.1
NAS-Port = 1
NAS-Port-Type = Virtual
User-Name = "David"
Calling-Station-Id = "192.168.0.94"
Acct-Status-Type = Start
Acct-Authentic = RADIUS
Service-Type = NAS-Prompt-User
Acct-Session-Id = "00000026"
Acct-Delay-Time = 0
Client-IP-Address = 192.168.0.1
Acct-Unique-Session-Id = "913029a52dacb116"
Timestamp = 1109936412

Fri Mar 4 19:51:17 2005
NAS-IP-Address = 192.168.0.1
NAS-Port = 1
NAS-Port-Type = Virtual
User-Name = "David"
Calling-Station-Id = "192.168.0.94"
Acct-Status-Type = Stop
Acct-Authentic = RADIUS
Service-Type = NAS-Prompt-User
Acct-Session-Id = "00000026"
Acct-Terminate-Cause = Idle-Timeout
Acct-Session-Time = 665
Acct-Delay-Time = 0
Client-IP-Address = 192.168.0.1
Acct-Unique-Session-Id = "913029a52dacb116"
Timestamp = 1109937077

结束语
通过遵循本文中列出的简单步骤,您可以建立一个Remote Authentication Dial-In User Service服务器,该服务器使用一个外部的LDAP服务器来处理为网络安全问题而进行的验证、授权和记帐。本文提供了以下内容来帮助您完成此任务:
* 对RADIUS和LDAP服务器以及AAA概念的介绍。
* 一个融入了安装和配置任务的场景。
* 关于安装和配置RADIUS服务器的说明。
* 关于配置网络访问服务器的细节。
* RADIUS将提供和管理的详细信息的一个示例。
这些指示可以快速确保受保护的数据只能由Linux系统上已授权的实体访问。

搭建freeradius+daloradius作为认证服务器

1.目的背景

为了满足设备进行3A认证,提高安全性,所以搭建一套radius服务器,并配合daloradius作为前端展示配置。

2.配置内容

2.1.所需系统及组件

操作系统:CentOS 7.0 x86_64 ,带gnome桌面,配置地址为172.31.101.1
数据库:mariadb v5.5.56
httpd:Server version: Apache/2.4.6 (CentOS)
php:?v2.4.0
FreeRADIUS 3.0
所需其他组件
php
php-mysql
php-gd
php-pear-DB
通过yum安装即可。

2.2.参考文档

freeradius安装
http://blog.csdn.net/cluniquecui/article/details/42490423
使用daloRADIUS Web程序管理FreeRADIUS服务
http://wzlinux.blog.51cto.com/8021085/1736744

3.freeredius安装

3.1.安装FreeRADIUS 3.0 服务器程序

yum install freeradius

3.2.安装FreeRADIUS工具包(freeradius-utils)

yum install freeradius-utils

3.3.FreeRADIUS 3.0的测试

3.3.1.修改用户管理配置文件

该文件是/etc/raddb/users,使用vi工具打开,命令如下:
vi /etc/raddb/users
打开文件后,查找 steve Cleartext-Password :="testing" (76-84行), 取消该段内容的注释。

3.3.2.关闭防火墙及selinux

Systemctl stop firewall
Systemctl disable firewall
setenforce 0

3.3.3.以调试方式启动freeradius

radiusd –X

3.3.4.使用测试工具测试

再打开一个新的终端,以root身份登录,执行如下命令:
radtest steve testing localhost 0 testing123
技术分享图片
正常开启radius服务器的如下图所示:
技术分享图片

3.4.MariaDB的安装

默认情况下,CengOS 7.0已经安装了mariadb,版本为5.5.35。如果想安装最新版的Mariadb,装方法与FreeRADIUS类似,执行如下命令,系统会升级到最新版本:
yum intsall mariadb

3.5.FreeRADIUS与MariaDB的对接

3.5.1.安装freeradius-mysql组件

yum install freeradius-mysql

3.5.2.激活和启动mariadb服务

默认情况下,mariadb并没有被激活,使用如下命令激活服务:
systemctl enable mariadb
然后,使用如下命令,启动mariadb:
systemctl start mariadb
使用如下命令,查询mariadb服务的状态:
systemctl status mariadb

3.5.3.创建数据库

命令如下:
mysql -u root –p
要求输入密码时,直接回车即可。

mysql>create database radius;
mysql>grant all on radius.* to [email protected] identified by "radpass"; 
mysql>exit;

3.5.4.导入表结构

命令如下:


mysql -u root radius < /etc/raddb/mods-config/sql/main/mysql/scheama.sql

上面的指令,共导入了7个表,分别是:
radcheck 用户检查信息表
radreply 用户回复信息表
radgroupcheck 用户组检查信息表
radgroupreply 用户组检查信息表
radusergroup 用户和组关系表
radacct 计费情况表
radpostauth 认证后处理信息,可以包括认证请求成功和拒绝的记录。

  1. 建立组信息:(在此新建组名称为user)
    insert into radgroupreply (groupname,attribute,op,value) values (‘user‘,‘Auth-Type‘,‘:=‘,‘Local‘); 
    insert into radgroupreply (groupname,attribute,op,value) values (‘user‘,‘Service-Type‘,‘:=‘,‘Framed-User‘); 
    insert into radgroupreply (groupname,attribute,op,value) values (‘user‘,‘Framed-IP-Address‘,‘:=‘,‘255.255.255.255‘); 
    insert into radgroupreply (groupname,attribute,op,value) values (‘user‘,‘Framed-IP-Netmask‘,‘:=‘,‘255.255.255.0‘);
  2. 建立用户信息:(在此新建用户名为test,密码为testpwd)
    insert into radcheck (username,attribute,op,value) values (‘test‘,‘Cleartext-Password‘,‘:=‘,‘testpwd‘);

  3. 将用户加入组中:
    insert into radusergroup (username,groupname) values (‘test‘,‘user‘);

3.5.6.修改 FreeRADIUS中的mysql 认证配置

执行如下命令:

cd /etc/raddb/mods-enabled
ln -s ../mods-available/sql

3.5.7.修改 FreeRADIUS中的mysql 配置文件

该配置文件位于/etc/raddb/mods-available目录,名称为sql
可以通过vi来修改,命令如下:
vi /etc/raddb/mods-available/sql
找到driver = “rlm_sql_null”这一行,修改为driver = “rlm_sql_mysql”。保持并退出。

3.5.8.测试通过数据库做用户认证

  1. 重新以调试方式运行freeradius:
    radiusd -X
  2. 再打开一个新的终端,运行测试工具命令:
    radtest test testpwd localhost 1812 testing123
    完毕。

    4.daloRADIUS部署

    4.1.软件下载

    Wget http://nchc.dl.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz
    #解压
    tar xf daloradius-0.9-9.tar.gz 
    cd daloradius-0.9-9
    #查看安装说明
    more INSTALL

    4.2.解决依赖

    在INSTALL中我们可以看到程序的需求,需要满足这些需求,否则不能正常运行。
    Apache 1/2
    PHP 4/5
    PHP GD
    PHP DB Abstraction Layer (may require PHP Pear)
    PHP Mail
    MySQL 4/5
    #安装httpd
    yum install httpd -y
    #安装php及组件
    yum install php php-mysql php-gd -y
    #安装
    yum install php-pear-DB -y
    #转移php文件
    cp -a daloradius-0.9-9 /var/www/html/daloradius

    4.3.导入数据库

    cd /var/www/html/daloradius/contrib/db
    mysql -uradius -pradpass radius < ./mysql-daloradius.sql

    4.4.设置数据库连接

    具体操作我们也是查看INSTALL文档。

    cd /var/www/html/daloradius/library
    vim daloradius.conf.php

    #具体根据自己的参数设定

    $configValues[‘CONFIG_DB_HOST‘] = ‘localhost‘;
    $configValues[‘CONFIG_DB_PORT‘] = ‘3306‘;
    $configValues[‘CONFIG_DB_USER‘] = ‘radius‘;
    $configValues[‘CONFIG_DB_PASS‘] = ‘radpass‘;
    $configValues[‘CONFIG_DB_NAME‘] = ‘radius‘;
    …………

    #这个路径和程序放置路径有关系

$configValues[‘CONFIG_PATH_DALO_VARIABLE_DATA‘] = ‘/var/www/html/daloradius/var‘;

4.5. 使用daloRADIUS

具体的主机配置我这里不再介绍,启动Web服务,找一个浏览器输入:http://yourip/daloradius
从INSTALL文档中可以看到,第一次登录的用户是administrator,密码是radius。如果生产环境使用的话一定要修改以下密码,这个用户的信息在表operators里面。
技术分享图片

5.安装中出现的问题及解决方法

在安装freeradius和mariaDB的时候基本上没有问题,但是在安装daloradius的时候,出现了很多问题,问题主要集中在httpd服务器和php配置上。

5.1.登录daloRADIUS提示没有url

首页业务空白,是由于文件存放路径问题造成,一定要放在/var/www/html/下才可。

5.2.登录daloRADIUS出现403 forbbien

提示:“you have no pessmion to access.......”
是由于没有关闭selinux

5.3.登录成功后出现空白页

安装pear和pear db即可解决问题

yum install php-pear
 pear install db

注意,在安装db的时候会提示某个包的安装版本不够,需要使用pear install PEAR更新后可以继续安装DB

5.4.无法读取日志

在日志或其他配置界面,提示没有权限读写文件
/var/www/html/daloradius/library/daloradius.conf.php
需要赋予较高权限,使用如下命令解决
chmod 777 /var/www/html/daloradius/library/daloradius.conf.

5.5.daloradius安装

在daloradius-0.9-9的文件夹中有个”INSTALL”文件,使用文本打开后可以看到大部分安装提示和操作指引。

以上是关于如何搭建Radius服务器的主要内容,如果未能解决你的问题,请参考以下文章

[EAP]将hostapd作为radius服务器搭建EAP认证环境

堡垒机Jumpserver与radius管理网络安全设备

带有 RADIUS 的 MSCHAPv2 - 加密过程到底如何进行?

搭建freeradius+daloradius作为认证服务器

Ubuntu14下搭建各种服务器之AAA认证2

云上的freeradius服务器