访问控制列表是什么

访问控制列表是什么,第1张

Hyper-V中的访问控制列表

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

在Technet上可以看到,WindowsServer2012中ACL的称谓叫做端口访问控制列表,根据源/目的地址、方向和动作(允许/拒绝)过滤规则:

本地或远程地址 方向 *** 作 公元前12-34-56-78-9A

入境的

允许

公元前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和有状态防火墙一样,其工作原理大致如下:

  • 当数据包到达防火墙时,状态检测引擎会检查连接请求是否为初始化连接(即是否携带SYN标签)。

  • 接下来,转到ACL规则的最佳匹配项。当然,不满足就扔了。如果有,请继续。

    防火墙中会有一个状态表,这个连接会作为维护的会话添加到表中。

    表中的条目大致会包含一些信息,比如源/目的地址、源/目的端口号、连接时间等。

    后续数据包再次到达时,如果不是初始化连接请求,即没有SYN,则直接与状态表中的内容进行比较。

    如果后续数据包与状态表中的信息匹配,则直接转发,不与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脚本应该是可行的,不过以后再加上图形界面的全局配置就更妙了。

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/784404.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-04
    下一篇 2022-05-04

    发表评论

    登录后才能评论

    评论列表(0条)

    保存