【MultiOTP】Docker安裝MultiOTP, 让Windows登入更安全(MFA)

在当前数字时代,网络安全成为了一个非常重要的话题。随着越来越多的人和组织依赖于计算机系统来进行工作和存储敏感信息,确保身份验证安全变得至关重要。双因素身份验证(2FA)是一种强大的安全措施,可在传统的用户名和密码之外添加另一层保护。

工具介绍

MultiOTP是一个开源项目,它提供了一套PHP类和工具用于实现双因素身份验证(2FA)。MultiOTP支持基于时间的一次性密码(TOTP)和基于计数的一次性密码(HOTP)。

该项目允许您构建本地的强认证服务器来验证用户身份,并可与移动设备上的OTP生成器(如Microsoft Authenticator或Google Authenticator)配合使用。通过生成一次性密码,MultiOTP增加了登录过程的安全性。

与商业化的双因素身份验证工具不同,MultiOTP是免费且可以在没有互联网访问的情况下离线运行。这使得您能够在无网络连接的环境中配置和使用MultiOTP,为系统提供更高的安全性。

MultiOTP可以应用于多种场景,包括Windows登录和远程桌面访问,通过为这些场景启用双因素身份验证,确保只有通过认证的用户能够访问系统。MultiOTP具有灵活的配置选项和易于使用的界面,使您能够轻松集成和管理双因素身份验证。

GITHUB地址:https://github.com/multiOTP/multiotp

实施

服务器端

前提条件

  1. 已有Docker运行环境,如没有自行搭建。
  2. Windows域环境

1. 启动MultiOTP

docker run --name multiotp \--restart always \-v /multiotp/multiotp/data:/etc/multiotp \-v /multiotp/freeradius/config:/etc/freeradius \-v /multiotp/log/multiotp:/var/log/multiotp \-v /multiotp/log/freeradius:/var/log/freeradius \-p 8080:80 \-p 8443:443 \-p 1812:1812/udp \-p 1813:1813/udp \-d multiotp/multiotp-open-source

当运行上述Docker命令时,各个参数的含义如下:

  1. --name multiotp:为容器指定一个名称为multiotp

  2. --restart always:设置容器在出现故障或重新启动Docker宿主机时始终自动重新启动。

  3. -v /multiotp/multiotp/data:/etc/multiotp:将主机上的/multiotp/multiotp/data目录挂载到容器内的/etc/multiotp目录,用于持久化存储MultiOTP配置数据。

  4. -v /multiotp/freeradius/config:/etc/freeradius:将主机上的/multiotp/freeradius/config目录挂载到容器内的/etc/freeradius目录,用于持久化存储FreeRADIUS配置数据。

  5. -v /multiotp/log/multiotp:/var/log/multiotp:将主机上的/multiotp/log/multiotp目录挂载到容器内的/var/log/multiotp目录,用于持久化存储MultiOTP日志。

  6. -v /multiotp/log/freeradius:/var/log/freeradius:将主机上的/multiotp/log/freeradius目录挂载到容器内的/var/log/freeradius目录,用于持久化存储FreeRADIUS日志。

  7. -p 8080:80:将主机上的8080端口映射到容器内的80端口,用于访问MultiOTP的Web界面。

  8. -p 8443:443:将主机上的8443端口映射到容器内的443端口,用于访问MultiOTP的安全Web界面(HTTPS)。

  9. -p 1812:1812/udp:将主机上的1812 UDP端口映射到容器内的1812 UDP端口,用于FreeRADIUS接收认证请求。

  10. -p 1813:1813/udp:将主机上的1813 UDP端口映射到容器内的1813 UDP端口,用于FreeRADIUS接收账务请求。

  11. -d:以分离模式(即后台模式)运行容器。

  12. multiotp/multiotp-open-source:指定要运行的Docker镜像名称和标签,这里是MultiOTP的官方Docker镜像。

通过以上参数设置,您可以成功运行MultiOTP容器,并实现容器的自动重启和持久化配置、日志的存储。

2. 以交互模式进入multiotp容器中

docker exec -it multiotp bash

3. 使用以下命令来配置MultiOTP LDAP设置,以从Active Directory中获取指定用户。

multiotp -config default-request-prefix-pin=0
multiotp -config default-request-ldap-pwd=0
multiotp -config ldap-server-type=1
multiotp -config ldap-cn-identifier="sAMAccountName"
multiotp -config ldap-group-cn-identifier="sAMAccountName"
multiotp -config ldap-group-attribute="memberOf"
multiotp -config ldap-ssl=0
multiotp -config ldap-port=389
# Domain controller IP address:
multiotp -config ldap-domain-controllers=SH-DC-03.test.com,ldap://192.168.1.4:389
multiotp -config ldap-base-dn="DC=test,DC=com"
# Account for multiOTP authentication in AD:
multiotp -config ldap-bind-dn="CN=Multiotp,OU=Administrators,DC=test,DC=com"
multiotp -config ldap-server-password="Test@1013"
# Group of users you want to enable OTP for:
multiotp -config ldap-in-group="MultiOTPGroup"
multiotp -config ldap-network-timeout=10
multiotp -config ldap-time-limit=30
multiotp -config ldap-activated=1
# Key to access a MultiOTP server:
multiotp -config server_secret=dGx9cn5qeFV7fFJ5RGRcGd4^C

4. 同步用户到MultiOTP

之前已经创建了MultiOTPGroup组,并将1个用户添加到了该组中。现在我们需要将AD(Active Directory)用户与multiOTP同步。

multiotp -debug -display-log -ldap-users-sync

在这里插入图片描述

为域用户配置MultiOTP双因素身份验证

1. 使用默认凭据(用户名:admin,密码:1234)登录MultiOTP web界面(http://IP:8080/)

建议您更改默认凭据
在这里插入图片描述

2. 在“List of users”部分可以看到之前同步的域用户列表([AD/LDAP]源),选择点击用户前得“Print”按钮,将看到一个用于添加到身份验证应用的用户QR码。

在这里插入图片描述
在这里插入图片描述

3. 在手机上安装Microsoft Authenticator(或Google Authenticator)。打开应用并扫描用户的QR码。

在这里插入图片描述

客户端

接下来就是要在要使用multiOTP实施双因素身份验证的Windows计算机上安装multiOTP-CredentialProvider。multiOTP-CredentialProvider可以在任何Windows 7/8/8.1/10/11或Windows Server 2012(R2)/2016/2019/2022版本上安装。

1. 从GitHub上下载 multiOTP CredentialProvider,可能需要点魔法

https://github.com/multiOTP/multiOTPCredentialProvider/releases
目前最新版本 5.9.6.1

2. 安装过程中,输入服务器地址和之前配置的server_secret

在这里插入图片描述

3. 根据自己的需求选择后面两页的选项。

在这里插入图片描述
在这里插入图片描述

最终效果

安装完毕后重启电脑就可以了啊,下面是效果图:
在这里插入图片描述
在这里插入图片描述
虽然已经测试成功了,但目前还是存在一些问题需要解决的,其他的功能有待配置完善。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化

作为一款在 Java 开发社区中广受欢迎的技术框架,SpringBoot 在开发者和企业的具体实践中应用广泛。具体来说,它是一个用于构建基于 Java 的 Web 应用程序和微服务的框架,通过简化开发流程、提供约定大于配置的原则以及集成大量常用库和组件&a…

【OpenVINO】OpenVINO C# API 常用 API 详解与演示

OpenVINO C# API 常用 API 详解与演示 1 安装OpenVINO C# API2 导入程序集 3 初始化OpenVINO 运行时内核4 加载并获取模型信息4.1 加载模型4.2 获取模型信息 5 编译模型并创建推理请求6 张量Tensor6.1 张量的获取与设置6.2 张量的信息获取与设置 7 加载推理数据7.1 获取输入张量…

ChatGPT在测试计划中的应用策略

简介 测试计划是指描述了要进行的测试活动的范围、方法、资源和进度的文档。它主要包括测试项、被测特性、测试任务和风险控制等。 所以在使用ChatGPT输出结果之前,我们需要先将文档的内容框架梳理好,以及将内容范围划定好,必要的时候&#x…

【Hello Algorithm】暴力递归到动态规划(三)

暴力递归到动态规划(三) 最长公共子序列递归版本动态规划 最长回文串子序列方法一方法二递归版本动态规划 象棋问题递归版本动态规划 咖啡机问题递归版本动态规划 最长公共子序列 这是leetcode上的一道原题 题目连接如下 最长公共子序列 题目描述如下…

【Golang】grpc环境踩的坑

关于’protoc-gen-go’ 不是内部或外部命令 这个问题的出现是因为没有这个文件导致的 这个文件要通过我们下载的google.golang.org这个文件编译生成的 这里建议下载google提供的grpc包 protobuf的源码: git clone https://github.com/golang/protobuf 下载好之后进…

MATLAB——RBF、GRNN和PNN神经网络案例参考程序

欢迎关注“电击小子程高兴的MATLAB小屋” GRNN_PNN程序 %% I. 清空环境变量 clear all clc %% II. 训练集/测试集产生 %% % 1. 导入数据 load iris_data.mat %% % 2 随机产生训练集和测试集 P_train []; T_train []; P_test []; T_test []; for i 1:3 temp_input …

Spring框架

文章目录 Spring 框架1 概述2 IOC3 Bean管理3.1 XML配置方式3.2 Java注解方式3.3 Java代码方式3.4 对象之间调用示例3.5 自动装配 4 单例和多例4.1 单例(Singleton)4.2 多例(Prototype) 5 生命周期6 注解管理Bean6.1 Component、S…

【数据可视化】—大屏数据可视化展示

【数据可视化】—大屏数据可视化展示 一、数据可视化 数据可视化的目的:借助于图形化工具,清晰有效的传达与沟通信息。 数据可视化可以把数据从冰冷的数字转换成图形,揭示蕴含在数据中的规律和道理。 二、 免费数据可视化库 Echarts 百度…

stable-diffusion-webui sdxl模型代码分析

采样器这块基本都是用的k-diffusion,模型用的是stability的原生项目generative-models中的sgm,这点和fooocus不同,fooocus底层依赖comfyui中的models,comfy是用load_state_dict的方式解析的,用的load_checkpoint_guess…

【从零开始学习Redis | 第三篇】在Java中操作Redis

前言: 本文算是一期番外,介绍一下如何在Java中使用Reids ,而其实基于Java我们有很多的开源框架可以用来操作redis,而我们今天选择介绍的是其中比较常用的一款:Spring Data Redis 目录 前言: Spring Data…

萝卜刀真的太危险了,于是我用Cocos做了一个

点击上方亿元程序员关注和★星标 引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 昨天,我女儿和我说想买一把萝卜刀,众所周知,萝卜刀在潜意识当中是存在一定的危险的,所以我果断拒绝了&…

安防视频监控EasyCVR视频汇聚平台与萤石云平台的适配方案分析

随着科技的不断发展,互联网技术逐渐深入到我们生活的各个领域。其中,安防监控领域受益于互联网技术的发展,逐渐呈现出智能化、高清化、远程化的趋势。本文将介绍一种基于萤石云与EasyCVR平台的安防视频监控解决方案,以满足用户对安…