分类: 网络与安全
2009-09-28 20:43:52
对于系统管理员和企业CIO来说,企业无线局域网的安全问题一直是他们关注的重心。在4月份中,我们会连续关注企业无线局域网安全,今天我们将向大家介绍如何配置Windows Server 2003中附带的IAS RADIUS 服务器,实现无线网络验证。
在Windows Server 2003中,附带了一款稳定,安全和强健的RADIUS(也被称作AAA)服务器。如果你在互联网上搜索有关Microsoft IAS的漏洞,你会发现根本找不到。IAS服务已经安全的运行了数年而没有进行任何修补工作了。如果你的Windows Server 2003主机已经设置成只允许IAS请求,同时防火墙也封闭了其它的端口,并且Windows Server 2003系统上没有运行其它服务,那么你可以确保这个 IAS RADIUS服务器可以无故障的持续运行数年而不需要重新启动。
IAS的竞争对手
在企业市场上,IAS的最大竞争对手就是思科的Cisco ACS 。首先我要澄清的是,很多人都认为如果企业使用了Cisco的网络设备,就一定要使用ACS,这种观点是不对的。只要用户避免使用一些私有的、安全性较差 以及部署困难的协议,如LEAP或EAP-FAST,就可以保证Cisco网络设备可以良好的运行。
另外,ACS的稳定性也是一个问题,由于不断的被发现存在漏洞和bug,ACS需要经常性的下载补丁进行修补。我就曾经花费了不少时间解决ACS的 问题并进行技术支持。对于Cisco ACS我的经验还是比较丰富的。目前最新版的Cisco ACS 4.x有两个安全漏洞补丁,其中一个漏洞还是critical等级的。3.x和2.x版本的ACS也都有各自的安全漏洞,这些漏洞的补丁也是在2006年 12月10日与4.x的系统漏洞补丁同时发布的。
Cisco ACS也无法实现中继RADIUS服务器的功能,这使得它无法在一个多层RADIUS环境中正常工作。而用户需要这种能力将多个活动目录或者彼此没有连接 的用户目录联系起来。另外,ACS每套拷贝的价格是8000美元,而微软的IAS则是随Windows Server 2003附带的。两个冗余的RADIUS服务器可以很快地建立起来。而ACS虽然带有一个独立的应用程序,但是与Windows下的图形界面控制台相比, 这个应用程序使用起来困难度相当高。
Funk software(被Juniper收购)有一个不错的Steel-belted RADIUS解决方案,售价大约4000美金,这对于需要建立两个RADIUS冗余服务器的企业来说还是有些贵了。对于那些没有运行Windows活动目 录环境的企业,Funk是一个不错的解决方案,因为IAS与微软活动目录联系紧密,并不支持非微软的数据库环境。
对于Linux用户,可以使用FreeRADIUS。在过去(0.x版本和1.x版本)FreeRADIUS曾经出现过重大的安全漏洞,但是这些漏 洞已经被修补好,并且不像Cisco ACS那样还在不断出现漏洞。FreeRADIUS虽然还没有Funk或者Microsoft 的RADIUS解决方案那样完善,但是如果用户只是在自己的Linux系统上安装,或者不需要企业Linux支持,那么它是完全免费的。如果用户采用的是 SuSE 或Red Hat,并且需要企业支持,那么它的费用是Windows Server 2003永久许可证费用的两倍。因此,这完全是看用户的需求和使用模式,有些人喜欢Linux,有些人则喜欢Windows。
安装IAS
由于Windows Server 2003在默认安装时不会安装任何附加的安全组件,因此用户需要手动安装IAS。如果你拥有Windows Server 2003的安装光盘,那么这一过程会变得非常简单。要安装IAS,只需要在控制面板区域打开“添加和删除程序”,并选择“安装和卸载Windows组件” 即可。之后你会看到如图OO所示的窗口,通过下拉滚动条,找到“Network Services”。由于我们不需要安装全部网络服务,因此应该高亮该项目,并选择“Details”按钮。
图OO 网络服务
接下来你会看到如 图 PP所示的窗口,向下滚动,找到"Internet Authentication Service" IAS 并选中。
图PP 选择IAS
安装IAS后,你就可以通过管理工具或者开始菜单来启动IAS 了。接下来会看到如图QQ所示的窗口。
图QQ 服务
设置日志策略
我们首先要做的是检查并设置日志策(图RR)。右键点击“Internet Authentication Service (Local)”,然后选择属性。
图RR IAS 属性
接下来会看到如 图SS所示的窗口。如果选择了窗口下方的两个复选框,那么就可以通过Windows的事件查看器看到成功和失败的IAS验证请求了。如果你喜欢使用文本或基于SQL的日志,就不需要选择这两项了,除非你希望通过各种途径都能查看到IAS的日志。
图SS 本地属性
如果选择了“Ports”标签,你会看到如图TT所示的窗口。其中显示了默认的RADIUS端口,一般来说,我们都采用这些端口作为标准的 RADIUS通信端口。Microsoft IAS实际上会监听两套端口。较低的端口号是比较传统的端口号码,而微软的应用程序偏向使用较高的端口号码。我们保持这些端口号码不变即可。
图TT 端口
接下来是设置Microsoft IAS的独立文本日志和SQL日志。右键点击“Remote Access Logging”页面下的“Local File”部分,然后选择属性。如图UU所示。
图UU 远程访问日志
在"settings"标签中,我们可以选择需要记录哪些事件。如图VV所示。
图VV 本地文件属性
在"Log File" 标签中,我们可以设置日志文件的格式和文件的体积限制。如图WW所示。
图WW日志文件
由于需要额外配置一个SQL数据库才能正常工作,因此在这里我不选择使用SQL日志格式。如果你需要采用基于SQL数据库的日志,那么需要手动创建 一个SQL帐号和数据表。另外,如果日志不能正常工作,那么Windows Server 2003的RADIUS服务就会停止。因此如果用户采用了SQL日志方式,而SQL服务器又没有正常工作,那么RADIUS服务器也会随之停止工作。而 且,根据微软的说法,之所以没有提供绕过SQL服务器单独启动RADIUS服务器的方式,是因为用户觉得这样做更加安全。而根据我的调查来看,大多数用户 都希望在SQL服务器不能正常登录的情况下,RADIUS仍然能够正常运行。
由于微软IAS的认证和认证组件性能相当可靠,因此这么做也不会有任何安全风险,仅仅是不能记录日志而已。有关这方面的问题,我曾经跟微软提出过, 他们的答复是,会在Windows Server 2007中研究是否要取消SQL日志与RADIUS服务器间的连锁关系。希望那时候微软还会推出一个自动建立SQL数据库的脚本。
RADIUS的“客户”并不是我们所想象的“用户”。RADIUS的客户实际上是指无线接入点、路由器、交换机、网络防火墙或者一个VPN集线器。 任何可以提供网络接入功能,并需要AAA(接入、认证和审计)的设备,对于RADIUS服务器来说都是RADIUS客户。在本文中,我们只建立一个接入点 作为一个RADIUS客户。
要建立RADIUS客户,我们需要右键点击“RADIUS Clients”,然后选择“New RADIUS Client”,如图XX所示。
图XX 建立Radius客户
接下来我们会看到如图YY所示的窗口,在该窗口中,我们需要命名该接入设备,然后设置该接入设备的IP地址。在本文中,这个接入设备是一个无线接入 点。需要注意的是,如果接入设备是路由器或防火墙,因为这类设备都具有多个接口,因此会包含多个IP地址。此时你应该在这里输入距离RADIUS服务器最 近的一个端口的IP地址。这是由于RADIUS请求会来自多端口设备中距离RADIUS服务器最近的端口,如果设置错误,那么RADIUS服务器将无法与 该设备进行通信。
图YY 命名新RADIUS客户并输入IP
接下去我们要设置RADIUS类型和RADIUS密码。一般来说, RADIUS类型部分总是设置为“RADIUS Standard”。而Cisco的设备是一个例外,如果你所要连接的设备是来自Cisco的,那么在“Client-Vendor”区域必须选择 “Cisco”。不过Cisco的无线交换机并不在此例外中,因为Cisco的无线交换机其实是2005年收购Airespace后来自 Airespace的产品。
Airespace的无线交换机可以使用“RADIUS Standard”方式,就和其他厂商的产品一样。“shared secret”是RADIUS服务器与其他接入设备共享的密码(如图ZZ所示)。我们应该使用字母和数字混合密码,并且长度应该大于十位。另外不要使用空 格和特殊符号作为密码,因为这些字符可能与某些设备或软件产生兼容性问题,而要找到此类问题的根源却相当麻烦。
图ZZ 设置共享密码
点击"Finish"完成此设置。如果你有多个接入设备,则需要重复这一过程。
添加远程访问策略
现在我们需要建立一个远程访问策略,对试图访问接入设备的用户进行验证和授权。首先我们右键点击“Remote Access Policies”项,然后选择“New Remote Access Policy”。如图AAA所示。
图AAA 新建远程访问策略
点击"Next"转到下一窗口。如图BBB所示。
图BBB 策略向导
为策略命名,并选择通过向导建立策略。然后点击"Next"。如图CCC所示。
图CCC 命名策略
选择"Wireless" 然后点击 "Next",如图DDD所示。
图DDD 选择无线接入
对用户和计算机进行接入授权。点击"Add"。如图EEE所示。
图EEE 按组进行授权
这里我们需要对需要授权的域的位置进行定位。点击"Locations"。如图FFF所示。
图FFF 选择组
选择需要授权的域,并点击“OK”。需要注意的是, IAS服务器必须加入到该域,或者必须为于该域的信任域中。如图GGG所示。
图GGG 选择位置
输入“Domain Users”和“Domain Computers”,并用分号分隔。如图HHH所示。然后点击“Check Names”强制对输入内容进行校验。由于该选项是允许任何域用户和域计算机访问无线局域网,因此你可能还需要对一小部分用户或计算机进行限制。接着点击 OK。
图HHH 输入域名
需要注意的是,“Domain Computers”是用来验证你的计算机的“机器验证”,也就是说,不论用户是否登录,都会先验证用户所使用的计算机是否具有接入资格。这种方式模拟了无线局域网环境中所出现的情况,因此是一种非常有效的验证手段。
如果“机器验证”没有进行,那么组策略以及登录脚本将不会执行。另外,只有已经存在于无线接入计算机中的用户才能够正常登录,因为如果用户之前从未 使用过该计算机登录无线网络,将无法对其进行域验证。正因如此,我总是建议Windows用户使用Windows无线网络客户端,并且建议管理员采用自动 部署方式完成对客户端的无线网络配置。
在图III中,我们会看到我们所允许访问的用户组和计算机组。需要注意的是,这两个组之间的关系是“或”,即符合其中任何一项,都可以成功接入。下面我们点击“Next”
图III 定义访问组
选择"Protected EAP (PEAP)" 认证,然后点击"Configure"。如图JJJ所示。
图JJJ 验证
在处理下一个窗口前,你必须具有一个合法的来自CA机构的Machine Certificate(机器证书),或者你已经拥有了自签名(self-signed)证书。其余部分保持不变,如图KKK所示。然后点击OK键。
图KKK PEAP属性
现在我们就完成了一个新的无线认证策略的制定。下面我们就开始进行具体的配置工作。
调整远程接入策略
完成以上步骤后,我们会看到一个新的与用户所命名一致的远程接入策略出现在窗口中。如图LLL所示,窗口中有两个默认的策略,还有一个就是我们新建的策略。在默认状态下,新建的策略是禁用的,因此我们需要右键点击该策略,并选择属性项。
图LLL 远程接入策略
如图MMM所示,我们注意到窗口中有两个“Policy conditions”,并且这两个情况之间是AND关系,即如果某一接入情况同时符合这两个规定,则可以通过,否则就无法通过该策略,而会被转到下一个 “远程接入策略”。在我们的例子中,策略状态表中的第一个策略仅允许采用802.11方式接入的用户,第二个策略状态是检查该用户是否符合我们上面设置的 用户组或计算机组。点击“Edit Profile”继续。
图MMM WiFi Policy 属性
“Dial-in Constraints”标签允许我们设置拨号接入和线程约束条件,如图NNN所示。在这里还可以设置用户登录的最长时间。
图NNN Dial-in Profile
“Encryption”标签对于安全很重要,如图OOO所示。你必须取消其余三个保密性不强的方式,同时只选中最强的加密方式。
图OOO 加密
“Advanced”标签(如图PPP)我们目前还不需要使用,但是这个标签中的内容都相当重要。在这个标签中,我们可以定义RADIUS的一些特 殊属性,比如让RADIUS服务器告诉Cisco VPN集线器某个用户是属于某个用户组的,以便集线器会将该用户组的VLAN和防火墙设置应用于该用户帐号上。你还可以针对内置防火墙的Aruba无线交 换机设置VLAN或组关联。有关这方面的细节设置,我们会在后面有关RADIUS高级设置的文章中介绍。
图PPP Advanced 标签
在“Authentication”标签下,我们可以调整EAP模式(如图QQQ所示)。对于无线局域网PEAP认证,我们保持所有选项空白即可。 这些设置是为那些较古老的RADIUS应用准备的,比如通过拨号调制解调器拨号后访问RADIUS服务器。下面我们点击“EAP Methods”查看具体内容。
图QQQ 验证
在这里,你可以编辑PEAP配置。如图RRR所示。我们在建立策略时就已经对相关内容进行了配置。接下来点击OK。
图RRR EAP Providers
再次点击 OK 按钮,退出Dial-in profile 窗口。
在IAS界面中的最后一项内容是“连接请求处理”,如图SSS所示。在本文中,我不打算对此进行详细介绍了,只是让大家初步了解一下该部分的内容。 “Connection Request Processing”项目可以让我们设置高级的RADIUS中继功能。你可以选择将什么样的RADIUS请求进行中继,也可以选择将请求转发到不同的 RADIUS服务器上,或者决定哪些RADIUS请求需要在本地“远程接入策略”中进行处理。
你还可以在在RADIUS服务器上配置需要转发的组,这可以让IAS在多级RADIUS环境中正常工作。比如,如果有一个用户属于企业合作伙伴的网 络而不属于企业本身,那么当他试图接入企业的网络环境时,你就可以将他的RADIUS请求转发到合作伙伴公司的RADIUS服务器上进行处理。在一些校园 环境,也会使用这种方式来区分学生和教职人员,或者不同校区的学生。
图SSS 连接请求
备份和恢复IAS策略
在做完了以上一系列工作后,我们还希望能够备份RADIUS配置,并在必要的时候将其恢复到冗余RADIUS服务器上。其实这个任务很好实现。微软给了我们一个简单的命令行来导出和导入RADIUS配置信息。
要执行备份操作,我们只需要输入以下命令:
netsh aaaa show config c:IAS.txt
这里要注意的是,所保存的文件名前缀可以是任意合法的文件名,如果不小心搞乱了IAS配置,就可以直接用这个本地文件恢复配置。如果你需要在另一台 IAS RADIUS服务器上应用相同的配置,也可以方便的将其恢复到该服务器上。从文本文件恢复IAS设置,也只需要一个简单的命令。
netsh exec c:IAS.txt
这种方式可以让我们快速的配置多个冗余的 IAS RADIUS服务器,同时也可以让我们快速恢复IAS服务器的设置。