SSLVPN(思科)的两因素身份验证?

网络工程 思科 sslvpn
2021-07-22 16:36:29

今天刚被问到为我们公司内的 SSLVPN 用户实施两因素身份验证(通过 Cisco AnyConnect 连接,我们不支持/使用 WebVPN)。目前我们使用 LDAP 进行身份验证。

我已经确定了一家直接与 anyConnect 和移动客户端集成以提供基于令牌的双因素身份验证的公司,但想知道在此类设置中实施双因素的更常见方法是什么?我想到的第一件事是 Google Authenticator 或 RSA,但是在与 AnyConnect 结合的情况下查找有关这些类型设置的信息出奇地难以找到(实际上我什么也没找到)

3个回答

我能想到的两条路径如下:

  1. 您要使用内置 Cisco ASA 辅助身份验证

  2. 您愿意使用半径服务器。

#2 的概念:

  1. 选择一个验证器。例如,谷歌、LDAP、AD 等...

  2. 设置支持身份验证器的 Radius 服务器(FreeRADIUS、Windows NPM、Cisco ACS 等)。

  3. 在您的 Cisco ASA 上配置身份验证以使用该 Radius 服务器(IP 地址、端口、密钥等),然后您就完成了。根据需要调整超时。

关于 Google Authenticator
您可以设置FreeRadius 以使用 Google Authenticator,然后设置 Cisco ASA aaa-server 以使用 FreeRadius 服务器。完毕 :)

关于 Duo Security
我使用过 Duo Security,效果很好。配置链接显示了如何在不安装 Duo Security 应用程序的情况下设置 2-Factor Authentication。但是,如果您安装该应用程序(充当 RADIUS 服务器),则设置会变得更加容易。下面是一个应该有帮助的示例配置。

这个设置的警告:
增加你的超时时间!我遇到了这个问题。不要在现有的 RADIUS 服务器上安装 Duo 应用程序(侦听端口冲突)。

  • 在服务器上安装应用程序后,您需要修改authproxy.cfg文件以使用 Active Directory 作为您的主要身份验证器,位于您的顶部authproxy.cfg

  • 将客户端设置为ad_client和服务器为radius_server_auto

    [main]  
    client=ad_client  
    server=radius_server_auto  
    
  • 创建一个名为 的部分ad_client

    [ad_client]
    host=10.x.x.11
    host_2=10.x.x.12
    service_account_username=ldap.duo
    service_account_password=superSecretPassword
    search_dn=DC=corp,DC=businessName,DC=com
    
  • 安全组是可选的。该组允许用户进行身份验证。

    security_group_dn=CN=Administrators,CN=Builtin,DC=example,DC=com
    
  • 特定的 DUO 安全配置信息

    [radius_server_auto]
    ikey=xxxxxxxxxxxxx
    skey=xxxxxxxxxxxxx
    api_host=api-xxxxx.duosecurity.com
    
  • 安全或可靠是这里的选项。

  • Safe=allow auth 如果 Duo 无法访问。
  • Secure=do not allow auth 如果 Duo 无法访问 failmode=safe

  • 您要访问的 Cisco ASA 的 IP 地址和密钥

    radius_ip_1=10.x.x.1
    radius_secret_1=superSecretPassword
    
  • 安装了 DuoSecurity 应用程序的 Windows Server

    net stop DuoAuthProxy
    net start DuoAuthProxy
    
  • 思科 ASA 8.4 配置

  • 将新的 aaa-server 添加到相应的 VPN 策略

    aaa-server DUO protocol radius
    !
    aaa-server DUO (inside) host 10.x.x.101
     accounting-port 1813
     authentication-port 1812
     key superSecretPassword
     retry-interval 10
     timeout 300
    !
    

双因素身份验证的定义有多种方法。这些是方法:

  1. 您所知道的,例如登录帐户的用户名和密码
  2. 您拥有什么,例如生成数字或证书文件的 RSA 密钥卡
  3. 你是什​​么,比如视网膜扫描和指纹扫描仪

双因素身份验证不是有两个不同的登录帐户,如两组不同的用户名和密码,来自两个不同的来源,因为它们都是“你所知道的”。两因素身份验证的一个例子是将智能卡插入笔记本电脑(你有什么),然后刷指纹扫描仪(你是什么)。

如果我了解您对 LDAP 的使用,您似乎拥有一台 Microsoft 服务器。为什么不在最近的 Microsoft Windows Server 上启用 Microsoft 证书颁发机构服务,该服务包含在操作系统中,并启用用户证书注册?ASA 使用 CA 的根证书可以验证帐户(它称为 XAUTH),然后验证 Windows、Linux 和 MacOS 可以使用的用户证书。

正确,但前提是您有一个安全的注册过程,在某种程度上,手机成为物理密钥卡。Duo 还提供应用程序推送或短信代码的 UX 灵活性。ASA 上的内部 CA 也很棒,但如果您在 HA 对或多上下文中运行,则不是一个选项。按照建议,使用 MS/Dogtag CA 或 Duo。

IMO,通过将 vpn 组配置为这样,您可以获得最大的覆盖范围:

因素 1 - 使用证书(用于 CA 的 MS/Dogtag/ASA) - 可以使用 ldap/AD 用户生成证书。(最好在本地完成,在交付/安装证书时必须遵循 OpSec 最佳实践。)

因素 2 - FreeRADIUS 或 Duo 代理,可安全注册令牌/OTP Fob 或移动设备。

这样,如果用户成为目标,攻击者必须获得 a.) 应该只存在于膝上型电脑/端点密钥库中的证书副本 b.) 用户 AD/radius 用户名/密码 c.) fob (rsa/ yubikey) 或移动设备 (DuoSec)

这也限制了丢失/被盗设备的责任。我相信 duo 还提供了一种通过 AD 管理用户的方法,这使得整个设置易于管理。您的设备必须允许超时/重试调整以支持身份验证期间的带外用户交互。(解锁手机/从口袋中拉出遥控钥匙/等 - 允许至少 30 秒的半径超时)