這次發布的版本適合企業使用,兼容堡壘機、LDAP等,目前只支持linux,等哪天有時間在完善windows。適用于云服務器等場景,部署及使用簡單方便。同時可做為主機IDS的補充防護,主機IDS畢竟是事中事后防護,JXOTP可以做為事前防護提高服務器的整體安全性。
回顧本系列的第一篇文章:
開源SSH雙因素登陸認證系統JXOTP了解一下
部署
服務端部署:
# git clone https://github.com/jx-sec/jxotp.git
# cd jxotp
# pip install -r requirements.txt
# vim jxotp/settings.py
直接拉到最下面:
# 郵件設置 這里以阿里郵箱為例子
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = False
EMAIL_HOST = 'smtp.mxhichina.com' #非阿里郵箱需修改
EMAIL_PORT = 25
EMAIL_HOST_USER = 'security@jxwaf.com' # 用戶名
EMAIL_HOST_PASSWORD = '*' #密碼
DEFAULT_FROM_EMAIL = 'security@jxwaf.com' #同用戶名
# login setup
USERNAME = 'admin' # 服務端登陸用戶名
PASSWORD = '123456' # 服務端登陸密碼
OTP_SECRET_KEY = 'hellojxotp' # OTP客戶端與服務端對接的密鑰
接下來初使化數據庫,啟動服務端 PS:例子為非正式部署,需正式部署請使用uwsgi+nginx:
# python manage.py makemigrations
# python manage.py migrate
# python manage.py runserver 0.0.0.0:8000
服務端部署結束。
客戶端部署:
# vim jxotp_auth.py
只需修改兩個參數的配置:
SERVER_API_URL = “http://1.1.1.1:8000/otp_auth“
OTP_SECRET_KEY = “hellojxotp”
其中 SERVER_API_URL 為你部署服務器的地址,如你服務器地址為 52.163.121.204,則這塊應設置為http://52.163.121.204:8000/otp_auth
OTP_SECRET_KEY 為OTP客戶端與服務端對接的密鑰,需與服務端一致
# setenforce 0
# sh install_jxotp.sh
# vim /etc/pam.d/sshd
在最頂行添加:
auth optional pam_python.so jxotp_auth.py
到這里客戶端和服務端就全部部署完了。
架構及使用說明
架構說明

一旦網絡中斷或者服務器異常,服務器的OTP驗證將自動轉為bypass模式,回歸密碼驗證。默認服務端OTP驗證為偏移3次,也就是說當前時間兩分鐘內的OTP驗證碼都有效,提高易用性。
客戶端OTP驗證為獨立驗證,所以不與LDAP等驗證沖突,驗證失敗會將密碼重置為空,導致密碼驗證失敗(服務器密碼要是為空算你厲害)。
可通過配置服務器驗證將堡壘機IP加入白名單,即兼容堡壘機。
可開啟防暴力破解功能,例如OTP驗證錯誤超過10次,鎖定客戶端IP三十分鐘,并郵件報警,可針對特定用戶開啟,也可設置特定IP開啟,總之就是靈活,滿足大部分應用場景。
使用說明
1、用戶管理

新建用戶后點擊發送郵件:

2、全局設置

default_enable 是否開啟服務器自動注冊:
默認為true,當有客戶端訪問JXOTP SERVER時,自動注冊,無需管理員手動添加。
default_global_check 是否開啟所有用戶檢測:
默認為false,當值為true時,所有登錄的用戶都需要進行OTP檢驗,為false時,僅設置了default_check_user的用戶會開啟OTP檢驗。
default_check_user 默認值為root:
當default_global_check為true時生效(不要在意為啥false時不屏蔽該選項),設置需要開啟OTP檢驗的系統用戶名
default_white_ip 默認值為false:
當需要設置白名單IP或者已使用堡壘機時,可將相應IP添加進去,中間用逗號(,)隔開,如白名單IP為1.1.1.1,堡壘機IP為2.2.2.2,則值為 1.1.1.1,2.2.2.2。
black_check 默認值為false:
是否開啟防暴力破解功能,默認為false,關閉狀態。
black_check_time 默認值為5:
暴力破解功能檢測時間,單位為分鐘,5即檢測5分鐘內暴力破解的攻擊次數。
black_check_count 默認值為 10:
OTP失敗次數,10即失敗10次開啟防暴力破解功能。
black_deny_time 默認值為 720:
檢測到暴力破解攻擊后封禁IP的時間,單位為分鐘,720即封禁IP 12小時。
black_send_email 默認值為 ?:
檢測到暴力破解攻擊后告警郵箱。
3、服務器管理


自定義設置會覆蓋全局配置,其他同全局配置,可手動添加需要開啟OTP功能的服務器,也可在全局配置開啟default_enable選項,即自動注冊服務器。
4、查看日志

Server ip 服務器IP;
Client ip 客戶端IP;
Result OTP校驗結果;
Message 詳細信息;
Check user 登錄的系統用戶名;
time 登錄校驗的時間;
User email 登錄用戶(OTP用戶,非服務器系統用戶)。
總結
支線任務完結撒花,JXWAF恢復更新。
|