使用IPsec实现同一网段上不同group间的访问控制

在某些企业环境中,需要以group为单位实现访问控制。例如,允许同一部门(一个部门对应一个group)内的计算机相互访问;同时阻止不同部门间的互访。对于小型企业,我们可以调整网络拓扑,将不同group的计算机部署到不同网段,从而通过路由器的IP包过滤功能来实现网络隔离。而对于网络架构成熟的大型企业,重新部署网络拓扑工作量过大,可行性很差。此时,需要找到一种方法,实现同一网段中不同group间的访问控制。

 

本文着重讨论实现这一需求的具体方法。

实现条件

  1. 该策略要求所有计算机运行Windows Vista/2008/7或以上操作系统。
  2. 所有group均可访问的DC和其他公共服务器须与受控计算机位于不同IP地址范围内。
  3. 统计所有group所属IP地址范围。

实现思路:

注:所有group均可访问的DC和其他公共服务器必须位于该地址范围之外。

  1. 对该范围内所有计算机启用相同的IPsec策略。
  2. 配置Windows防火墙incoming策略,对属于每个group的计算机,只允许接受来自相同group的incoming流量(请保持outgoing策略不变)。

配置步骤:

1. 实验环境

本文以一台DC和三台客户端为例进行阐述,其中4台计算机的情况如下图所示:

从上图可以看出,三台客户机位于同一网段192.168.0.X。其中,Client1W7属于Group1,Client2W7和Client3W7属于Group2。我们的目标是,使Group1和Group2中的计算机不能相互访问,同一Group中的计算机访问正常。如下表:

 

Client1W7

Client2W7

Client3W7

Client1W7

N/A

不能访问

不能访问

Client2W7

不能访问

N/A

可以访问

Client3W7

不能访问

可以访问

N/A

 

2. 实验步骤

(1)在DC上建立一条启用IPsec的组策略。

  1. 运行gpmc.msc。打开组策略管理工具。
  2. 在Group Policy Management中,右击域名,点击“Create a GPO in this domain, and link it here…”
  3. 输入组策略名。
  4. 右击新建立的组策略,点击”Edit”,打开编辑界面。依次展开”Computer Configuration”->”Policy”->”Windows Settings”->”Security Settings”->”Windows Firewall with Advanced Security”->”Windows Firewall with Advanced Security”->”Connection Security Rules”。在右侧空白处右击,点击“New Rule”新建一条规则。
  5. 在“Rule Type”页面中选择“Custom”,点击“Next”。 在“Endpoints”页面中,选择“Which computers are in Endpoint 1”下的“These IP addresses”。点击“Add”。在出现的对话框中输入需要访问控制的网段。此处为192.168.0.201~192.168.0.210,该网段包含了实验环境中需受控制的三台客户机的IP地址。点击“OK”。
  6. 选择“Which computers are in Endpoint 2”下的“These IP addresses”。点击“Add”。在出现的对话框中输入需要访问控制的网段。此处同为192.168.0.201~192.168.0.210,点击“OK”。
  7. 在“Requirements”页面中,选择“Require authentication for inbound and outbound connections”。点击“Next”。
  8. 点击“Next”。
  9. 在“Requirements”页面中,选择“Require authentication for inbound and outbound connections”。点击“Next”。
  10. 在“Authentication Method”页面中,选择“Computer(Kerberos V5)”。点击“Next”。
  11. 点击“Next”。点击“Next”。
  12. 在“Name”页面中,输入规则名。点“Finish”。

 (2)在DC上建立针对group1的组策略,该策略阻止所有incoming连接,仅允许同组的计算机访问。

  1. 在Group Policy Management中,右击域名,点击“Create a GPO in this domain, and link it here…”,建立一条新的组策略。
  2. 在新建立的组策略中,建立一条阻止所有incoming连接的防火墙规则。
    1. 右击新建立的组策略,点击”Edit”,打开编辑界面。依次展开”Computer Configuration”->”Policy”->”Windows Settings”->”Security Settings”->”Windows Firewall with Advanced Security”->”Windows Firewall with Advanced Security”->”Inbound Rules”。在右侧空白处右击,点击“New Rule”新建一条规则。
    2. 在“Rule Type”中,保持默认设置,点击“Next”。
    3. 在“Program”中,选择“All programs”,点击“Next”。
    4. 在“Action”中,选择“Block the connection”,点击“Next”。
    5. 在“Profile”中,点击“Next”。
    6. 在“Name”页面中,输入策略名,如“Block All”。点击“Finish”。
  3. 在同一组策略中,建立一条允许来自group1的incoming连接的防火墙规则。
    1. 在同一组策略中,依次展开”Computer Configuration”->”Policy”->”Windows Settings”->”Security Settings”->”Windows Firewall with Advanced Security”->”Windows Firewall with Advanced Security”->”Inbound Rules”。在右侧窗格中(已存在一条名为”Block All”的防火墙规则),点击“New Rule”新建一条规则。
    2. 在“Rule Type”中,选择“Custom”,点击“Next”。
    3. 在“Program”中,保持默认设置,点击“Next”。
    4. 在“Protocol and Ports”中,保持默认设置,点击“Next”。
    5. 在“Scope”中,保持默认设置,点击“Next”。
    6. 在“Action”中,选择“Allow the connection if it is secure”。
    7. 点击“Customize…”,选择”Allow the connection to use null encapsulation”,选择“Override block rules”,点击“OK”。
    8. 在“Users” 中,保持默认设置,点击“Next”。
    9. 在“Computers” 中,选择“Only allow connections from these computers”。点击“Add”,输入“group1”。点击“OK”。点击“Next”。
    10. 在“Profile”中,保持默认设置,点击“Next”。
    11. 在“Name”页面中,输入策略名。点击“Finish”。
  4. 将新建策略部署到属于group1的计算机上。
    1. 在组策略管理工具中,点击新建组策略,在右侧界面的“Security Filtering”中删除“Authenticated Users”。
    2. 点击“Add”,添加组“Group1”。

 

(3)在DC上建立针对group2的组策略,该策略阻止所有incoming连接,仅允许同组的计算机访问。建立方法参照步骤(2)。注意在“Computers”页面 中,添加“group2”。部署策略时,“Security Filtering”中添加“group2”。

(4)等待在三台客户机得到组策略,或在cmd.exe中使用命令“gpupdate /force”立即使组策略生效。

至此,配置过程结束。

 

3. 实验结果

(1)在Client1W7上无法ping通Client2W7和Client3W7。以Client3W7为例,两端抓取netmon trace的结果如下图所示:


从上图可以看出,在发出ICMP包之前,Client1W7先通过AuthIP协议与Client3W7建立IPsec安全链接。连接建立起来后,Client1W7才向Client3W7发送ICMP包。由于这两天计算机位于不同Group,防火墙规则阻挡了这一通信行为的发生。Client1W7与Client2W7间的行为与之类似。

(2)在Client3W7上,可以ping通Client2W7。

两端抓取netmon trace的结果如下图所示:


从上图可以看出,在发出ICMP包之前,Client2W7先通过AuthIP协议与Client3W7建立IPsec安全链接。连接建立起来后,Client1W7才向Client3W7发送ICMP包。由于这两天计算机位于同一Group,防火墙规则允许了这一通信行为的发生。

(3)在三台计算机上,可以ping通DC。

由于在建立连接安全规则时,指定使用IPsec的IP范围内不包括DC,因而三台计算机与DC的通信之间不使用IPsec。以Client1W7为例。


从上图可以看出,当Client1W7尝试ping DC是,Client1W7直接向DC发送ICMP包,之前没有建立IPsec链接的过程。

参考资料:

如果读者有兴趣,可以参考以下文章,了解AuthIP协议:

AuthIP in Windows Vista

https://technet.microsoft.com/en-us/library/bb878097.aspx