22
2024
05
15:44:02

配置openVPN使用用户名密码认证 进行远程办公



推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

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

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

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

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服务器测试一下。

图片

哦吼,报错了。报错提示: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

图片

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

图片

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



#!/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

图片


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



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,以启用外部脚本的执行,需要注意赋予脚本可执行权限。

然后我们再次测试一下。

图片

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

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

图片

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

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

auth-user-pass

图片


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

图片

连接成功。

图片


本文链接:http://hqyman.cn/post/6286.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: