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服务,测试客户端登录。

输入用户名密码就可以登录啦

时间: 2024-08-02 06:55:44

OpenVPN 秘钥+用户名密码双重验证登录的相关文章

秘钥加密码的登录模式

应用场景:有时候我们要给远在北京或者国外的开发人员服务器的权限,为了保证服务器的安全性我们不想让他们知道服务器的root登陆密码,所以我们可以给他们用秘钥加密码的登陆模式. 原理:公钥加密 私钥解密.公钥和私钥是成对生成的,所以将私钥发给别人别人也能登陆 客户端ip:192.168.0.186 服务器ip:192.168.0.167 1.密钥认证的生成 [[email protected] .ssh]# ifconfig eth0 | awk  '/inet addr/{print }' ine

Linux ssh服务开启秘钥和密码认证

问题描述: 实现Linux秘钥和密码同时认证 解决方案: vim /etc/ssh/sshd_config 基本参数: PermitRootLogin yes #允许root认证登录 PasswordAuthentication yes #允许密码认证 RSAAuthentication yes #秘钥认证 PubkeyAuthentication yes 详细参数列表 [[email protected] ~]# cat /etc/ssh/sshd_config # $OpenBSD: ssh

Java连接MySQL数据库实现用户名密码的验证方法 Java语句中sql查询语句&#39;&#39; &quot;&quot;作用

//方法一,可以验证登录,但方法不实用.package com.swift; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class Logi

vmware vcenter orchestrator configuration提示“用户名密码错误或登录失败超过次数被锁定”

首次登录,使用默认用户密码登录vmware/vmware vmware vcenter orchestrator configuration提示"用户名密码错误或登录失败超过次数被锁定".记得之前没有修改过密码,但是就是登录不了,只能通过重置找回密码了. Windows:在vcenter服务器上找到vmware安装目录下的passwd文件 Linux:/var/lib/vco/configuration/conf/passwd.properties Windows:使用文本编辑器打开p

ssh使用秘钥免密码登录

使用ssh远程连接服务器,有两种身份校验方式:账号密码和秘钥.使用秘钥的方式理论上更加安全,而且免去了输入密码的步骤,使用起来更方便(尤其对于sftp,scp等). ssh秘钥的生成和使用,网上很多教程,感觉不太完整,这里自己总结一下. 秘钥由谁生成这是比较容易搞乱的一点.这里以A.B两台服务器为例,假设A需要ssh登录B,那么应该由那台服务器生成秘钥呢.可能有人以为像门锁一样,主人家负责装锁配钥匙,把钥匙交给要开门的人使用,所以由被访问的B服务器生成秘钥. 事实恰恰相反,秘钥由访问请求方A服务

WampServer PHP服务配置方法(允许外部访问、phpmyadmin设置为输入用户名密码才可登录等)

WampSever 指的是apache + mySQL + PHP 三合一套装,第一字母W,是指用于windows系统,我用的是2.0f版.用于Linux系统的,是LampSever,第一字母是L.请到官方网站:http://www.wampserver.com/ 下载最新版.下载地址: localhost和127.0.0.1是相同的,都指向本机网站服务器的根目录,比如:我电脑的网站根目录设定为:d:\wamp\www,本文所有用到localhost的地方,都可以用127.0.0.1来代替.可以

WAMPserver配置(允许外部访问、phpmyadmin设置为输入用户名密码才可登录等)

对于很多不熟悉PHP环境安装的朋友来说,用集成环境可以更快的上手,更方便的搭建PHP的运行环境,但是,WAMP的集成环境仅仅是将底层基础工作做好 了,有些个别关键的配置操作并没有集成到环境安装中,所以给大家带来不少麻烦,看到搜索引擎中很多朋友都在问为什么安装好WAMP后,只能本地访问?局域 网内禁止访问?或者为什么本地数据库PHPMYADMIN为什么也不能在外部局域网内访问呢?如何设置Mysql必须输入用户名和密码而不是直接登录进去 呢? 下面根据自己的亲身实践,说说WAMP配置的整个过程. 1

用户名密码注册与登录的应用

一.本博客介绍的是登录界面的一些操作其中包括界面跳转,输入用户名密码注册登录等功能.1.界面的设计 <?xml version="1.0" encoding="utf-8"?> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:

redis修改密码以及验证登录,启动服务常用命令

1.通过配置文件,直接修改 2.启动然后使用密码验证登录 3.redis常用命令 启动服务:redis-server --service-start重启服务:service redis restart停止服务:redis-server --service-stop 原文地址:https://www.cnblogs.com/qiping/p/12702233.html