软件指南针:专注于软件传播与分享

为指定客户端配置规则和访问策略 (OpenVPN官方文档)

来源:原创 1694次浏览 0条评论
☞ 本文主要介绍软件OpenVPN的相关内容:为指定客户端配置规则和访问策略 (OpenVPN官方文档)

   其下列版本/分支可以参考本文:

  • 全部版本/分支
英文原文:http://openvpn.net/index.php/open-source/documentation/howto.html#policy

配置指定客户端的规则和访问策略

设想一下,我们创建了一个供企业使用的VPN,我们想要分别为3种不同级别的用户单独设置访问策略:

  • 系统管理员 -- 允许访问网络内的所有终端
  • 普通职工 -- 只允许访问Samba/email服务器
  • 承包商 -- 只允许访问特定的服务器

我们所要采取的基本方法是:(a)给不同级别的用户划分不同的虚拟IP地址范围;(b)通过设置防火墙规则来切断客户端的虚拟IP地址,从而控制对其他终端的访问。

在我们的示例中,假设我们有大量的普通职工,但只有1个系统管理员、2个承包商。我们的IP配置方案将会把所有的普通职工放入一个IP地址池中,然后为系统管理员和承包商分配固定的IP地址。

注意,本示例的前提条件之一就是你有一个运行于OpenVPN服务器所在计算机上的软件防火墙,并具备自定义防火墙规则的能力。在我们的例子中,我们假定防火墙是Linux系统的iptables

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

Class Virtual IP Range Allowed LAN Access Common Names
普通职工 10.8.0.0/24 Samba/email服务器为10.66.4.4 [数量众多]
系统管理员 10.8.1.0/24 10.66.4.0/24整个网段 sysadmin1
承包商 10.8.2.0/24 承包商服务器为10.66.4.12 contractor1, contracter2

下一步,我们将上述映射转换到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范围添加路由:
#管理员的IP范围
route 10.8.1.0 255.255.255.0
#承包商的IP范围
route 10.8.2.0 255.255.255.0

因为我们要为指定的系统管理员和承包商分配固定的IP地址,我们将使用一个客户端配置文件:

client-config-dir ccd

现在,我们在ccd子目录中放置专用的配置文件,为每个非普通职工的VPN客户端定义固定的IP地址。

文件ccd/sysadmin1

ifconfig-push 10.8.1.1 10.8.1.2

文件ccd/contractor1

ifconfig-push 10.8.2.1 10.8.2.2

文件ccd/contractor2

ifconfig-push 10.8.2.5 10.8.2.6

ifconfig-push中的每一对IP地址表示虚拟客户端和服务器的IP端点。它们必须从连续的/30子网网段中获取(这里是/30表示xxx.xxx.xxx.xxx/30,即子网掩码位数为30),以便于与Windows客户端和TAP-Windows驱动兼容。明确地说,每个端点的IP地址对的最后8位字节必须取自下面的集合:

[  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语法的防火墙规则:

# 普通职工规则
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 10.66.4.4 -j ACCEPT

# 系统管理员规则
iptables -A FORWARD -i tun0 -s 10.8.1.0/24 -d 10.66.4.0/24 -j ACCEPT

# 承包商规则
iptables -A FORWARD -i tun0 -s 10.8.2.0/24 -d 10.66.4.12 -j ACCEPT

作者:软件指南针(http://www.softown.cn),转载请保留出处!

用户评论

使用指南 故障排除 0 返回顶部