使用 privacyIDEA 实现 Windows RDP 多因素认证 (MFA)

news2025/1/21 7:13:13

前言

在等保 2.0 标准中有要求:

d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。

可以借助开源的 privacyIDEA 配合 AD 域环境实现 RDP + MFA 认证登录以满足上面的要求. 本文使用 3 台 VM 进行演示, 主要步骤:

  1. 部署 AD 环境 (Windows)
  2. 部署 privacyIDEA 服务器 (Ubuntu)
  3. 客户端加域
  4. 客户端安装 privacyIDEA Credential Provider 插件
  5. 测试验证

2024.06.29 更新视频演示教程: https://www.bilibili.com/video/BV1Rw4m1e7e3

部署 AD 环境 (172.31.43.98)

启动一台 Windows Server 2022 虚拟机, 执行下面 PowerShell 命令配置为 Domain Controller.

Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
Install-ADDSForest -DomainName ps.com -InstallDNS

部署 privacyIDEA 服务器 (172.31.41.28)

启动一台 Ubuntu 22.04 虚拟机, 执行下面命令安装和配置 privacyIDEA 服务端. 官方文档

sudo su
wget https://lancelot.netknights.it/NetKnights-Release.asc
mv NetKnights-Release.asc /etc/apt/trusted.gpg.d/
add-apt-repository http://lancelot.netknights.it/community/jammy/stable
apt install -y privacyidea-apache2

# 创建系统管理员账号
pi-manage admin add admin -e admin@localhost

继续修改系统 DNS 使用 DC 做解析, 目的是为了后面通过 LDAP 访问 AD 数据的时候能正常解析, 172.31.43.98 是上一步准备好的 DC 地址.

echo "DNS=172.31.43.98" >> /etc/systemd/resolved.conf
resolvectl dns ens5 172.31.43.98
systemctl restart systemd-resolved
ping ps.com
# 能解析出来内网地址就行

启动客户端

再启动一台 Windows Server 2022 作为客户端, 执行下面 PowerShell 命令:

# 改 DNS
Set-DnsClientServerAddress -InterfaceAlias (Get-NetAdapter | select -Property Name).Name -ServerAddresses 172.31.43.98
# 加域
Add-Computer -DomainName ps.com -Credential (Get-Credential "ps.com\administrator") -Restart

重启后使用域账号登录 administrator@ps.com, 下载 privacyIDEA Credential Provider 插件安装:
https://github.com/privacyidea/privacyidea-credential-provider/releases/
CSDN 备用下载地址 privacyIDEACredentialProviderSetup-v3.5.3.msi

Hostname 填写上面准备好的 Ubuntu 地址, 测试期间先忽略 SSL. 生产环境务必得用有效的证书, 篇幅原因本文不展开了.
在这里插入图片描述
其余步骤全部默认(留空)下一步就行. 安装完成后 Windows 开始菜单中并不会出现什么快捷方式, 也不会有 TrayIcon 什么的.

配置 privacyIDEA

在客户端系统里面访问 privacyIDEA 地址, 使用之前创建的管理员账号进行登录.
首次使用提示 Create default realm, 选择 No, 因为我们要继续配置从 AD 里面获取用户信息.
在这里插入图片描述

创建 Resolver

依次 Config > Users > New Ldapresolver
在这里插入图片描述

Resolver name: ps.com-ldap [自己起] 
Server URI: ldap://[DCHOSTNAME].ps.com
STARTTLS: [不选]
Base DN: dc=ps,dc=com [没有OU, 就直接写成根一级了]
Bind Type: Simple
Bind DN: cn=administrator,cn=users,dc=ps,dc=com [管理员的完整 DN]
Bind Password: [管理员的密码]
[其余选项保持默认就行]

点击 Preset Active Directory 按钮直接使用预制的过滤模板, 点击 Test LDAP Resolver 测试通过后 Save.
在这里插入图片描述

这一步很容易出现失败的情况, 需要根据报错提示来判断错误的原因, 整理主要可能涉及到的有:

  • privacyIDEA 所在的 Ubuntu 系统 DNS 没有配置使用 DC 做解析, 导致通信失败
  • Base DN 填写不对, 演示用的是一个空的自建 AD 环境, 实际环境中通常会包含 OU 信息, 注意检查路径格式和有效性
  • Bind DN 填写不对, 同上面的 Base DN, 务必需要确保使用的域账号 DN 格式正确和有效

创建 Realm

Config > Realms, 起个名字, 勾选上 resolver, Create
在这里插入图片描述

分配 Token

切到 Users 界面可以看到从 AD 同步过来的用户信息, 找到 Administrator 点进去
在这里插入图片描述
Enroll New Token
在这里插入图片描述
选择 TOTP, 直接 Enroll Token
在这里插入图片描述
使用手机扫描二维码进行绑定, 支持 Google/Microsoft Authenticator, Authy, 宁盾等 App. 注意这里绑定的时候就扫一下就行了, App 上会直接添加成功.
在这里插入图片描述

客户端 RDP + MFA 测试

重新使用 RDP 连接客户端, 正常输入域账号和密码后, 会显示:
在这里插入图片描述
在 One-Time Password 中输入 App 中显示的动态码, 匹配一致即登录成功. 若动态码输入错误, 则会显示:
在这里插入图片描述

后话

除了配置 MFA 之外, 等保 2.0 中还有许多其他的安全要求, 分享一个 Github 上大佬写的 PowerShell 脚本可以用于批量修改本地安全/组策略加固系统:
https://github.com/WeiyiGeek/SecOpsDev/tree/master/OperatingSystem/Security/Windows

需要注意, 不建议直接运行这个脚本, 里面会改 WSUS 配置, 作为参考自己挑着跑一下还好.

另外, Web 管理界面过一会儿不操作就会自动锁
在这里插入图片描述
解锁后就会再提示一遍 Welcome, 挺讨厌的
在这里插入图片描述
参考文档 https://privacyidea.readthedocs.io/en/latest/policies/webui.html#logout-time

You can define a policy in PrivacyIdea with scope “WebUI”, Condition: select the realm your admins are in and define: {“logout_time”: “3600” }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1880538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker安装rocketMq5x以上的版本

1.背景 安装RocketMQ 5.x以上的版本主要是因为新版本引入了许多性能优化、新功能以及对已有特性的增强,这些改进可以帮助提升消息队列系统的稳定性和效率。 1.性能提升:RocketMQ 5.x版本通常包括了对消息处理速度、吞吐量和延迟的优化,使得系…

大模型压缩-LoRAP

这里写目录标题 1.多头注意力和FFN的权重分布2 多头矩阵的低秩分解FFN无梯度通道剪枝 这篇文章 1期望找到一个“剪枝+低秩分解”的路子,使结构化剪枝达到非结构化剪枝的性能。 1.多头注意力和FFN的权重分布 Fig. 1.1 多头注意力权重矩阵 从Fig.1.1可以看…

万字浅析视频搜索系统中的多模态能力建设

万字浅析视频搜索系统中的多模态能力建设 FesianXu 20240331 at Tencent WeChat search team 前言 视频搜索是天然的富媒体检索场景,视觉信息占据了视频的一大部分信息量,在视频搜索系统中引入多模态能力,对于提高整个系统的能力天花板至关重…

学习感悟丨在誉天学习数通HCIP怎么样

大家好,我是誉天学员的徐同学,学习的数通HCIP课程。 在学校的时候,听说下半年就要出去实习了,心中坎坷不安,现在我学到的知识远远不够的。然后就想着学点东西充实一下自己的知识面和专业能力,有一次和同学谈…

【STM32嵌入式系统设计与开发---传感器拓展】——1_4_标准库FreeRTOS移植实验

目录 雅俗理解源码下载链接知识拓展步骤1:stm32f103vet6移植freeRTOS步骤:(1)准备开发环境(2)添加FreeRTOS移植 致谢 雅俗理解 雅:FreeRTOS是一个开源的实时操作系统(RTOS)&#xf…

数字图像处理之【高斯金字塔】与【拉普拉斯金字塔】

数字图像处理之【高斯金字塔】与【拉普拉斯金字塔】 1.1 什么是高斯金字塔? 高斯金字塔(Gaussian Pyramid)是一种多分辨率图像表示方法,用于图像处理和计算机视觉领域。它通过对原始图像进行一系列的高斯平滑和下采样操作&#x…

【例子】webpack 开发一个可以加载 markdown 文件的加载器 loader 案例

Loader 作为 Webpack 的核心机制,内部的工作原理却非常简单。接下来我们一起来开发一个自己的 Loader,通过这个开发过程再来深入了解 Loader 的工作原理。 这里我的需求是开发一个可以加载 markdown 文件的加载器,以便可以在代码中直接导入 m…

Pikachu靶场--Sql Inject

参考借鉴 pikachu靶场练习(详细,完整,适合新手阅读)-CSDN博客 数字型注入(post) 这种类型的SQL注入利用在用户输入处插入数值,而不是字符串。攻击者试图通过输入数字来修改SQL查询的逻辑,以执行恶意操作。…

前端笔记-day11

文章目录 01-空间-平移02-视距03-空间旋转Z轴04-空间旋转X轴05-空间旋转Y轴06-立体呈现07-案例-3D导航08-空间缩放10-动画实现步骤11-animation复合属性12-animation拆分写法13-案例-走马灯14-案例-精灵动画15-多组动画16-全民出游全民出游.htmlindex.css 01-空间-平移 <!D…

普元EOS学习笔记-创建精简应用

前言 本文依旧基于EOS8.3进行描述。 在上一篇文章《EOS8.3精简版安装》中&#xff0c;我们了解到普元预编译好的EOS的精简版压缩包&#xff0c;安装后&#xff0c;只能进行低开&#xff0c;而无法高开。 EOS精简版的高开方式是使用EOS开发工具提供的IDE&#xff0c;创建一个…

nginx架构学习

前言 这篇文章主要记录下对nginx架构的学习记录。 架构设计 优秀的模块化设计 高度模块化的设计是Nginx的架构基础。在Nginx中&#xff0c;除了少量的核心代码&#xff0c;其他一切皆 为模块。 在这5种模块中&#xff0c;配置模块与核心模块都是与Nginx框架密切相关的&…

【ESP32】打造全网最强esp-idf基础教程——14.VFS与SPIFFS文件系统

VFS与SPIFFS文件系统 这几天忙着搬砖&#xff0c;差点没时间更新博客了&#xff0c;所谓一日未脱贫&#xff0c;打工不能停&#xff0c;搬砖不狠&#xff0c;明天地位不稳呀。 不多说了&#xff0c;且看以下内容吧~ 一、VFS虚拟文件系统 先来看下文件系统的定义&#x…

zabbix监控进阶:如何分时段设置不同告警阈值(多阈值告警)

作者 乐维社区&#xff08;forum.lwops.cn&#xff09;乐乐 在生产环境中&#xff0c;企业的业务系统状态并不是一成不变的。在业务高峰时段&#xff0c;如节假日、促销活动或特定时间段&#xff0c;系统负载和用户访问量会大幅增加&#xff0c;此时可能需要设置更高的告警阈值…

网络基础:静态路由

静态路由是一种由网络管理员手动配置的路由方式&#xff0c;用于在网络设备&#xff08;如路由器或交换机&#xff09;之间传递数据包。与动态路由不同&#xff0c;静态路由不会根据网络状态的变化自动调整。 不同厂商的网络设备在静态路由的配置上有些许差异&#xff1b;下面…

qt文件如何打包成一个独立的exe文件

QT官方给我们安装好了打包软件&#xff0c;就在你QT安装的位置 把这个在cmd打开C:\Qt\6.7.1\mingw_64\bin\windeployqt6.exe&#xff08;或复制地址&#xff09; 然后把要打包项目的exe复制到新的空文件夹&#xff0c;再复制他的地址 按回车后生成新文件 再下载打包软件&#…

Arduino IDE 的安装与esp32项目的创建

1打开官网下载 官网 1-1下载完成后安装即可&#xff0c;会弹出一些按安装提示点击安装 2切换为中文模式 2-1点击Flie&#xff0c;在点击图中高亮的位置&#xff0c;进入 2-2选择语言 3创建esp32项目 3-1在线安装&#xff08;不一定成功&#xff0c;可以一直试&#xff09; …

树莓派3B读写EEPROM芯片AT24C256

AT24C256是一个Atmel公司的EEPROM存储芯片&#xff0c;容量是256K个bit&#xff08;也就是32K字节&#xff09;&#xff0c;I2C接口&#xff0c;而树莓派正好有I2C接口&#xff0c;如下图蓝框中的4个IO口&#xff0c; 把AT24C256和这4个口接在一起&#xff0c;这样硬件就准备好…

观察者模式在金融业务中的应用及其框架实现

引言 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得多个观察者对象同时监听某一个主题对象。当这个主题对象发生变化时&#xff0c;会通知所有观察者对象&#xff0c;使它们能够自动更新。…

【NodeJs】入门

目录 一、前导 二、 url模块 三、path模块 四、buffer模块 五、fs模块 六、stream流模块 七、os模块 八、crypto模块 九、util模块 十、http模块 nodejs官网 Node.js — 在任何地方运行 JavaScript nmp是Node.js包管理器&#xff0c;用来安装各种库、框架和工具&…

js自定义内容生成二维码,qrcodejs的使用

qrcodejs qrcodejs是基于原生js的文本转换成二维码的库&#xff0c;轻量且使用方法简单&#xff0c;它的实现原理是通过canvas将重新编码的内容绘制在页面元素上&#xff0c; 使用qrcodejs时可以选择引入它的cdn或者使用npm下载 <script type"text/javascript" …