无线网络安全指南:IASRADIUS实现无线网络验证对于系统管理员和企业CIO来说,企业无线局域网的安全问题一直是他们关注的重心。在4月份中,我们会连续关注企业无线局域网安全,今天我们将向大家介绍如何配置WindowsServer2003中附带的IASRADIUS服务器,实现无线网络验证。在WindowsServer2003中,附带了一款稳定,安全和强健的RADIUS(也被称作AAA)服务器。如果你在互联网上搜索有关MicrosoftIAS的漏洞,你会发现根本找不到。IAS服务已经安全的运行了数年而没有进行任何修补工作了。如果你的WindowsServer2003主机已经设置成只允许IAS请求,同时防火墙也封闭了其它的端口,并且WindowsServer2003系统上没有运行其它服务,那么你可以确保这个IASRADIUS服务器可以无故障的持续运行数年而不需要重新启动。IAS的竞争对手在企业市场上,IAS的最大竞争对手就是思科的CiscoACS。首先我要澄清的是,很多人都认为如果企业使用了Cisco的网络设备,就一定要使用ACS,这种观点是不对的。只要用户避免使用一些私有的、安全性较差以及部署困难的协议,如LEAP或EAP-FAST,就可以保证Cisco网络设备可以良好的运行。另外,ACS的稳定性也是一个问题,由于不断的被发现存在漏洞和bug,ACS需要经常性的下载补丁进行修补。我就曾经花费了不少时间解决ACS的问题并进行技术支持。对于CiscoACS我的经验还是比较丰富的。目前最新版的CiscoACS4.x有两个安全漏洞补丁,其中一个漏洞还是critical等级的。3.x和2.x版本的ACS也都有各自的安全漏洞,这些漏洞的补丁也是在2006年12月10日与4.x的系统漏洞补丁同时发布的。CiscoACS也无法实现中继RADIUS服务器的功能,这使得它无法在一个多层RADIUS环境中正常工作。而用户需要这种能力将多个活动目录或者彼此没有连接的用户目录联系起来。另外,ACS每套拷贝的价格是8000美元,而微软的IAS则是随WindowsServer2003附带的。两个冗余的RADIUS服务器可以很快地建立起来。而ACS虽然带有一个独立的应用程序,但是与Windows下的图形界面控制台相比,这个应用程序使用起来困难度相当高。Funksoftware(被Juniper收购)有一个不错的Steel-beltedRADIUS解决方案,售价大约4000美金,这对于需要建立两个RADIUS冗余服务器的企业来说还是有些贵了。对于那些没有运行Windows活动目录环境的企业,Funk是一个不错的解决方案,因为IAS与微软活动目录联系紧密,并不支持非微软的数据库环境。对于Linux用户,可以使用FreeRADIUS。在过去(0.x版本和1.x版本)FreeRADIUS曾经出现过重大的安全漏洞,但是这些漏洞已经被修补好,并且不像CiscoACS那样还在不断出现漏洞。FreeRADIUS虽然还没有Funk或者Microsoft的RADIUS解决方案那样完善,但是如果用户只是在自己的Linux系统上安装,或者不需要企业Linux支持,那么它是完全免费的。如果用户采用的是SuSE或RedHat,并且需要企业支持,那么它的费用是WindowsServer2003永久许可证费用的两倍。因此,这完全是看用户的需求和使用模式,有些人喜欢Linux,有些人则喜欢Windows。安装IAS由于WindowsServer2003在默认安装时不会安装任何附加的安全组件,因此用户需要手动安装IAS。如果你拥有WindowsServer2003的安装光盘,那么这一过程会变得非常简单。要安装IAS,只需要在控制面板区域打开“添加和删除程序”,并选择“安装和卸载Windows组件”即可。之后你会看到如图OO所示的窗口,通过下拉滚动条,找到“NetworkServices”。由于我们不需要安装全部网络服务,因此应该高亮该项目,并选择“Details”按钮。图OO网络服务接下来你会看到如图PP所示的窗口,向下滚动,找到InternetAuthenticationServiceIAS并选中。图PP选择IAS安装IAS后,你就可以通过管理工具或者开始菜单来启动IAS了。接下来会看到如图QQ所示的窗口。图QQ服务设置日志策略我们首先要做的是检查并设置日志策(图RR)。右键点击“InternetAuthenticationService(Local)”,然后选择属性。图RRIAS属性接下来会看到如图SS所示的窗口。如果选择了窗口下方的两个复选框,那么就可以通过Windows的事件查看器看到成功和失败的IAS验证请求了。如果你喜欢使用文本或基于SQL的日志,就不需要选择这两项了,除非你希望通过各种途径都能查看到IAS的日志。图SS本地属性如果选择了“Ports”标签,你会看到如图TT所示的窗口。其中显示了默认的RADIUS端口,一般来说,我们都采用这些端口作为标准的RADIUS通信端口。MicrosoftIAS实际上会监听两套端口。较低的端口号是比较传统的端口号码,而微软的应用程序偏向使用较高的端口号码。我们保持这些端口号码不变即可。图TT端口接下来是设置MicrosoftIAS的独立文本日志和SQL日志。右键点击“RemoteAccessLogging”页面下的“LocalFile”部分,然后选择属性。如图UU所示。图UU远程访问日志在settings标签中,我们可以选择需要记录哪些事件。如图VV所示。图VV本地文件属性在LogFile标签中,我们可以设置日志文件的格式和文件的体积限制。如图WW所示。图WW日志文件由于需要额外配置一个SQL数据库才能正常工作,因此在这里我不选择使用SQL日志格式。如果你需要采用基于SQL数据库的日志,那么需要手动创建一个SQL帐号和数据表。另外,如果日志不能正常工作,那么WindowsServer2003的RADIUS服务就会停止。因此如果用户采用了SQL日志方式,而SQL服务器又没有正常工作,那么RADIUS服务器也会随之停止工作。而且,根据微软的说法,之所以没有提供绕过SQL服务器单独启动RADIUS服务器的方式,是因为用户觉得这样做更加安全。而根据我的调查来看,大多数用户都希望在SQL服务器不能正常登录的情况下,RADIUS仍然能够正常运行。由于微软IAS的认证和认证组件性能相当可靠,因此这么做也不会有任何安全风险,仅仅是不能记录日志而已。有关这方面的问题,我曾经跟微软提出过,他们的答复是,会在WindowsServer2007中研究是否要取消SQL日志与RADIUS服务器间的连锁关系。希望那时候微软还会推出一个自动建立SQL数据库的脚本.添加RADIUS客户RADIUS的“客户”并不是我们所想象的“用户”。RADIUS的客户实际上是指无线接入点、路由器、交换机、网络防火墙或者一个VPN集线器。任何可以提供网络接入功能,并需要AAA(接入、认证和审计)的设备,对于RADIUS服务器来说都是RADIUS客户。在本文中,我们只建立一个接入点作为一个RADIUS客户。要建立RADIUS客户,我们需要右键点击“RADIUSClients”,然后选择“NewRADIUSClient”,如图XX所示。图XX建立Radius客户接下来我们会看到如图YY所示的窗口,在该窗口中,我们需要命名该接入设备,然后设置该接入设备的IP地址。在本文中,这个接入设备是一个无线接入点。需要注意的是,如果接入设备是路由器或防火墙,因为这类设备都具有多个接口,因此会包含多个IP地址。此时你应该在这里输入距离RADIUS服务器最近的一个端口的IP地址。这是由于RADIUS请求会来自多端口设备中距离RADIUS服务器最近的端口,如果设置错误,那么RADIUS服务器将无法与该设备进行通信。图YY命名新RADIUS客户并输入IP接下去我们要设置RADIUS类型和RADIUS密码。一般来说,RADIUS类型部分总是设置为“RADIUSStandard”。而Cisco的设备是一个例外,如果你所要连接的设备是来自Cisco的,那么在“Client-Vendor”区域必须选择“Cisco”。不过Cisco的无线交换机并不在此例外中,因为Cisco的无线交换机其实是2005年收购Airespace后来自Airespace的产品。Airespace的无线交换机可以使用“RADIUSStandard”方式,就和其他厂商的产品一样。“sharedsecret”是RADIUS服务器与其他接入设备共享的密码(如图ZZ所示)。我们应该使用字母和数字混合密码,并且长度应该大于十位。另外不要使用空格和特殊符号作为密码,因为这些字符可能与某些设备或软件产生兼容性问题,而要找到此类问题的根源却相当麻烦。图ZZ设置共享密码点击Finish完成此设置。如果你有多个接入设备,则需要重复这一过程。添加远程访问策略现在我们需要建立一个远程访问策略,对试图访问接入设备的用户进行验证和授权。首先我们右键点击“RemoteAccessPolicies”项,然后选择“NewRemoteAccessPolicy”。如图AAA所示。图AAA新建远程访问策略点击Next转到下一窗口。如图BBB所示。图BBB策略向导为策略命名,并选择通过向导建立策略。然后点击Next。如图CCC所示。图CCC命名策略选择Wireless然后点击Next,如图DDD所示。图DDD选择无线接入对用户和计算机进行接入授权。点击Add。如图EEE所示。图EEE按组进行授权这里我们需要对需要授权的域的位置进行定位。点击Locations。如图FFF所示。图FFF选择组选择需要授权的域,并点击“OK”。需要注意的是,IAS服务器必须加入到该域,或者必须为于该域的信任域中。如图GGG所示。图GGG选择位置输入“DomainUsers”和“DomainComputers”,并用分号分隔。如图HHH所示。然后点击“CheckNames”强制对输入内容进行校验。由于该选项是允许任何域用户和域计算机访问无线局域网,因此你可能还需要对一小部分用户或计算机进行限制。接着点击OK。图HHH输入域名需要注意的是,“DomainComputers”是用来验证你的计算机的“机器验证”,也就是说,不论用户是否登录,都会先验证用户所使用的计算机是否具有接入资格。这种方式模拟了无线局域网环境中所出现的情况,因此是一种非常有效的验证手段。如果“机器验证”没有进行,那么组策略以及登录脚本将不会执行。另外,只有已经存在于无线接入计算机中的用户才能够正常登录,因为如果用户之前从未使用过该计算机登录无线网络,将无法对其进行域验证。正因如此,我总是建议Windows用户使用Windows无线网络客户端,并且建议管理员采用自动部署方式完成对客户端的无线网络配置。在图III中,我们会看到我们所允许访问的用户组和计算机组。需要注意的是,这两个组之间的关系是“或”,即符合其中任何一项,都可以成功接入。下面我们点击“Next”图III定义访问组选择ProtectedEAP(PEAP)认证,然后点击Configure。如图JJJ所示。图JJJ验证在处理下一个窗口前,你必须具有一个合法的来自CA机构的MachineCertificate(机器证书),或者你已经拥有了自签名(self-signed)证书。其余部分保持不变,如图KKK所示。然后点击OK键。