1. 程式人生 > >OpenVPN進階之密碼驗證

OpenVPN進階之密碼驗證

在上一篇文章Centos7安裝OpenVPN中,我們搭建了OpenVPN,基於證書認證,連線時只需檢測證書,如果我們需要採用密碼驗證呢?

系統基於 CentOS 7.0 64位,VPN採用OpenVPN,已搭建好基於證書認證的VPN,接下來將其修改為密碼認證。系列文章請訪問csdn.zxiaofan.com的Linux欄。

1、修改主配置檔案

vim /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 3   #加入指令碼處理,如用密碼驗證

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

許可權設定為:-rwxr--r-- (744) 所有者:nobody chown nobody:nobody checkpsw.sh     #需要先cd到該目錄 指令碼如下,自行copy並命名為checkpsw.sh
#!/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="/etc/openvpn/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

3、新建使用者名稱和密碼認證檔案psw-file,使用者名稱和密碼用空格隔開,同時確保openvpn啟動使用者可讀取該檔案

# cat psw-file  
zxiaofan 123456  
 #為了安全起見,將psw-file的權限盡量改小
# chmod 400 psw-file  
# chown nobody.nobody psw-file 

4、修改客戶端配置檔案

註釋掉
;cert yangliangwei.crt  
;key  yangliangwei.key
#增加密碼驗證後,客戶端只需包含ca.crt的配置檔案
#增加詢問使用者名稱和密碼    
auth-user-pass

5、修改配置檔案後重啟服務

systemctl restart     #系統服務管理器指令
systemctl start [email protected]          #啟動openvpn的命令

6、增加埠(如果需要)

firewall-cmd --permanent --add-masquerade firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload 重啟服務可能需要等待一段時間
歡迎個人轉載,但須在文章頁面明顯位置給出原文連線;
未經作者同意必須保留此段宣告、不得隨意修改原文、不得用於商業用途,否則保留追究法律責任的權利。

【 CSDN 】:csdn.zxiaofan.com
【GitHub】:github.zxiaofan.com

如有任何問題,歡迎留言。祝君好運!
Life is all about choices! 
將來的你一定會感激現在拼命的自己!

相關推薦

OpenVPN密碼驗證

在上一篇文章Centos7安裝OpenVPN中,我們搭建了OpenVPN,基於證書認證,連線時只需檢測證書,如果我們需要採用密碼驗證呢? 系統基於 CentOS 7.0 64位,VPN採用OpenVP

CSS

模式 ant 表格 weight mil 比較 標題 根據 amp 下面主要引用http://www.cnblogs.com/wangfupeng1988/tag/css知多少/ CSS進階筆記: 一、學習CSS的三個突破點 1.瀏覽器如何加載和解析CSS——CSS的5個來

Android 動畫動畫切換

ram 屏幕 pre 退出 tac 旋轉動畫 utf 轉動 XML 一、Activity切換動畫   在Android開發中,經常會遇到Activity之間切換效果,下面介紹一下,Activity左右滑動切換效果。在Android2.0以後版本,在Activity中添加了

路(基礎篇) - 011 arduino api基礎手冊

異或 change 可用 算術運算符 chan 程序結構 換算 是否 關閉 arduino 函數 api 程序結構 在Arduino中, 標準的程序入口main函數在內部被定義, 用戶只需要關心以下兩個函數:void setup()void loop()setup() 函數

路(基礎篇) - 008 SPI數據傳輸(庫函數方法)

ria att clockd == bus 屏蔽 attach serial out 主機端: 1 /********************************* 2 代碼功能:SPI數據傳輸(主機端) 3 引腳說明: 4 SS/CS:片選(高電平屏

路(基礎篇) - 009 通過底層AVR方法實現SPI數據傳輸

lean oop and return false 進階 from setup pie 主機端: /********************************* 代碼功能:通過底層AVR方法實現SPI數據傳輸(主機端) 創作時間:2016*10*17 使用資源:

路(基礎篇) - 007 脈沖寬度測量

style 函數 long 最大 void serial 作者 println 電平 1 /********************************* 2 代碼功能:Pulse脈沖寬度測量 3 使用函數: 4 pulseIn(引腳號,脈沖響應電平,

路(中級篇) - 018 基於arduino的簡易版智能衣架

檢驗 dig cloc 布線 pin on() -- mage 根據 一. 設備及要求 目的:制作一個可以自動根據事實的天氣的狀況進行對衣架上的衣服進行晾曬。 基礎裝置:可伸縮的晾衣架。 開發環境:Arduino1. 8.1 主控板:Arduino UNO 動力裝置:

項目 集群環境搭建(一)概述

問題 特點 多臺 cpu 好的 content 成了 系統資源 通過 今天我們說一個不是特別新,但近期今年伴隨大數據熱而比較火的一個技術-集群技術。 什麽是集群技術 集群(Cluster)技術是指一組相互犭蟲立的計算機,利用快速通信網絡組

【SSH路】Hibernate映射——一對一單向關聯映射(五)

技術 iyu 標識 tails for sso 3.0 sdn 例如 【SSH進階之路】Hibernate基本原理(一) ,小編介紹了Hibernate的基本原理以及它的核心,採用對象化的思維操作關系型數據庫。 【SSH進階之路】Hibernate搭建開發環境+簡單實例

【SSH路】Struts + Spring + Hibernate 開端(一)

height 一段 ioc 效率 陽光大道 面向對象的思想 text ase 們的 Long Long ago。就聽說過SSH。起初還以為是一個東東,詳細內容更是不詳,總認為高端大氣上檔次,經過學習之後才發現,不不過高大上,更是低調奢華有內涵,經過一段時間的

2017PHP程序員的

通信協議 thinkphp nmp 圖形圖像 update gin io模型 應用場景 單例 又是一年畢業季,可能會有好多畢業生即將進入開發這個圈子,踏上碼農這個不歸路。根據這些年在開發圈子總結的LNMP程序猿發展軌跡,結合個人經驗體會,總結出很多程序員對未來的迷漫,特別對

樹莓派路 (012) - 關於Raspberry Pi樹莓派無線網卡配置

linu names interface 文件內容 動態ip down run 表示 無線網絡 Raspberry Pi樹莓派無線網卡配置[多重方法備選] 要想讓樹莓派方便操作,肯定需要配置無線網卡,這樣可以大大增強樹莓派的移動性和便利性,其實配置無線網卡基本就是和普通li

【SSH路】Hibernate基本映射(三)

tor res 主動 tran clas oid 支持包 lose 包括 【SSH進階之路】Hibernate基本原理(一) ,小編介紹了Hibernate的基本原理以及它的核心。採用對象化的思維操作關系型數據庫。 【SSH進階之路】Hibernate搭建開發環境+簡單

GO語言的路-go的程序結構以及包簡介

nbsp 高亮 編碼 支持 style 搜索框 責任 code 能夠                GO語言的進階之路-go的程序結構以及包簡介                                       作者:尹正傑 版權聲明:原創作品,謝絕轉載!否則將追

【SSH路】Struts基本原理 + 實現簡單登錄(二)

target doctype 掌握 pack insert enter snippet file manage 上面博文,主要簡單的介紹了一下SSH的基本概念,比較宏觀。作為剛開始學習的人可以有一個總體上的認識,個人覺得對學習有非常好的輔助功能,它不不過

5.4-全棧Java筆記:面向對象對象的轉型 | FINAL關鍵字 |抽象方法和抽象類

java對象的轉型(casting)引用變量只能調用它編譯類型的方法,不能調用它運行類型的方法。這時,我們就需要進行類型的強制轉換!【示例1】對象的轉型public class TestCasting { public static void main(String[] args) {

shell編程數組

shell 數組 declare eval 數組ARRAY變量:存儲單個元素的內存空間數組:存儲多個元素的連續的內存空間,相當於多個變量的集合,元素編號支持稀疏格式,即索引編號不連續。 高級變量用法 - 有類型變量Shell變量一般是無類型的,但是bash提供了declare和typeset兩

我的Android旅------&gt;Android關於Log的一個簡單封裝

eight ron track 100% oid content amp 嚴重 center android.util.Log類,能夠方便地用於在編碼調試過程中打印日誌。可是在公布後的產品中,假設有太多的日誌打印。則會嚴重地影響性能。對android.util.Lo

我的Android旅------&gt;Android二級ListView列表的實現

cat -i gravity 寫真 技術分享 家政服務 個性 韓國 服務 實現例如以下圖所看到的的二級列表效果 首先是在布局文件裏,布局兩個ListView,代碼例如以下: <LinearLayout xmlns:android="htt