配置openVPN使用用户名密码认证

da6a2548c06d1f9169d4c56c50aa47ee.gif

正文共:1111 字 10 图,预估阅读时间:1 分钟

我们现在已经实现了openVPN服务器的搭建巧用openVPN实现访问云资源池业务,并且完成了众多终端系统的连接配置openVPN客户端连接指南Ubuntu系统如何连接或断开openVPN。但是,有小伙伴反馈,感觉跟商用的客户端有些差异,那就是没有用户名密码的验证。而且我们对证书和配置文件做了合一操作,如果配置文件泄露,那就毫无安全性可言了。

所以,我们今天要尝试给openVPN配置一个用户名密码认证。

实际上,OpenVPN服务器版本在2.0或更高的版本中就默认支持基于用户名和密码的身份验证了,不需要加载额外的插件。先检查一下我的服务器版本。

d766dc7093063ac2a5083028d7724666.png

版本号是2.4.12,满足要求。如果条件允许,建议使用最新版本的OpenVPN服务器以获取最佳性能和安全性。

然后就是配置使用用户名密码形式的身份验证,理论上最简单的实现方式仅需要2条命令:

auth-user-pass /etc/openvpn/server/user.txt
auth-nocache

其中,auth-user-pass是指使用用户名/密码与服务器进行身份验证。/etc/openvpn/server/user.txt中包含了用户名和密码,格式为“用户名:密码”。为了防止客户端传递恶意形成的用户名或密码字符串,用户名字符串必须仅包含以下字符:字母数字、下划线('_')、破折号('-')、点('.')或at('@')。如果不指定账户文件,则控制台将提示用户名/密码。

auth-nocache是指OpenVPN在使用用户名/密码后立即忘记输入。所以,当OpenVPN需要用户名/密码时,它将提示从stdin输入,在OpenVPN会话期间可能会多次输入。

然后我们重新启动OpenVPN服务器测试一下。

b46c217abb939f54d88fbc84030c2417.png

哦吼,报错了。报错提示:Options error: --auth-user-pass cannot be used with --mode server (it should be used on the client side only)。选项错误:--auth-user-pass不能与--mode服务器一起使用(它只应在客户端使用)。

然后我翻了一下官方手册,发现了一条额外说明:在配置auth-user-pass时,服务器配置必须指定--auth-user-pass-verify脚本,以验证客户端提供的用户名/密码。

好家伙,还要自己写一个验证脚本。太难了,求助一下ChatGPT。

7a95b157022f0cba5bde2838dce55540.png

额,这个脚本有点简单,还是和密码本结合起来用更好一点。再给他提个小需求。

01d46882ede4204fb33196f9068df4ca.png

看起来差不多了,配置上测试一下。

#!/bin/sh
#从环境变量中读取用户名和密码
username=$1
password=$2
#在用户文件中查找给定用户名的密码
expected_password=$(grep "^${username}:" /etc/openvpn/server/user.txt | cut -d ':' -f 2)
#将预期密码与提供的密码进行比较
if [ "${password}" = "${expected_password}" ]; then
exit 0  # Authentication succeeded
else
exit 1  # Authentication failed
fi

80b8e04c062a99923526a05330ae7790.png

然后配置命令就变成了下面这两条:

auth-user-pass-verify /etc/openvpn/passwd.sh via-env
script-security 2

其中auth-user-pass-verify指要求客户端提供用户名/密码以进行身份验证,验证逻辑使用外部的脚本文件/etc/openvpn/passwd.sh。认证方法方法设置为via-env,表示OpenVPN将调用环境变量username和password设置为客户端提供的用户名/密码字符串的脚本。请注意,此方法在某些平台上是不安全的,这些平台使进程的环境对其他非特权进程公开可见。

将“script-security”设置为2,以启用外部脚本的执行,需要注意赋予脚本可执行权限。

然后我们再次测试一下。

bcb2478b976330a87ab14e8fc7b123f4.png

OK,没有报错了,测试一下客户端连接。

发现客户端一直处于连接状态,查看有无报错信息。

4a24cfda72d911922213f36203fa7d20.png

发现提醒客户端未提供用户名密码信息。

这里需要在客户端的ovpn配置文件增加一行。

auth-user-pass

ed3b2544f4262e98039c921f43ae493b.png

修改之后再次测试一下。这次连接的时候就弹出了用户名和密码的对话框了,我们输入预先配置的用户名和密码,点击“connect”

85ffd5b5bdad706be9747fac74aa3461.png

连接成功。

76da7cef81537f29118e889bfa8f7b0b.png

3073cf18d8dc48eea617783e255a0cb0.gif

长按二维码
关注我们吧

5db8ba8082c98c975fdc6901a55d967b.jpeg

4f53b0f635672cc8cc6db9d616c4fd41.png

openVPN客户端连接指南

Ubuntu系统如何连接或断开openVPN

以openVPN为例,介绍一下VPN网络中的递归路由问题

解决openVPN的递归路问题还是要从服务器端下手

在SD-WAN网络中应用OpenVPN,chatGPT是这样想的

chatGPT又火了,用openAI写文章到底靠不靠谱?

基于CentOS部署SmartDNS

通过Nginx做一个openVPN配置文件下载页面

配置优化:将openVPN的配置文件合4为1

通过SNMP统计网络资产

用SNMP模仿Zabbix读取设备接口流量

DDNS配置详解

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Danileaf_Guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值