五、(企业实战)实现openvpn客户端连接必须输入账号密码

4487人浏览 / 0人评论

企业环境:公司运维分为有小王、小张、小狗,他们同使用一个vpn证书,突然小狗离职了,但是又不想让小狗连接,证书一吊销小王和小张他们都不能弄了。为了避免这种情况,我们给证书配置了账号和密码,每个人手里拿着不同的账号和密码。在连接openvpn的时候必须需要输入账号和密码;  这个时候小狗离职了 那我们把他的账号删除就可以啦;

------------------------------------------

一、配置服务端配置文件

1、在配置文件加入3行参数:

script-security 3   #允许使用自定义脚本
auth-user-pass-verify /etc/openvpn/check.sh via-env
username-as-common-name #用户密码登陆方式验证

2、创建脚本文件

cat /etc/openvpn/check.sh

#!/bin/sh
###########################################################
PASSFILE="/etc/openvpn/openvpnfile"
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
 

3、给脚本文件进行授权(不给权限启动openvpn会报错)

chmod +x /etc/openvpn/check.sh

4、创建账号密码文件

第一列为账号,第二列为密码

[root@openvpn openvpn]# cat /etc/openvpn/openvpnfile
xiaogou xiaogou
xiaowang xiaowang
xiaozhang xiaozhang

5、重启openvpn

systemctl restart openvpn@server

二、配置openvpn客户端

1、打开openvpn的安装目录,编辑client.ovpn文件

2、在末尾添加参数

auth-user-pass

三、配置成功,测试连接

1、打开openvpn进行连接,下面提示让你输入账号和密码,那我们输入账号:xiaogou 密码:xiaogou

我这边已经连接成功,小狗离职后那我们在文件中把xiaogou 的一行删除就可以啦

 

全部评论