前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenV**使用用户名密码验证

OpenV**使用用户名密码验证

作者头像
孤鸿
发布2022-10-04 14:42:21
1.2K0
发布2022-10-04 14:42:21
举报
文章被收录于专栏:孤鸿
  • 前面写到了Centos7搭建OpenVPN,为了安全和方便管理,下面介绍如何采取用户认证的方式连接到openv**服务器。

修改openv**配置文件
代码语言:javascript
复制
vi /etc/openvpn/server.conf #编辑/etc/server.conf文件,并添加如下内容:
script-security 3 #允许通过环境变量将密码传递给脚本
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env #指定checkpsw.sh位置,提供一个用户名密码对
client-cert-not-required #不使用客户端证书,使用密码对
username-as-common-name #使用认证用户名,不使用证书的common name
下载用户验证脚本
文件的官方下载地址是:http://openvpn.se/files/other/checkpsw.sh

如果无法下载就把下面的内容拷贝到一个文件中,然后改名为checkpw.sh即可

代码语言:javascript
复制
#!/bin/bash
# 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/login-auth.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
# using th re(Regular Expressions)
#CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="${username}"{print $2;exit}' ${PASSFILE}`
CORRECT_PASSWORD=$(grep -oP "(?<=^$username\s).+$" $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
创建用户名密码文件
代码语言:javascript
复制
cp /root/checkpw.sh /etc/openvpn/ #把下载的checkpsw.sh拷贝到/etc/server.conf中指定的位置
chmod +x /etc/openvpn/checkpw.sh # 给脚本添加执行权限
# 给脚本添加执行权限,并将脚本拷贝到/etc/server.conf中指定的位置
touch /etc/openvpn/login-auth.log
chmod 755 login-auth.log
# 创建日志文件,用来记录用户名密码认证产生的日志
echo "test 123456" >>/etc/openvpn/psw-file
chmod 400 /etc/openvpn/psw-file
chown nobody:nobody psw-file
# 创建用户名密码文件,并修改权限
[root@openvpn ~]# ll /etc/openvpn/psw-file 
-r-------- 1 root root 12 Sep 21 02:35 /etc/openvpn/psw-file
[root@openvpn ~]# cat /etc/openvpn/psw-file 
test 123456
修改客户端配置文件

注释掉cert和key(客户端不需要crt和key文件,但是需要服务器的CA证书)

;cert eva.crt

;key eva.key

添加如下内容

auth-user-pass

客户端文件示例
代码语言:javascript
复制
client
#定义这是一个client,配置从server端pull拉取过来,如IP地址,路由信息之类,Server使用push指令推送过来。
dev tun
#定义openvpn运行的模式,这个地方需要严格和Server端保持一致。
proto tcp
#定义openvpn使用的协议,这个地方需要严格和Server端保持一致。
remote 10.1.2.80 1194
#设置Server的IP地址和端口,这个地方需要严格和Server端保持一致。
resolv-retry infinite
#始终重新解析Server的IP地址(如果remote后面跟的是域名),保证Server IP地址是动态的使用DDNS动态更新DNS后
#Client在自动重新连接时重新解析Server的IP地址。这样无需人为重新启动,即可重新接入VPN。
nobind
#定义在本机不邦定任何端口监听incoming数据。
persist-key
persist-tun
ca ca.crt
#定义CA证书的文件名,用于验证Server CA证书合法性,该文件一定要与服务器端ca.crt是同一个文件。
;cert client.crt
#定义客户端的证书文件
;key client.key
#定义客户端的密钥文件。
comp-lzo
#启用允许数据压缩,这个地方需要严格和Server端保持一致
verb 3
#设置日志要记录的级别。
auth-user-pass #使用用户名密码登录openvpn服务器
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 修改openv**配置文件
    • 下载用户验证脚本
      • 文件的官方下载地址是:http://openvpn.se/files/other/checkpsw.sh
      • 创建用户名密码文件
      • 修改客户端配置文件
        • 客户端文件示例
        相关产品与服务
        VPN 连接
        VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档