在 Linux 上构建一个 RADIUS 服务器
2007-12-09 17:20
501 查看
将远程网络登录集中化并保证其安全 |
数据安全作为现代系统中网络安全的一部分,与系统安全一样的重要,所以保护数据 —— 确保提供机密性、完整性和可用性 —— 对管理员来说至关重要。 在本文中,我将谈到数据安全性的机密性方面:确保受保护的数据只能被授权用户或系统访问。您将学习如何在 Linux 系统上建立和配置一个 Remote Authentication Dial-In User Service 服务器(RADIUS),以执行对用户的验证、授权和记帐(AAA)。 各组成元素介绍 首先让我们谈一谈 RADIUS 协议、AAA 组件以及它们如何工作,另外还有 LDAP 协议。 Remote Authentication Dial-In User Service 协议是在 IETF 的 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 服务器软件可以从多个地方获得。在本文中,我将使用 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
radtest收到一个响应,则表明 FreeRADIUS 服务器工作正常。 同时我还推荐另一种免费工具,那就是 NTRadPing(请参阅 参考资料 获得相关链接),它可用于测试来自 Windows 客户机的验证和授权请求。它可以显示从 RADIUS 服务器发回的详细的响应,例如属性值。 现在让我们来配置 FreeRADIUS。
RADIUS 服务器的配置包括对服务器、客户机和用户的配置(都是用于验证和授权)。出于不同的需要,对 RADIUS 服务器可以有不同的配置。幸运的是,大多数配置都是类似的。 配置服务器 FreeRADIUS 配置文件通常位于 /etc/raddb 文件夹下。首先,我们需要像下面这样修改 radiusd.conf 文件。 清单 2. 修改 radiusd.conf
配置客户机 客户机是在 /etc/raddb/clients.conf 文件中配置的。有两种方式可用于配置 RADIUS 客户机。您可以按 IP subnet 将 NAS 分组(清单 3),或者可以按主机名或 IP 地址列出 NAS(清单 4)。如果按照第二种方法,可以定义 shortname和 nastype。 清单 3. 按 IP subnet 将 NAS 分组
文件 /etc/raddb/user 包含每个用户的验证和配置信息。 清单 5. /etc/raddb/user 文件
下面的验证服务器属性-值对(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
清单 7. 配置验证
清单 8. 配置授权
清单 9. 配置记帐
这样就好了。现在让我们看看为 Cisco 无线访问点而进行的配置。下面的配置适用于带有 Firmware 12.01T1 的 Cisco 1200 Series AP。如图 2 中的屏幕快照所示,您: 输入服务器名或 IP 地址和共享的秘密。 选择“Radius”作为类型,并选中“User Authentication”。 图 2. 为 WAP 配置 NAS 实际上,在这里您还可以配置 EAP Authentication,使 FreeRADIUS 可用于验证无线 LAN 的一般用户。
现在所有配置都已经完成,FreeRADIUS 服务器可以开始记录 NAS 发送的所有信息,将该信息存储在 /var/log/radius/radius.log 文件中,就像这样: 清单 10. /var/log/radius/radius.log 文件
清单 11. RADIUS 提供的记帐细节示例
通过遵循本文中列出的简单步骤,您可以建立一个 Remote Authentication Dial-In User Service 服务器,该服务器使用一个外部的 LDAP 服务器来处理为网络安全问题而进行的验证、授权和记帐。本文提供了以下内容来帮助您完成此任务: 对 RADIUS 和 LDAP 服务器以及 AAA 概念的介绍。 一个融入了安装和配置任务的场景。 关于安装和配置 RADIUS 服务器的说明。 关于配置网络访问服务器的细节。 RADIUS 将提供和管理的详细信息的一个示例。 这些指示可以快速确保受保护的数据只能由 Linux 系统上已授权的实体访问。 参考资料 您可以参阅本文在 developerWorks 全球站点上的 英文原文。 Internet Engineering Task Force 的 RFC 2865 对 RADIUS 作了描述。RFC 2866 描述了用于指定记帐信息的一个协议。 Configuring RADIUS 描述了 RADIUS 安全系统,定义了它的操作,并指出了适合与不适合使用 RADIUS 的网络环境。 通过访问 OpenLDAP.org 获得关于 OpenLDAP 的更多信息。 Understanding LDAP - Design and Implementation(IBM Redbooks,2004 年 6 月)介绍了 LDAP 概念和架构以及 IBM Tivoli Directory Server。 这篇 LDAP Linux HOWTO 含有关于在 Linux 系统上安装、配置、运行和维护 LDAP 服务器的完整信息。 Authenticating Linux users with IBM Directory Server(developerWorks,2003 年 9 月)描述了如何使用 IBM Directory Server 来验证 Linux 用户。 让 Linux 更安全,第 1 部分:介绍 (developerWorks,2004 年 7 月)展示了如何将 LDAP 服务器用于用户信息和验证。 AIX RADIUS server, Part 1: Authentication and accounting protocols(developerWorks,2005 年 1 月)讨论了验证和记帐协议,并通过一个 moden 实例解释了基本的 RADIUS 包流。 从 OpenLDAP 网站获得最新版本的 OpenLDAP。 从 FreeRADIUS 网站 获得 FreeRADIUS。 NTRadPing 让您可以测试来自 Windows 客户的验证和授权请求。 为了解更多关于 Cisco Secure Access Control Server (ACS) 和网络设备上的 AAA 实现的信息,请访问 Cisco Systems。 通过访问 IETF,了解更多关于 RADIUS、RADIUS accounting 和 LDAP 验证方法 的信息。 PADL Software 提供了大量 Linux/LDAP 文档和参考资料。 在 developerWorks Linux 专区 可以找到为 Linux 开发人员准备的更多有用信息。 通过参与 developerWorks blogs 加入 developerWorks 社区。 购买 Developer Bookstore 的 Lotus 专区中 打折出售的 Lotus 书籍。 定购免费的 SEK for Linux,这是两张 DVD,其中包含了 IBM 在 Linux 平台上的最新试用软件,包括 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere®。 在您的下一个 Linux 开发项目中使用 IBM 试用软件,它们可以从 developerWorks 的下载目录中获得。 关于作者
|
相关文章推荐
- 在 Linux 上构建一个 RADIUS 服务器
- 在 Linux 上构建一个 RADIUS 服务器
- 在 Linux 上构建一个 RADIUS 服务器
- 在 Linux 上构建一个 RADIUS 服务器
- 在 Linux 上构建一个 RADIUS 服务器
- 在 Linux 上构建一个 RADIUS 服务器
- linux,构建一个简单的nfs服务器
- (四)linux下配置jenkins--构建一个自由风格的项目
- 一个绿色版本的LAMP包. (快速构建linux下的php开发环境)
- 从无到有构建一个Mini Linux(6)
- linux环境一个服务器设置多个Ip地址
- Linux网络编程一步一步学-自己编写一个HTTP协议的目录浏览和文件下载服务器
- Linux下使用Shell脚本向FTP服务器上传或下载一个文件
- 一个简单的linux下的服务器+客户端的编写
- 掌控——构建Linux系统Nagios监控服务器
- Linux中同一个服务器运行多个Tomcat
- 如何构建一个单机高性能服务器
- 嵌入式linux系统网络超级服务器构建指南(for arm)