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

2023-10-13 14:52

本文主要是介绍【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. 根据自己的需求选择后面两页的选项。

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

最终效果

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

这篇关于【MultiOTP】Docker安裝MultiOTP, 让Windows登入更安全(MFA)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/203997

相关文章

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤

Python+Tkinter实现Windows Hosts文件编辑管理工具

《Python+Tkinter实现WindowsHosts文件编辑管理工具》在日常开发和网络调试或科学上网场景中,Hosts文件修改是每个开发者都绕不开的必修课,本文将完整解析一个基于Python... 目录一、前言:为什么我们需要专业的Hosts管理工具二、工具核心功能全景图2.1 基础功能模块2.2 进

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren