本文我们将探讨如何通过Windows Server 2008 NPS(网络策略
服务器)为不同的远程访问解决方案添加双重身份验证以帮助
企业增强访问网络的身份验证
。
不管是由于监管要求
,还是因为静态密码不能提供足够
安全性的事实
,越来越多的
企业开始部署高强度的身份验证以确保企业
安全性
。在本文中我们将探讨如何通过Windows Server 2008 NPS(网络策略
服务器)为不同的远程访问解决方案添加双因素身份验证以帮助企业增强访问网络的身份验证。对于双因素身份验证,我们将使用WiKID强认证服务器,WiKID是一款基于商业/开源软件的双因素身份验证解决方案,WiKID 旨在成为令牌、证书、密码的安全替代品。
假设你的环境中既有Windows系统又有Linux/Unix,然后你需要部署双因素身份验证来满足PCI要求,你想要保护所有关键系统(大多数是Linux系统)并且你打算使用双因素身份验证(这里我们只讨论SSH)锁定远程桌面。这就需要创建一个双因素验证锁定的SSH网关服务器,然后管理就可以使用公钥验证从网关访问其他服务器。
SSH为远程管理服务器提供了一个高度安全的渠道,然而,在面对审计时,大家需要注意几个与验证相关的潜在问题:
* 不能控制哪些用户拥有公钥授权
* 不能执行(或者确定是否在使用)密码复杂性
* 不能设置公钥失效
另外,还需要为其他服务添加双因素身份验证,包括RDP和VPN等。为所有服务和不能用于其他服务的SSH密钥设置单个双因素认证服务是非常有效的。
概述
完成所有设置后,系统将这样运行:用户从他们的WiKID软件令牌生成一个一次性密码,并将其输入到SSH密码框,密码将通过radius获得SSH网关到NPS的验证。然后NPS将验证用户在Active Directory及相关组群中是否有效,如果有效,NPS会通过radius将用户名和一次性密码发送给WiKID强认证服务器。如果OTP是有效的,WiKID服务器会响应NPS,然后NPS响应SSH网关,用户将被授予访问权限。请注意,这个过程只是验证过程,会话管理仍然由SSH网关或者其他你在使用的远程访问服务来处理。
首先我们需要启用Windows Server 2008网络策略服务器 (NPS)
添加“网络策略和访问服务”角色到域控制器
在安装过程中,启用以下角色服务器:
*网络策略服务器
* Routing & Remote Access Services路由和远程访问服务
* Remote Access Service远程访问服务
* Routing路由
然后我们需要添加一个新的RADIUS客户端,本文中即SSH网关
在管理工具(Administrative Tools)中选择网络策略服务器
右键点击Radius Clients并选择新建
添加远程访问服务器(RAS、VPN等)的名称和IP地址,并创建一个共享密码,你将需要在WiKID服务器中输入相同的共享密码,点击确认。
添加新的Radius服务器,即WiKID强认证服务器
右键单击Remote RADIUS服务器并命名这个组,如“WiKID”
点击添加按钮来向该组添加一个新的radius服务器
在第一个选项中输入WiKID服务器的IP地址,在第二个选项中,输入共享密码。
创建网络策略
现在我们已经创建了radius客户端和radius服务器(WiKID),下面我们需要创建一个新的网络策略来告诉IAS哪些用户可以代理到WiKID。
输入名称,将网络访问服务器类型保持为“未指定(Unspecified)”或者选择远程访问系统
点击Conditions选项,我为所有来自我的服务器IP地址的请求添加了一个条件。
点击Settings Page,点击Authentication并选择“Forward requests to the following remote RADIUS server group for authentication(将请求转发到以下远程RADIUS服务器组进行验证)”,选择WiKID。
配置WiKID强认证服务器
现在我们已经配置了NPS来代理身份验证,我们需要配置WiKID来接受它们,这里我们只需要为NPS添加一个radius网络客户端:登录到WiKIDAdmin网络界面,点击网络客户选项,点击“创建新网络客户端”,给网络客户端命名,指定IP地址,根据协议选择Radius并选择使用哪个WiKID域(WiKID域涵盖用户并且指定某种安全参数,如PIN长度、一次性密码的使用时间等)。
在接下来的页面中,输入共享密码,也就是上文在NPS中的密码。确保输入相同的密码!!WiKID支持在网络客户端水平和每个用户组水平添加radius返回属性,不过这超出了本文的范围。
此时会有消息提示说已经成功添加网络客户端,你需要从命令行重启WiKID服务器,这会使网络客户端会加载到radius界面,并打开内置WiKID防火墙的radius端口。
# wikidctl restart
配置SSH网关服务器
配置SSH网关
现在我们将需要配置中央SSH网关,
linux系统是导向所有生产服务器的网关/代理,它必须被严格锁定,并且不能有多余的软件或者服务器在上面运行。此外,
linux系统还需要有一个处理入站连接的外部接口以及处理内部连接的内部接口。首先我们需要配置网关使用WiKID对SSH用户进行高强度验证。
从安装PAM Radius开始,PAM Radius主页地址为http://www.freeradius.org/pam_radius_auth/
下载最新版本的tar文件
运行:
$ make
将产生的共享库复制到/lib/security。
$ sudo cp pam_radius_auth.so /lib/security/
编辑/etc/pam.d/sshd来允许进行Radius身份验证
$ sudo vi /etc/pam.d/sshd
注意:不同版本的linux有不同的pam.d文件格式。 请检查linux的具体版本,以下说明适用于Fedora/ Redhat/Centos
转到该文件的第一行,点击Insert键或者i键,插入到这一行。
auth sufficient /lib/security/pam_radius_auth.so
Sufficient标签意味着,如果Radius身份验证成功的话,就不再需要额外的身份验证。然而,如果Radius验证失败的话,将需要来自该系统的用户名和密码来验证。使用“Required”来请求强认证。
写入文件并推出,点击Esc键来推出插入模式,并输入':wq'
编辑或创建/etc/raddb/server文件。
vi /etc/raddb/server
下面这行:
127.0.0.1 secret 1
添加这一行,替代routableIPAddress:
routableIPaddress shared_secret 1
routeableIPaddress是NPS服务器的IP地址
编辑 /etc/pam.d/sshd文件:
#%PAM-1.0
auth sufficient /lib/security/pam_radius_auth.so
auth include system-auth