開源SSH雙因素登陸認證系統JXOTP瞭解一下續
前言
這次釋出的版本適合企業使用,相容堡壘機、LDAP/">LDAP等,目前只支援linux,等哪天有時間在完善windows。適用於雲伺服器等場景,部署及使用簡單方便。同時可做為主機IDS的補充防護,主機IDS畢竟是事中事後防護,JXOTP可以做為事前防護提高伺服器的整體安全性。
回顧本系列的第一篇文章:
ofollow" rel="nofollow,noindex">開源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 = '[email protected]' # 使用者名稱 EMAIL_HOST_PASSWORD = '*' #密碼 DEFAULT_FROM_EMAIL = '[email protected]' #同用戶名 # 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、檢視日誌