如何防止用户在 OpenVPN 中共享证书?

San*_*dra 8 linux openvpn

我有一个使用证书和 LDAP 身份验证的 OpenVPN 服务器。

问题在于,一个用户可以共享他的证书,而其他有效的 LDAP 用户可以使用此证书。

如何确保 Bob 的证书只能与 LDAP 用户“bob”一起使用?

San*_*dra 9

根据这篇文章common_name用户不能伪造。

将此添加到 openvpn server.conf

script-security 2

# untrusted state
auth-user-pass-verify /etc/openvpn/scripts/check_cn_on_connect.sh via-env
Run Code Online (Sandbox Code Playgroud)

/etc/openvpn/scripts/check_cn_on_connect.sh 包含

#!/bin/bash

# username and common_name must be the same to allow access.
# users are not allowed to share their cert
if [ $username != $common_name ]; then
   echo "$(date +%Y%m%d-%H%M%S) DENIED  username=$username cert=$common_name" >> /var/log/openvpn-access.log
   exit 1
fi

echo "$(date +%Y%m%d-%H%M%S) GRANTED username=$username cert=$common_name" >> /var/log/openvpn-access.log

exit 0
Run Code Online (Sandbox Code Playgroud)

更新

这适用于 OpenVPN 2.1.4。在 2.2.0 中,他们添加了许多您可以通过 看到的新变量env >> /tmp/env,其中一个新变量是证书指纹/序列号。