使用IPsec实现同一网段上不同group间的访问控制
在某些企业环境中,需要以group为单位实现访问控制。例如,允许同一部门(一个部门对应一个group)内的计算机相互访问;同时阻止不同部门间的互访。对于小型企业,我们可以调整网络拓扑,将不同group的计算机部署到不同网段,从而通过路由器的IP包过滤功能来实现网络隔离。而对于网络架构成熟的大型企业,重新部署网络拓扑工作量过大,可行性很差。此时,需要找到一种方法,实现同一网段中不同group间的访问控制。
本文着重讨论实现这一需求的具体方法。
实现条件 :
- 该策略要求所有计算机运行Windows Vista/2008/7或以上操作系统。
- 所有group均可访问的DC和其他公共服务器须与受控计算机位于不同IP地址范围内。
- 统计所有group所属IP地址范围。
实现思路:
注:所有group均可访问的DC和其他公共服务器必须位于该地址范围之外。
- 对该范围内所有计算机启用相同的IPsec策略。
- 配置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的组策略。
- 运行gpmc.msc。打开组策略管理工具。
- 在Group Policy Management中,右击域名,点击“Create a GPO in this domain, and link it here…”
- 输入组策略名。
- 右击新建立的组策略,点击”Edit”,打开编辑界面。依次展开”Computer Configuration”->”Policy”->”Windows Settings”->”Security Settings”->”Windows Firewall with Advanced Security”->”Windows Firewall with Advanced Security”->”Connection Security Rules”。在右侧空白处右击,点击“New Rule”新建一条规则。
- 在“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”。
- 选择“Which computers are in Endpoint 2”下的“These IP addresses”。点击“Add”。在出现的对话框中输入需要访问控制的网段。此处同为192.168.0.201~192.168.0.210,点击“OK”。
- 在“Requirements”页面中,选择“Require authentication for inbound and outbound connections”。点击“Next”。
- 点击“Next”。
- 在“Requirements”页面中,选择“Require authentication for inbound and outbound connections”。点击“Next”。
- 在“Authentication Method”页面中,选择“Computer(Kerberos V5)”。点击“Next”。
- 点击“Next”。点击“Next”。
- 在“Name”页面中,输入规则名。点“Finish”。
(2)在DC上建立针对group1的组策略,该策略阻止所有incoming连接,仅允许同组的计算机访问。
- 在Group Policy Management中,右击域名,点击“Create a GPO in this domain, and link it here…”,建立一条新的组策略。
- 在新建立的组策略中,建立一条阻止所有incoming连接的防火墙规则。
- 右击新建立的组策略,点击”Edit”,打开编辑界面。依次展开”Computer Configuration”->”Policy”->”Windows Settings”->”Security Settings”->”Windows Firewall with Advanced Security”->”Windows Firewall with Advanced Security”->”Inbound Rules”。在右侧空白处右击,点击“New Rule”新建一条规则。
- 在“Rule Type”中,保持默认设置,点击“Next”。
- 在“Program”中,选择“All programs”,点击“Next”。
- 在“Action”中,选择“Block the connection”,点击“Next”。
- 在“Profile”中,点击“Next”。
- 在“Name”页面中,输入策略名,如“Block All”。点击“Finish”。
- 在同一组策略中,建立一条允许来自group1的incoming连接的防火墙规则。
- 在同一组策略中,依次展开”Computer Configuration”->”Policy”->”Windows Settings”->”Security Settings”->”Windows Firewall with Advanced Security”->”Windows Firewall with Advanced Security”->”Inbound Rules”。在右侧窗格中(已存在一条名为”Block All”的防火墙规则),点击“New Rule”新建一条规则。
- 在“Rule Type”中,选择“Custom”,点击“Next”。
- 在“Program”中,保持默认设置,点击“Next”。
- 在“Protocol and Ports”中,保持默认设置,点击“Next”。
- 在“Scope”中,保持默认设置,点击“Next”。
- 在“Action”中,选择“Allow the connection if it is secure”。
- 点击“Customize…”,选择”Allow the connection to use null encapsulation”,选择“Override block rules”,点击“OK”。
- 在“Users” 中,保持默认设置,点击“Next”。
- 在“Computers” 中,选择“Only allow connections from these computers”。点击“Add”,输入“group1”。点击“OK”。点击“Next”。
- 在“Profile”中,保持默认设置,点击“Next”。
- 在“Name”页面中,输入策略名。点击“Finish”。
- 将新建策略部署到属于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