我有一个设置,我向客户端颁发 openvpn 证书以将其流量重定向到特定站点。限制每个客户端重定向到的站点很重要。
每个客户端都有应该在 client-configs/config-dir/ 中的服务器中路由的 IP,如下所示:push route 123.123.123.123 255.255.255.255。
客户端会获得一个 ovpn 文件,其中包含客户端的密钥和配置,以便在其终端上进行设置。问题是,客户端可能会编辑其 ovpn 文件并通过 VPN 路由更多流量,即使新路由不在服务器端配置中。这将允许他们访问他们不应该访问的网站。
是否有解决方案可以限制这种行为或者我可以使用其他工具?
笔记:
- OpenVPN 服务器仅连接一个公共 IP 并转发流量。
- 由于这是一个 BYOD 场景,因此锁定权限不是一种选择。
- Openvpn 服务器上的出站防火墙限制也不是一种选择,因为每个客户端都被路由到不同的 IP 集。
答案1
你说得对。客户端可以编辑其本地 ovpn 文件并告诉它忽略推送的路由,然后将其配置为将所有流量路由到网关。我自己也曾多次这样做进行测试。OpenVPN 没有办法限制这一点。
您有 2 个选择:
- 锁定客户端 OVPN 文件的权限,使他们无法编辑它
- 在 OpenVPN 服务器上实施防火墙规则,阻止除特定子网之外的出站流量
如果您身处公司环境,您可能已经拥有控制用户计算机权限的机制。第一种选择可能非常简单。
如果您无法控制用户对文件的权限,那么防火墙规则是最好的选择。您已经设置了转发伪装规则(例如:https://askubuntu.com/a/578550/283173)。您可以插入额外的 iptables 规则以仅允许您的特定子网。
更新:根据您修改后的笔记,您唯一的选择是服务器端的防火墙,这一点更加明显。您必须认真考虑您的出站过滤器。您最终可能需要做的是制作自己的程序,以智能地创建防火墙规则。如果您知道每个客户端都被路由到特定的 IP,则可以在客户端连接时动态打开防火墙中的路由。当客户端连接时,您可以使用learn-address
服务器配置中的指令挂接到 OpenVPN 的系统,以将有关客户端连接的详细信息发送到您的自定义程序中。