1. 程式人生 > >OpenVPN 秘鑰+用戶名密碼雙重驗證登錄

OpenVPN 秘鑰+用戶名密碼雙重驗證登錄

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文件,直接復制粘貼以下代碼也可以。

PASSFILELOG_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 秘鑰+用戶名密碼雙重驗證登錄