OpenVPN 使用账号+密码方式登陆
使用账号+密码方式方便给多人分配不同的账号和密码,多人使用更加方便
原文链接:配置OpenVPN使用User/Pass方式验证登录,不过有个大坑,后面讲
鉴于上一篇文章已经成功的搭建好 OpenVPN 了,不过客户端直接使用证书就可以连接了,但是多个人使用的话,建议还是改为账号+密码方式的,这里介绍比较简单的一种方式
服务端配置
# 修改服务端配置文件,文件最后追加几行
$ vim /etc/openvpn/delta.conf
# use username and password login
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
client-cert-not-required
username-as-common-name
script-security 3 execve
如果加上client-cert-not-required则代表只使用用户名密码方式验证登录,如果不加,则代表需要证书和用户名密码双重验证登录!
/etc/openvpn/checkpsw.sh
文件内容:
#!/bin/sh
###########################################################
# checkpsw.sh (C) 2004 Mathias Sundman <mathias@openvpn.se>
#
# 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
配置 账号/密码,新增账号/密码增加到这里即可,一行一个账号,密码用空格隔开:
$ cat psw-file
xu3352 123456@
# 重置权限,安全着想吧
$ chmod 400 psw-file
$ chown nobody.nobody psw-file
重启服务openvpn:service openvpn restart
客户端配置
client.conf
文件里:
# 注释掉即可
;cert laptop.crt
;key laptop.key
# 新增验证方式
auth-user-pass
重新导入配置文件,尝试链接,可以看到弹出登陆框,输入账号和密码进行链接
其他
注意服务端配置最后一行
script-security 3 execve
默认的级别是 2,可以用 ps 看进程号时能看到
如果没有这个的话,会有个很神奇的现象,就是账号可以传过来,但是密码获取不到,可以在登录日志里查看日志!!!
如果客户端需要记住账号/密码,可以在客户端配置里设置:(Tunnelblick试过不好使)
auth-user-pass login.conf
然后 login.conf
内容:
xu3352
123456@
blog comments powered by Disqus