OpenVPN 秘鑰+用戶名密碼雙重驗證登錄
OpenVPN 秘鑰+用戶名密碼雙重驗證登錄
為什麽需要用戶名密碼驗證登錄
我們已經使用了CA證書、迪菲赫爾曼交換密鑰、TLS-auth密鑰這幾種方式進行加密了,
可以說已經很安全了,為什麽還要需要用戶名秘密呢,一個VPN而已,搞得這麽安全有什麽用呢。
首先安全還是很重要的,其次就是管理這些秘鑰和證書還是比較麻煩的,因為用戶量比較多。
我不可能為每個用戶都創建一套加密吧,每個用戶創建一個秘鑰比較麻煩,
多人使用一個秘鑰又不具有唯一性,比如說有用戶不在需要VPN的時候,我們就只能吊銷證書。
但是如果多人使用一個秘鑰的情況下,吊銷證書了,其他的用戶也登錄不了。
所以我們就需要秘鑰加用戶名密碼,這樣就可以多個用戶使用同一個證書,使用不同的用戶名和密碼。
新用戶加入的時候,只需要創建一個用戶名和密碼,如果有人不需要VPN的時候,直接刪除用戶名和密碼就可以。
1.搭建OPenVPN
http://xmomo.blog.51cto.com/5994484/1953077
2. 配置openvpn使用 秘鑰+用戶名密碼 驗證登錄
1).修改Server端配置文件,添加以下三行代碼。
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
username-as-common-name
script-security 3
註:如果加上client-cert-not-required則代表只使用用戶名密碼方式驗證登錄,
如果不加,則代表需要證書和用戶名密碼雙重驗證登錄!
2).checkpsw.sh下載地址:http://openvpn.se/files/other/checkpsw.sh
wget http://openvpn.se/files/other/checkpsw.sh -P /etc/openvpn/
或者創建checkpsw.sh文件,直接復制粘貼以下代碼也可以。
PASSFILE和LOG_FILE是密碼文件和日誌文件的路徑,這裏我們默認就好,不用修改。
#!/bin/sh ########################################################### # checkpsw.sh (C) 2004 Mathias Sundman <[email protected]> # # This script will authenticate OpenVPN users against # a plain text file. The passfile should simply contain # one row per user with the username first followed by # one or more space(s) or tab(s) and then the password. PASSFILE="/etc/openvpn/psw-file" LOG_FILE="/var/log/openvpn-password.log" TIME_STAMP=`date "+%Y-%m-%d %T"` ########################################################### if [ ! -r "${PASSFILE}" ]; then echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE} exit 1 fi CORRECT_PASSWORD=`awk ‘!/^;/&&!/^#/&&$1=="‘${username}‘"{print $2;exit}‘ ${PASSFILE}` if [ "${CORRECT_PASSWORD}" = "" ]; then echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE} exit 1 fi if [ "${password}" = "${CORRECT_PASSWORD}" ]; then echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE} exit 0 fi echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE} exit 1
添加執行權限
chmod +x /etc/openvpn/checkpsw.sh
3). 創建用戶和密碼認證文件
vim /etc/openvpn/psw-file
admin 123456 (前面是用戶 後面是密碼)
註:這裏 psw-file的權限
chmod 400 /etc/openvpn/psw-file
chown nobody.nobody /etc/openvpn/psw-file
4). 修改客戶端配置文件:client.ovpn
再添加這一行,就會提示輸入用戶名和密碼
auth-user-pass
5).重啟OpenVPN服務,測試客戶端登錄。
輸入用戶名密碼就可以登錄啦
本文出自 “Linux運維-小墨” 博客,請務必保留此出處http://xmomo.blog.51cto.com/5994484/1959412
OpenVPN 秘鑰+用戶名密碼雙重驗證登錄