码迷,mamicode.com
首页 > 其他好文 > 详细

Hyper-V中的访问控制列表

时间:2014-08-11 15:15:53      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:hyper-v 访问控制列表 stateful acl

微软在Windows Server 2012中对虚拟交换机做了很多的改进和增强,其中不但增加了诸如RSS、dVMQ、端口映射以及支持PVLAN等技术,还提供了非常实用的访问控制列表(ACL)功能。

在Technet中可以查看到Windows Server 2012中对于ACL的称谓叫做Port Access Control Lists,它是基于源/目的地址、方向和动作(允许/拒绝)来进行规则筛选的:

Local or Remote Address Direction Action

12-34-56-78-9A-BC

Inbound

Allow

12-34-56-78-9A-BC

Outbound

Allow

FF-FF-FF-FF-FF-FF

Inbound

Allow

Any

Inbound

Deny

Any

Outbound

Deny

通过上面的列表可以看到在2012的ACL功能当中是支持IP与MAC地址的,并且像“Any”这类通配指令也是支持的,所以对于熟悉主流网络设备的童鞋来讲不需要适应过程,可谓是极易于上手的。

那么在Windows Server 2012R2中,ACL功能又得到了加强,被称为“Extended Port Access Control Lists”即扩展端口访问控制列表,不难看出这就好比网络设备上的标准ACL与扩展ACL一样,后者在原有基础上增加支持源/目的端口、协议、权重等,下面就实际演示一下Windows Server操作系统中的ACL功能:

##########################################################################################

演示环境:

主机:Windows 8.1

虚拟机:Windows Server 2008R2 SP1 Standard


因为ACL功能对操作系统版本没有过分的要求,它是属于Hypervisor层的技术,所以我就用自己的笔记本电脑(Windows8.1)启用Hyper-V功能即可,如下图所示我准备了两台测试虚机,一台叫做SQL2008R2(运行SQL2008R2),另一台叫做WIN2008R2(运行IIS7)

bubuko.com,布布扣

在开始配置ACL之前,我把两台虚拟机的防火墙都关闭,其中SQL2008R2的IP为192.168.10.12,它是能够PING通WIN2008R2(192.168.10.11)的,如下图:

bubuko.com,布布扣

此外可以看到SQL2008R2这台虚机当前TCP 1433端口处于监听状态

bubuko.com,布布扣

回到WIN2008R2这台机器上,此时也是能够PING通192.168.10.12(SQL2008R2)的

bubuko.com,布布扣

并且已经安装了Web Server角色,本机默认站点可以正常访问

bubuko.com,布布扣

##########################################################################################

测试环境准备好之后,来看一下主机上的PowerShell,主要筛选一下Hyper-V Module下的ACL相关命令,可以看到本文前面提到过的“标准ACL”与“扩展ACL”,如下图:

bubuko.com,布布扣

接着就来试一下标准ACL的效果,实用下面的命令对虚机WIN2008R2配置一条ACL,针对目的地址192.168.10.12的出方向进行Deny操作。

bubuko.com,布布扣

配置生效后可以通过Get命令查询已存在的ACL,如下图所示:

bubuko.com,布布扣

此时回到WIN2008R2再去PING SQL2008R2时已经不可达了。

bubuko.com,布布扣

接着删掉刚刚生效的ACL

bubuko.com,布布扣

再去WIN2008R2重新PING SQL2008R2,通信又恢复正常了。

bubuko.com,布布扣

此外除了IP意外,还可以使用MAC地址作为筛选条件,如下图所示,还是对于WIN2008R2这台虚机,使用MAC地址并拒绝入方向流量。

bubuko.com,布布扣

来到SQL2008R2上去PING WIN2008R2可以看到ACL生效了。

bubuko.com,布布扣

##########################################################################################

上面的演示主要是针对Windows Server 2012中的“标准ACL”进行的操作,而在R2当中,“扩展ACL”又分为两类,在Technet中对此介绍为Detailed ACL rules以及Stateful ACL rules;那么它们有什么区别呢?众所周知,在很多会话类的通信中,我们需要对于进出方向都做规定才可以保证链接通畅,举个例子,某台客户端电脑要访问外网的一台Web Server,那么为了安全考虑,管理员首先要permit这台客户端电脑出方向的请求,比如允许它访问外网80端口的tcp协议,那么当Web Server收到访问请求后,需要返回给客户端电脑相应的信息,此时就需要管理员permit客户端本地端口的入方向请求。OK,入方向请求没问题,关键是本地端口是多少?开启1024~5000端口?别闹。。。。


到这一步就会发现即便是扩展ACL也不太好实现我们的需求,那么怎么办?对于这些特定场景的需求,特别是有状态类会话怎么办?于是乎变有了上面提到的Statful ACL rules。


顾名思义,Statful ACL就跟有状态类防火墙(Stateful Firewall)是一样的,究其工作原理大致如下:

  1.  数据流量到了防火墙这里时,状态检测引擎会查看该连接请求是否为一个初始化连接(即是否携带SYN标记)

  2. 接下来就去与ACL规则最比对,当然如果不满足的就丢掉了,满足的话就继续

  3. 防火墙内会有一个状态表,并把这个连接作为一条会话添加进表中进行维护

  4. 表内条目大致会包括一些源/目的地址、源/目的端口号、连接时间等信息

  5. 后续数据包再到达时,如果不是初始化连接请求,即没有SYN,则直接去跟状态表中的内容最比对

  6. 如果后续数据包与状态表中信息匹配,则直接转发,不需要再去与ACL中的规则做比对,如果不属于任何会话则丢弃

  7. 此外会话还包含一个Time Out值,当超过这个保活时间后,会话会被删除

##########################################################################################

下面来看一下Statful ACL的特别之处,下图中是一条没有附加“-Stateful”参数的ACL,针对于虚机SQL2008R2的本地1433端口入方向进行允许,另外还加了一条“-Weight”权重值参数,该参数值越大越先被执行,因为Hyper-V内的ACL并没有一条默认的规则,例如deny any any之类的,所以Weight值会被用来与其他ACL配合使用。

bubuko.com,布布扣

仅仅配置了这条ACL后,SQL2008R2这台机器的1433端口还是不能被WIN2008R2访问的,如下图所示;除非我再加一条针对WIN2008R2入方向的ACL,但那样就比较繁琐了

bubuko.com,布布扣

接着再试一下Stateful ACL的效果,同样是刚才的命令,只不过在后面追加了一个“-Stateful”并赋予$true,如下图:

bubuko.com,布布扣

由于Stateful ACL会自动打开返回流量的端口,并根据timeout值维护这个会话,因此WIN2008R2可以telnet到SQL2008R2的1433端口了。

bubuko.com,布布扣

同样对于Web访问类请求也适用,下图中SQL2008R2受到ACL的限制是无法访问WIN2008R2的IIS站点的。

bubuko.com,布布扣

通过-Stateful参数允许SQL2008R2出方向的TCP80请求,如下图:

bubuko.com,布布扣

ACL生效,拖Stateful的福,可以访问WIN2008R2的默认站点了。

bubuko.com,布布扣

###########################################################################################

Hyper-V的ACL使虚拟机的网络安全性得到了多一层的保护,在上面的测试中我没有添加“-timeout”参数,有需要的筒子可以自行查看get-help;不过遗憾的是,我没有找到在大范围环境中批量执行ACL的途径,纵然VMM可以集成Cisco Nexus 1000v之类的第三方产品,但是一方面需要投入额外成本,另一方面又增加了维护开销;当然如果纯粹使用PS脚本应该也是可行的,但要是能在今后增加图形化界面的全局配置想必是极好的。

本文出自 “技术不宅” 博客,请务必保留此出处http://maomaostyle.blog.51cto.com/2220531/1538554

Hyper-V中的访问控制列表,布布扣,bubuko.com

Hyper-V中的访问控制列表

标签:hyper-v 访问控制列表 stateful acl

原文地址:http://maomaostyle.blog.51cto.com/2220531/1538554

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!