Windows Server启用双因素认证(OTP)

背景:

        等保测评中,有一项是这样写的:

我们ECS,应用都有双因素认证,但是对于数据库的连接管理,因为产品、业务、技术等原因,无法开启双因素认证,(对于远程连接数据库服务器,直接管理数据库,我们不考虑,也不现实),本文档就是针对该情况在不影响正常业务和运维的情况下进行的整改。

思路:

        1、通过防火墙限制数据库端口的连接(仅限应用的IP+运维客户端IP+一台Windows Server

        2、为满足要求,需要在WS安装OTP服务并启用(重点)。

        3、登录这台WS通过数据库管理软件管理数据库。

实现方法:

        1、寻找符合要求的软件,最终选择:multiotp

下载地址:https://download.multiotp.net/credential-provider/

根据自己的版本进行下载,并解压到指定目录

2、安装

multiOTPCredentialProviderInstaller.msi,尽量以超管安装。

新的页面保持默认选项,直接点“next”下一步。

这里是要选择哪种登录方式需要两步验证,一般来说我们都选“only remote 远程登录需要验证就行了。

点“next”下一步,

来到最后一个页面,直接点“install”开始安装程序,很快就装好了,

最后点“finish”结束安装。

3、新建用户,并配置可远程连接的权限

4、配置

 安装完程序后,还需要进行些设置,我们来到multiotp的安装目录,一般来说是在C:\Program Files\multiOTP目录下。以管理员权限打开命令提示符,输入命令C:\Program Files\multiOTP回车,进到multiotp的安装目录;

#创建用户及赋权
net user 用户名 密码 /add
net localgroup "Remote Desktop Users" 用户名 /add

#启用OTP的用户及配置
multiotp.exe -fastcreatenopin 用户名
multiotp.exe -qrcode 用户名 用户名.png
multiotp.exe -two_step_hide_otp 用户名 用户名.png

然后输入multiotp.exe -fastcreatenopin 用户名 命令回车,其中 用户名 是你要设置两步验证的用户名。

问题分析及处理:

这是一个非常典型的 Windows 环境下运行 PHP 时遇到的 Visual C++ Redistributable 版本不兼容 错误。

简单来说,你的 PHP 程序在启动时,需要一个特定版本的 VCRUNTIME140.dll 文件来运行,但它找到了一个版本(14.22),而你的 PHP 版本在编译时链接的是另一个更新的版本(14.44)。版本不匹配导致 PHP 无法正常加载。

提示:根据你的错误信息(14.44 vs 14.22),你极大概率需要安装 Visual C++ 2022 Redistributable。请优先尝试这个。

双击安装,查看安装信息:

再次执行

输入完这段代码后就能在multiotp的安装目录看到新建的users文件夹和生成的图片。

绑定OTP验证码

手机动态码软件扫码绑定,这类的软件很多,这里不做赘述。

5、验证前的温馨提醒,建议(重要)

  1. 注意:Visual C++ Redistributable 版本不兼容,一般通过官网下载都能解决。
  2. 注意:尽量修改下注册表的部分信息,不然可能开启OTP认证导致管理员登录不进去(cpus_logon=1e),切记 需要修改成(cpus_logon=1d)

HKEY_CLASSES_ROOT\CLSID\{FCEFDFAB-B0A1-4C4D-8B2B-4FF4E0A3D978}

参考如下:

配置值作用范围显示模式最终效果
0e本地+远程仅 multiOTP全局强制双因素认证
0d本地+远程multiOTP + 其他全局按需双因素认证(推荐)
1e仅远程仅 multiOTP仅远程强制双因素认证(导致不显示其他登录方式,超管也不能远程登录)
1d仅远程multiOTP + 其他仅远程按需双因素认证
2e仅本地仅 multiOTP仅本地强制双因素认证
2d仅本地multiOTP + 其他仅本地按需双因素认证
3全部禁用-完全禁用 multiOTP
3d全部禁用确保其他可用最安全的禁用方式

6、修改了注册表,需重启WS,进行验证。

这样的话,各种登录方式都有,符合现有方式。

### Windows Server NPS 配置与使用指南 Windows Server 中的网络策略服务器(Network Policy Server, NPS)是基于 RADIUS(Remote Authentication Dial-In User Service)协议的一种服务,能够实现对网络访问请求的集中管理和认证。NPS 常用于远程访问控制、802.1X 身份验证、网络访问保护(NAP)等场景。 #### 1. NPS 的基本功能 NPS 提供以下核心功能: - **RADIUS 服务器**:用于集中管理远程访问和无线接入的身份验证。 - **网络访问策略管理**:通过定义网络策略,控制用户和设备的访问权限。 - **审计和日志记录**:支持记录用户访问日志、身份验证尝试等信息,便于安全审计和故障排查。 #### 2. 配置 Windows Server NPS 的步骤 ##### 安装 NPS 角色 1. 打开 **服务器管理器**。 2. 点击 **添加角色和功能**。 3. 在向导中选择 **网络策略和访问服务**(Network Policy and Access Services)。 4. 选择 **网络策略服务器 (NPS)** 角色服务,完成安装。 ##### 配置 RADIUS 服务器 1. 打开 **NPS 管理控制台**(`Start > Administrative Tools > Network Policy Server`)。 2. 在左侧导航栏中,选择 **RADIUS 客户端和服务器**。 3. 右键点击 **RADIUS 客户端**,选择 **新建 RADIUS 客户端**。 4. 输入客户端的 IP 地址和共享密钥,并指定客户端名称。 5. 完成配置后,确保客户端设备使用相同的共享密钥进行通信。 ##### 创建网络策略 1. 在 **NPS 管理控制台** 中,导航到 **策略 > 网络策略**。 2. 右键点击 **网络策略**,选择 **新建**。 3. 设置策略名称,选择连接类型(如远程访问或无线连接)。 4. 在条件页面中,添加用户组、设备属性等条件。 5. 在约束页面中,设置身份验证方法(如 MS-CHAP v2)和网络访问限制。 6. 在设置页面中,配置属性(如 Vendor-Specific 属性)以满足特定供应商的需求,例如华为设备的权限级别分配(属性号 29,值 1-15)[^3]。 7. 最后,启用策略并测试其有效性。 ##### 日志和审计 1. 在 **NPS 管理控制台** 中,导航到 **日志**。 2. 启用详细的日志记录,选择日志文件的位置和格式。 3. 使用 **事件查看器**(Event Viewer)查看具体的认证请求和拒绝事件。 #### 3. NPS 的高级应用场景 - **802.1X 认证**:在有线或无线网络中,NPS 可作为 RADIUS 服务器,为 802.1X 提供身份验证支持。 - **网络访问保护 (NAP)**:结合 NAP,NPS 可以强制执行客户端健康策略,确保只有符合安全要求的设备才能接入网络。 - **多因素身份验证**:NPS 支持集成智能卡、一次性密码(OTP)等多因素认证机制,提升安全性。 #### 4. 常见问题排查 - **共享密钥不匹配**:确保客户端和服务器端的共享密钥完全一致。 - **网络策略未生效**:检查策略的条件和约束设置,确保其适用于当前用户或设备。 - **日志记录缺失**:确认日志路径和权限设置,确保 NPS 有权限写入日志文件。 ### 示例代码:NPS 配置文件(RADIUS 客户端) 以下是一个简单的 RADIUS 客户端配置示例,用于命令行工具(如 `netsh`)管理 RADIUS 服务器: ```bash # 添加 RADIUS 客户端 netsh ras add client <ClientIP> <ClientName> <SharedSecret> ``` 替换 `<ClientIP>`、`<ClientName>` 和 `<SharedSecret>` 为实际的客户端 IP 地址、名称和共享密钥。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值