Linux上构建一个RADIUS服务器详解

作为一名网络管理员,您需要为您所需管理的每个网络设备存放用于管理的用户信息。但是网络设备通常只支持有限的用户管理功能。学习如何使用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系统上已授权的实体访问。

时间: 2024-11-02 20:28:30

Linux上构建一个RADIUS服务器详解的相关文章

Linux中搭建一个ftp服务器详解

来源:Linux社区  作者:luzhi1024 详解Linux中搭建一个ftp服务器. ftp工作是会启动两个通道:控制通道 , 数据通道在ftp协议中,控制连接均是由客户端发起的,而数据连接有两种模式:port模式(主动模式)和pasv(被动模式)PORT模式:在客户端需要接收数据时,ftp_client(大于1024的随机端口)-PORT命令->ftp_server(21)  发送PORT命令,这个PORT命令包含了客户端是用什么端口来接收数据(大于1024的随机端口),在传送数据时,ft

【转】Linux 下搭建Postfix邮件服务器详解:

在我自己的服务器上面搭建了邮件服务器,为的是接下来写shell脚本进行报警监控.当服务器发生意外,可以及时发送邮件服务器到邮箱. 看了两个教程,按照两个教程来搭建的,感谢原作. Linux 下搭建Postfix邮件服务器详解: 1.首先关闭sendmail服务 service sendmail stop 2.chkconfig sendmail off(关闭开机自启动) 3.修改DNS正解文件,使DNS能够解析邮箱服务 添加下面两行 mail.zhubf.com. IN A           

linux上源码安装MySQL详解

最近需要使用MySQL Fabric,这货是MySQL5.6.10之后才出现的utility.手头机器装的是MySQL5.1,所以需要先把旧版MySQL升级成5.6版本.之前没有玩过MySQL,所以这次稍微费了点事.在此,把过程记录下来,希望能给有需求的人提供一点帮助.下面我们就正式开始. 1. 删除老版本MySQL 其实删除老版MySQL是一件很简单的事,但是开始时候由于担心各个包的依赖会导致各种问题,亦步亦趋来得很慢.其实只需要做到这么几步就可以了: 1.1 查看已安装的mysql版本并删除

在 Linux 上配置一个 syslog 服务器

syslog服务器可以用作一个网络中的日志监控中心,所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)都可以把日志发送给它. 通过设置一个syslog服务器,可以将不同设施/主机发送的日志,过滤和合并到一个独立的位置,这样使得你更容易地查看和获取重要的日志消息. rsyslog 作为标准的syslog守护进程,预装在了大多数的Linux发行版中.在客户端/服务器架构的配置下,rsyslog同时扮演了两种角色:1.作为一个syslog服务器,rs

Linux上文本三剑客之awk详解

AWK介绍 Linux 文本处理工具三剑客:grep.sed.awk.其中grep是一种文本过滤工具:sed是文本行编辑器,而awk是一种报表生成器,就是对文件进行格式化处理的,但这里的格式化不是文件系统的格式化,而是对文件内容进行各种"排版",进而格式化显示:在Linux之上我们使用的是GNU awk 简称gawk,并且gawk就是awk的链接文件,因此系统上使用的awk和gawk是一样的.gawk是一种过程式编程语言.gawk还支持条件判断.数组.循环等编程语言中所有可以使用的功能

linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)

linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至: linux dd命令使用详解 dd 的主要选项: 指定数字的地方若以下列字符结尾乘以相应的数字: b=512, c=1, k=1024, w=2, xm=number m if=file 输入文件名,缺省为标准输入. of=file 输出文件名,缺省为标准输出. ibs=bytes 一次读入 bytes 个字节(即一个块大小为 bytes 个字节). obs=b

Linux守护进程简介和实例详解

简介 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进程.Linux的大多数服务器就是用守护进程实现的.比如,Internet服务器inetd,Web服务器httpd等.同时,守护进程完成许多系统任务.比如,作业规划进程crond,打印进程lpd等. 下面是linux系统中常见的一些守护进程. amd:自动安装NFS(网络文件系统)守侯进程apmd:高级电源管理 Arpwatch:记录日志并构建一个在L

Linux的Ext2文件系统(Inode&Block)详解

前述:Linux系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不可以太小,太大会导致磁盘容量的浪费,太小会导致产生的文件无法存储的问题.在Linux里面文件是由两部分数据组成,一部分是metadata,另一部分是data.那么这些数据都存放在文件系统的什么地方呢?这就让我们必须得了解文件系统的Inode与Block的基本原理了,而Linux最传统的磁盘文件系统使用的是Ext2,所以我们了解下它的内部原理. 第一部分:磁盘的组成和分区(基础) 磁盘的机械部分: 1.圆形

Linux和Windows下ping命令详解

转:http://linux.chinaitlab.com/command/829332.html 一.Linux下的ping参数 用途 发送一个回送信号请求给网络主机. 语法 ping [ -d] [ -D ] [ -n ] [ -q ] [ -r] [ -v] [ \ -R ] [ -a addr_family ] [ -c Count ] [ -w timeout ] [ -f | -i \ Wait ] [ -l Preload ] [ -p Pattern ] [ -s PacketS