【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.rhkb.cn/news/161163.html

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

相关文章

设计模式截图记录

设计模式截图记录

机器人制作开源方案 | 双轮提升搬运小车

1. 功能描述 双轮提升搬运小车是一种用于搬运和移动物体的机械设备,它通常采用双轮驱动和提升装置。一般具备以下特点: ① 双轮驱动:该小车配备两个驱动轮,通过电动机或其它动力源驱动,提供足够的动力和扭矩&#xff0…

Stable Diffusion绘图,lora选择

best quality, ultra high res, (photorealistic:1.4), 1girl, off-shoulder white shirt, black tight skirt, black choker, (faded ash gray hair:1), looking at viewer, closeup <lora:koreandolllikeness_v20:0.66> 最佳品质&#xff0c;超高分辨率&#xff0c;&am…

【Java 进阶篇】JavaScript DOM Document对象详解

在前端开发中&#xff0c;DOM&#xff08;文档对象模型&#xff09;扮演着重要的角色。它允许我们使用JavaScript来与网页文档进行交互&#xff0c;实现动态的网页效果。DOM的核心部分之一就是Document对象&#xff0c;它代表了整个HTML文档。在本篇博客中&#xff0c;我们将深…

QT_day1

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口相关设置this->setWindowTitle("登录窗口");this->setWindowIcon(QIcon("C:\\Users\\EDY\\Desktop\\pictrue\\qq.png"));this->setWindowFlag(Qt::…

Linux性能优化--性能工具:网络

7.0 概述 本章介绍一些在Linux上可用的网络性能工具。我们主要关注分析单个设备/系统网络流量的工具&#xff0c;而非全网管理工具。虽然在完全隔离的情况下评估网络性能通常是无意义的(节点不会与自己通信),但是&#xff0c;调查单个系统在网络上的行为对确定本地配置和应用程…

day06-前后端项目上传到gitee、后端多方式登录接口、发送短信功能、发送短信封装、短信验证码接口、短信登录接口

1 前后端项目上传到gitee 2 后端多方式登录接口 2.1 序列化类 2.2 视图类 2.3 路由 3 发送短信功能 4 发送短信封装 4.0 目录结构 4.1 settings.py 4.2 sms.py 5 短信验证码接口 6 短信登录接口 6.1 视图类 6.2 序列化类 1 前后端项目上传到gitee # 我们看到好多开源项目…

解决方案-LBS用户位置GEO附近人/店铺

附近人 附近人列表功能mysqlredis GEOthinkphp 附近人列表功能 方案优势缺点Mysql外接正方形逻辑清晰&#xff0c;实现简单&#xff0c;支持多条件筛选效率较低&#xff0c;不适合大数据量&#xff0c;不支持按距离排序MysqlGeohash借助索引有效提高效率&#xff0c;支持多条件…

实践笔记-docker安装及配置镜像源

docker安装及配置镜像源 1.卸载旧版本docker2. 安装yum工具3. 设置镜像仓库4.安装docker5. 启动docker服务6.docker镜像源配置 当前环境linux为centos7 1.卸载旧版本docker 如果以前安装过旧版本可以先执行卸载&#xff0c;下面的截图是没有安装过。 yum remove docker \ do…

SLM6500 适用于单节锂电池充电芯片 2A同步降压型鲤电池充电电路

SLM6500 是一款面向5V交流适配器的2A离子电池充电器。它是采用1.5MH2固定频率的同步降压型转换器&#xff0c;因此具有高达90%以上的充电效率&#xff0c;自身发热量极小。 SLM6500包括完整的充电终止电路、自动再充电和一个精确度达土1%的4.2V预设充电电压&#xff0c…

请求分页管理方式(页表机制,缺页中断,地址变换)

请求分页存储管理与基本分页存储管理的主要区别: 在程序执行过程中&#xff0c;当所访问的信息不在内存时&#xff0c;由操作系统负责将所需信息从外存调入内存&#xff0c;然后继续执行程序。&#xff08;操作系统要提供请求调页功能&#xff0c;将缺失页面从外存调入内存)若…

解决vue3 + vite + ts 中require失效的问题(require is not defind)

require is not defind因为require是属于webpack的方法&#xff0c;vite中找不到这个方法肯定报错 解决办法 通过vite官网了解到新的引入方式&#xff0c;我使用了其中一种 imgList: [{name: "lj",src: new URL(../../assets/img/applyList.png, import.meta.url).…

WebAPI+EF连接SQL Server数据库

右击解决方案-添加-新建项目-选择“类库&#xff08;.NET Framework&#xff09;”,新建的项目取名叫WebApi1.EF 添加EF&#xff1a; 新建一个ADO实体数据模型 选择DBFirst 数据源选择MySql 填写数据库地址及账号密码 选择实体框架版本 选择在数据库中的表User 到此配置完成&am…

非母语玩家如何撰写英文研究性论文:1 Introduction

参考书——《Science research writing for non-native speakers of English》 文章目录 1 结构问题2 语法与撰写技巧2.1 Tense pairs&#xff1a;时态对2.2 Signaling Language2.3 Passive/Active 主动与被动语态2.4 Paragraphing 分段 3 Writing Task: Building a Model——构…

C/C++笔试易错与高频题型图解知识点(二)—— C++部分(持续更新中)

目录 1.构造函数初始化列表 1.1 构造函数初始化列表与函数体内初始化区别 1.2 必须在初始化列表初始化的成员 2 引用&引用与指针的区别 2.1 引用初始化以后不能被改变&#xff0c;指针可以改变所指的对象 2.2 引用和指针的区别 3 构造函数与析构函数系列题 3.1构造函数与析…

VScode platformio的使用

一、platformio 工程创建 打开vscode界面你会发现左下多了个家的小图标&#xff0c;点击这里就可以进入platformio。 在右侧Quick Access栏中&#xff0c;有4个选项。可以看得出来&#xff0c;我们这里直接点击创建一个新的工程。 点击New Project打开project配置界面&#x…

图详解第四篇:单源最短路径--Dijkstra算法

文章目录 1. 最短路径问题2. 单源最短路径--Dijkstra算法算法思想图解如何存储路径及其权值代码实现调式观察打印最短路径Dijkstra算法的缺陷 3. 源码 1. 最短路径问题 最短路径问题&#xff1a; 从带权有向图&#xff08;求最短路径通常是有向图&#xff09;G中的某一顶点出发…

Unity——数据存储的几种方式

一、PlayerPrefs PlayerPrefs适合用于存储简单的键值对数据 存储的数据会在游戏关闭后依然保持&#xff0c;并且可以在不同场景之间共享&#xff0c;适合用于需要在游戏不同场景之间传递和保持的数据。 它利用key-value的方式将数据保存到本地&#xff0c;跟字典类似。然后通…

【排序算法】详解直接插入排序和希尔排序原理及其性能分析

文章目录 插入排序算法原理细节分析代码实现复杂度分析:稳定性分析:与冒泡排序的对比 希尔排序算法原理细节分析代码实现复杂度分析稳定性分析 总结对比 插入排序 算法原理 插入排序又或者说直接插入排序,是一种和冒泡排序类似的并且比较简单的排序方法&#xff0c; 基本思想…

android aidl Can‘t resolve Salary问题

** 解决方法 ** 在数据aidl中写上包名&#xff0c;并且保证他的实体类也应当在与数据aidl文件相同的java类的包下 如果实例类放在aidl文件中会报一些稀奇古怪的错误&#xff0c;可以生成.java文件但是里面的实体类是不能识别的