我們不屎用微軟的MFA(Multi Factor Authentication), 原因如下:
Azure AD MFA 免費使用, 但是很貴, 哈哈, 於是就pass
multiOTP(https://github.com/multiOTP/multiotp/wiki) 是個開源免費的 MFA server & client 專案,
其實我們也只是要讓登入更安全, 目標就是手上多個驗證器, 可以輸入動態密碼, 多個保障.
不囉嗦, 直接寫下我的安裝方法
安裝開源的 MFA Server
- 準備docker環境
- 下載最新檔案
https://download.multiotp.net/multiotp_5.8.1.0.zip
解開檔案 - 修改Dockerfile
加上 RUN echo “deb http://ftp.de.debian.org/debian buster-backports main” | tee /etc/apt/sources.list.d/docker.list
**這是5.8.1.0的bug
修改Dockerfile這步驟以後不需要做, 下個版本會解決
4. 編譯images
docker build . -t mymultiotp:latest
5. 啟動server
docker run --mount source=multiotp-data,target=/etc/multiotp -p 8080:80 -p 8443:443 -p 1812:1812/udp -p 1813:1813/udp -d mymultiotp:latest
8080 與 8443 請依實際情況修改
6. 網頁輸入 http://<docker serverr ip>:8080
登入後, 新增測試帳號 administrator (請注意, 這個帳號是windows 10本機可登入帳號 , 不限定administrator)
手機安裝google authenticator
安裝google驗證器, 刷入帳號的QR code , 請選擇帳號後點選 Print
在windows安裝Credential Provider
https://download.multiotp.net/credential-provider/
https://download.multiotp.net/credential-provider/multiOTPCredentialProvider-5.8.1.0.exe
輸入windows的帳號與密碼, 還有google驗證器的密碼
遠端登入
此時遠端登入第一次登入不用otp密碼, 但是會出現第二是要求輸入otp密碼,
這是原本遠端桌面連線並無法一開始就支援otp的緣故,目前無法解結
MFA server 與 網域主控連線
docker 登入已安裝好的 mfa server 然後輸入以下指令
multiotp -config default-request-prefix-pin=0 multiotp -config default-request-ldap-pwd=1 multiotp -config ldap-server-type=1 multiotp -config ldap-cn-identifier="sAMAccountName" multiotp -config ldap-cn-identifier="sAMAccountName" multiotp -config ldap-group-attribute="memberOf" multiotp -config ldap-ssl=1 multiotp -config ldap-port=636 multiotp -config ldap-domain-controllers=ldaps://網域主控伺服器:636 multiotp -config ldap-base-dn="OU=xxxx,DC=test,DC=com" multiotp -config ldap-bind-dn="cn=ldap,cn=Users,dc=test,dc=com" multiotp -config ldap-server-password="password" multiotp -config ldap-network-timeout=10 multiotp -config ldap-time-limit=30 multiotp -config ldap-activated=1 multiotp -config ldap_default_algorithm=totp multiotp -debug -display-log -ldap-users-sync
- 若成功, 網頁登入MFA server就能看到網域使用者, 也可以派送QR code給該使用者使用
- 定期執行同步指令
multiotp -debug -display-log -ldap-users-sync