微软对WindowsServer2012中的虚拟交换机做了很多改进和增强,不仅增加了RSS、dVMQ、端口映射和PVLAN支持等技术,还提供了非常实用的访问控制列表(ACL)功能。
在Technet上可以看到,WindowsServer2012中ACL的称谓叫做端口访问控制列表,根据源/目的地址、方向和动作(允许/拒绝)过滤规则:
入境的
允许
公元前12-34-56-78-9A开往外地的
允许
FF-FF-FF-FF-FF入境的
允许
Any入境的
否认
Any开往外地的
否认
从上面的列表可以看出,2012的ACL函数中支持IP和MAC地址,也支持类似“Any”这样的通用指令。所以,熟悉主流网络设备的童鞋不需要适配过程,可谓简单易用。然后在WindowsServer2012R2中加强了ACL功能,称为“扩展端口访问控制列表”,即扩展端口访问控制列表。不难看出,这就像网络设备上的标准ACL和扩展ACL一样,增加了对源/目的端口、协议、权重等的支持。在原来的基础上。下面是WindowsServer *** 作系统中ACL功能的实际演示:
##########################################################################################
演示环境:
主机:Windows8.1
虚拟机:WindowsServer2008R2SP1标准版
因为ACL功能对 *** 作系统版本没有过多要求,属于Hypervisor层的技术,所以我只是用我的笔记本电脑(Windows8.1)启用Hyper-V功能。如下图所示,我准备了两台测试虚拟机,一台叫SQL2008R2(运行SQL2008R2),一台叫WIN2008R2(运行IIS7)
在开始配置ACL之前,我关闭了两台虚拟机的防火墙,其中SQL2008R2的IP是192.168.10.12,可以PING通WIN2008R2(192.168.10.11),如下图:
此外,您可以看到SQL2008R2的当前TCP1433端口处于侦听状态
回到WIN2008R2,这台机器可以PING192.168.10.12(SQL2008r2)
并且已经安装了Web服务器角色,则该机器的默认站点可以正常访问,并且可以telnet到SQL2008R2的端口1433
##########################################################################################
测试环境准备好之后,在主机上看一下PowerShell,主要过滤Hyper-V模块下的ACL相关命令。可以看到本文前面提到的“标准ACL”和“扩展ACL”,如下图所示:
然后试试标准ACL的效果。使用以下命令为虚拟机WIN2008R2配置ACL,并拒绝目标地址192.168.10.12。
配置生效后,可以通过Get命令查询已有的ACL,如下图所示:
此时,当我们返回到WIN2008R2并PINGSQL2008R2时,它是不可达的。
然后删除刚刚生效的ACL
转到WIN2008R2,再次PINGSQL2008R2,通信恢复正常。
另外,除了IP意外,还可以使用MAC地址作为过滤条件,如下图所示,或者使用MAC地址,拒绝虚拟机WIN2008R2的入站流量。
转到SQL2008R2并PINGWIN2008R2,查看ACL是否生效。
##########################################################################################
以上演示主要针对WindowsServer2012中“标准ACL”的 *** 作,而在r2,“扩展ACL”分为两类,分别介绍为详细ACL规则和有状态ACL规则;在Technet上。那么它们之间有什么区别呢?众所周知,在很多对话中,我们需要指定访问方向,以保证链接的顺畅。例如,如果客户端计算机想要访问外部网络上的Web服务器,那么出于安全原因,管理员必须首先允许客户端计算机的出站请求,例如允许其访问外部网络上的端口80的tcp协议。然后,当Web服务器接收到访问请求时,它需要将相应的数据包返回给客户端计算机。此时,管理员需要允许客户机本地端口的入站请求。好的,来话方向请求没问题,关键是本地端口是什么?开放端口1024~5000?别说了。。。。
到了这个阶段,我们会发现连扩展ACL都不能满足我们的需求,那该怎么办呢?这些特定场景的需求呢,尤其是有状态会话?因此上面提到了有状态ACL规则。
顾名思义,有状态ACL和有状态防火墙一样,其工作原理大致如下:
让我们来看看有状态ACL的特殊功能。在下图中,有一个没有“-Stateful”参数的ACL,该参数允许用于虚拟机SQL2008R2的本地1433端口入口方向。此外,还添加了“-Weight”参数。参数值越大,将执行第一个。因为Hyper-V的ACL中没有默认规则,比如denyanyany,所以
只有配置了这个ACL后,SQL2008R2的1433端口才能被WIN2008R2访问,如下图所示;除非我为WIN2008R2的入站方向再加一个ACL,否则会更复杂。
然后再试试有状态ACL的效果。这与刚才的命令是一样的,只是在它后面附加了一个"-Stateful"并赋予$true,如下图所示:
因为有状态ACL会自动打开用于返回流量的端口,并根据超时值维护此会话,所以WIN2008R2可以telnet到SQL2008R2的端口1433。
这同样适用于Web访问请求。在下图中,SQL2008R2受到ACL的限制,无法访问WIN2008R2的IIS站点。
-Stateful参数允许来自SQL2008R2的TCP80请求,如下图所示:
ACL生效,由于有状态,可以访问WIN2008R2的默认站点。
###########################################################################################
Hyper-V的ACL让虚拟机的网络安全多了一层保护。上述测试中,我没有添加“-timeout”参数,有需要的可以查看get-help;靠自己;不幸的是,我找不到大规模实现ACL的方法。即使VMM可以集成思科Nexus1000v等第三方产品,一方面需要额外的成本,另一方面也增加了维护成本。当然,纯用PS脚本应该是可行的,不过以后再加上图形界面的全局配置就更妙了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)