1. 程式人生 > >Centos6.5 伺服器配置OpenVPN使用賬號/密碼方式驗證登入

Centos6.5 伺服器配置OpenVPN使用賬號/密碼方式驗證登入

一:在開始之前請先配置配置好openvpn伺服器和客戶端,可參考以下安裝文件!

http://blog.csdn.net/llq_200/article/details/74980266

二:修改openvpn服務主配置檔案,新增如下內容;如果加上client-cert-not-required則代表只使用使用者名稱密碼方式驗證登入,如果不加,則代表需要證書和使用者名稱密碼雙重驗證登入!
# tail -3 /etc/openvpn/server.conf
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
client-cert-not-required
username-as-common-name   #使用客戶提供的UserName作為Common Name


script-security 4                           #加入指令碼處理,如用密碼驗證

三:下載驗證使用者登入指令碼並進行相應的修改,主要改PASSFILE和LOG_FILE兩個變數

許可權設定為:-rwxr--r-- (744) 所有者:nobody chown nobody:nobody checkpsw.sh     #需要先cd到該目錄
  1. # cd /etc/openvpn/checkpsw.sh  
  2. # wget http://openvpn.se/files/other/checkpsw.sh  
  3. # chmod +x checkpsw.sh  
  4. # cat checkpsw.sh   
  5. #!/bin/sh  
  6. ###########################################################  
  7. # checkpsw.sh (C) 2004 Mathias Sundman <mathias@openvpn.se> 
  8. #  
  9. # This script will authenticate OpenVPN users against  
  10. # a plain text file. The passfile should simply contain  
  11. # one row per user with the username first followed by  
  12. # one or more space(s) or tab(s) and then the password.  
  13. PASSFILE="/etc/openvpn/psw-file" 
  14. LOG_FILE="/etc/openvpn/openvpn-password.log" 
  15. TIME_STAMP=`date "+%Y-%m-%d %T"`  
  16. ###########################################################  
  17. if [ ! -r "${PASSFILE}" ]; then  
  18.   echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >>   
  19. ${LOG_FILE}  
  20.   exit 1  
  21. fi
  22. CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`  
  23. if [ "${CORRECT_PASSWORD}" = "" ]; then   
  24.   echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=  
  25. \"${password}\"." >> ${LOG_FILE}  
  26.   exit 1  
  27. fi  
  28. if [ "${password}" = "${CORRECT_PASSWORD}" ]; then   
  29.   echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}  
  30.   exit 0  
  31. fi  
  32. echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=  
  33. \"${password}\"." >> ${LOG_FILE}  
  34. exit 1 

四:準備使用者名稱和密碼認證檔案,使用者名稱和密碼用空格隔開,同時確保openvpn啟動使用者可讀取該檔案

  1. # cat psw-file   
  2. lilunqing 123456  
  3. # chmod 400 psw-file  
  4. # chown nobody.nobody psw-file 

五:修改客戶端配置檔案
註釋掉
;cert client1.crt
;key  client1.key

#增加密碼驗證後,客戶端只需包含ca.crt的配置檔案

#增加詢問使用者名稱和密碼   
auth-user-pass

六:修改客戶端配置檔案後重啟服務端。

  1. service  openvpn restart    #啟動openvpn的命令 

七:測試,若輸入錯誤的使用者名稱或密碼,則提示重新輸入使用者名稱和密碼,嘗試3次後中斷;

 

#tail -n 100 -f openvpn-password.log