openvpn配置客户端特定规则和访问策略

假设我们正在设置公司 VPN,并且我们想为 3 个不同类别的用户建立单独的访问策略:

  • 系统管理员 –对网络上所有机器的完全访问权限
  • 员工 ——仅可访问 Samba/电子邮件服务器
  • 承包商 ——仅可访问特殊服务器

我们采取的基本方法是:(a) 将每个用户类别隔离到其自己的虚拟 IP 地址范围内,(b) 通过设置以客户端的虚拟 IP 地址为关键的防火墙规则来控制对机器的访问。

在我们的示例中,假设我们的员工数量不定,但只有一名系统管理员和两名承包商。我们的 IP 分配方法是将所有员工放入 IP 地址池中,然后为系统管理员和承包商分配固定的 IP 地址。

请注意,本示例的先决条件之一是您在 OpenVPN 服务器计算机上运行了软件防火墙,这使您可以定义特定的防火墙规则。在我们的示例中,我们假设防火墙是 Linux  iptables

首先我们根据用户类别创建一个虚拟IP地址映射:

班级虚拟 IP 范围允许 LAN 访问常用名称
雇员10.8.0.0/24Samba/电子邮件服务器位于 10.66.4.4[多变的]
系统管理员10.8.1.0/24整个 10.66.4.0/24 子网系统管理员1
承包商10.8.2.0/24承包商服务器位于 10.66.4.12承包商1、承包商2

接下来,让我们将此映射转换为 OpenVPN 服务器配置。首先,确保您已按照 上述步骤 使 10.66.4.0/24 子网可供所有客户端使用(虽然我们将配置路由以允许客户端访问整个 10.66.4.0/24 子网,但我们将使用防火墙规则施加访问限制以实现上述策略表)。

首先,为我们的tun接口定义一个静态单元号  ,以便我们稍后可以在防火墙规则中引用它:

dev tun0

在服务器配置文件中,定义员工IP地址池:

server 10.8.0.0 255.255.255.0

为系统管理员和承包商 IP 范围添加路由:

route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0

因为我们将为特定的系统管理员和承包商分配固定的 IP 地址,所以我们将使用客户端配置目录:

client-config-dir ccd

现在将特殊的配置文件放在 ccd 子目录中,为每个非员工 VPN 客户端定义固定 IP 地址。

ccd/系统管理员1

ifconfig-push 10.8.1.1 10.8.1.2

ccd/承包商1

ifconfig-push 10.8.2.1 10.8.2.2

ccd/承包商2

ifconfig-push 10.8.2.5 10.8.2.6

每对 ifconfig-push 地址代表虚拟客户端和服务器 IP 端点。它们必须取自连续的 /30 子网,以便与 Windows 客户端和 TAP-Windows 驱动程序兼容。具体来说,每个端点对的 IP 地址中的最后一个八位字节必须取自以下集合:

[  1,  2] [  5,  6] [  9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]

这样就完成了 OpenVPN 的配置。最后一步是添加防火墙规则以完成访问策略。在本示例中,我们将使用 Linux  iptables 语法中的防火墙规则:

# Employee rule
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 10.66.4.4 -j ACCEPT

# Sysadmin rule
iptables -A FORWARD -i tun0 -s 10.8.1.0/24 -d 10.66.4.0/24 -j ACCEPT

# Contractor rule
iptables -A FORWARD -i tun0 -s 10.8.2.0/24 -d 10.66.4.12 -j ACCEPT
此条目发表在openwrt分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注