Windows Vista Firewall初探(二)Firewall Rules设置
Windows Vista Firewall初探(二)Firewall Rules设置
在Windows Vista Firewall中,所有的安全控制都是通过Rules完成的。在Vista中,你可以通过创建Firewall rules来控制自己的PC发送或者接收,来自程序、系统服务、计算机和用户的数据。应当说,Rules是非常灵活的控制手段,需要使用者掌握一定的计算机网络知识,大家在尝试的时候务必要谨慎,以避免错误的规则导致网络无法连通。
另外大家可以利用Firewall自带策略导入和导出的功能,对策略进行管理,防止意外的发生,实在不行还可以恢复默认,这一点还是比较体贴的:

下面我们来探讨一下Rules的具体功能。首先,作为Vista Firewall的一个亮点,这些Rules既可以在Inbound方向上创建,又可以在Outbound方向上创建,这一点无疑大大加强了系统安全的可管理性。

这里,我们对他们分别进行探讨:
Inbound rules
对于流行的服务器\客户机模式,我们可以将数据通信简单的视作两个过程(实际上要复杂的多),即请求和回应。大部分情况下,是由客户机向服务器发起请求,然后服务器产生回应,这样就建立起了一个连接。由于Vista是一个客户端操作系统,因此大部分时候数据通信首先都是从自己的计算机发起,Inbound方向上的数据一般都是回应。
由于Vista的Firewall是一个状态防火墙,他可以自动的对Inbound的数据流进行分析,检查数据处于何种状态,是对现有通信连接的一个回应呢,还是主动向计算机发起的访问。如果是主动对计算机的访问,那么可能就是一次网络攻击。因此对于Inbound数据有3种默认设置,分别是allow、block和block all;如果是allow将允许所有的通信进入而不论其状态;如果是block则会拒绝所有Inbound的访问请求,但是由主机发起会话的回应数据则可以正常通过;如果是block all则会彻底拒绝所有的Inbound数据。默认的时候,Inbound被设置为block,另外Core Network的有关协议默认是允许进入计算机的。
通常情况下,Inbound Rules是不需要改变的,除非你需要在Vista上架设小型的服务器,比如在Vista上安装IIS然后建立一个个人网站。建立这样一条规则是相当容易的,Vista专门提供了向导帮助你一步一步进行设置,下面我们就来看一看:
首先通过左边的面板打开Inbound Rule向导

可以看到我们可以通过多种方式控制网络连接,如果你允许了特定的Program,那么这个Program需要接受访问的所有Port都会打开;同样的如果你允许了特定的Port,那么能够使用这个Port的所有程序,都可以通过这个端口接受访问。这里,为了允许IIS服务接受访问,因为是标准协议,我们可以直接通过定义Port进行:

在这里我们需要定义特定的TCP或者UDP的端口。接下来,我们需要决定针对这个访问的操作。由于,Inbound方向默认就是Block,那么再定义任何Block规则是没有意义的,因此我们需要定义Allow规则。这里有个非常有意思的地方,对于Allow规则,我们可以要求当前允许的连接必须是安全的才能够通过,所谓安全是指必须使用IPSec来对两台计算机间的通信进行保护,同时我们还可以强制要求通信的数据必须经过了加密,关于IPSec的内容,我将在后续的文章中进行探讨。这里我们直接选择Allow允许HTTP协议进入:

接下来,我们需要定义,将Rule应用在何处,注意任何一个Rule如果没有应用,他是不产生任何作用的。Vista Firewall支持将Rule应用到某个特定接口,或者应用到特定的Profile,这里又出现一个新鲜东西,Profile可以帮助我们连接到不同场点时自动的套用不同安全策略,应该说这个设计给我们带来了很多方便,后面我会专门讨论他。

然后我们需要给这个规则定义一个名字,最好是一个清晰的名字,这样我们可以在使用Netsh命令时方便的进行查询。
OK,现在我们可以清楚的看到新增了一条规则了。

同时,大家可以直接对已有的Rule进行编辑,比方说上面的第5条规则,这条规则允许Echo Request入站,不过这条规则默认没有打开(状态是No),这时其他计算机是无法Ping通你的,编辑规则勾选Enable之后,其他计算机就可以Ping通本机了。
这里,我想通过另外一个例子说明制定Rule的强大之处,在众多的规则中,可以发现这么一条:

这是一个非常实用的工具——远程桌面,大家可以发现,在默认情况下远程桌面是被关闭的。我们可以通过Control panel下的System面板打开远程桌面配置选项:

在System面板中打开远程桌面之后,我发现Firewall中的对应Rule也变成了Enable(状态为Yes),不过比较奇怪的是,我手动关闭了这一条Rule,控制面板中并没有自动变回Don't allow(也许Control Panel可以影响Firewall,但反过来却不行)。在System面板中,对于远程桌面只能控制关闭打开,以及选择可以使用该功能的用户。但是在Firewall rule中,可以配置更多的选项。

在Rule中我们除了可以定义是否允许该连接,同时可以定义只有特定IP或者属于特定子网的计算机才可以进行远程桌面连接。比如在Remote IP Address里填上172.16.1.0/24,那么只有这个子网的计算机发起的远程桌面连接是可以进行的。假设你的计算机有多块网卡,或者需要工作在不同环境中,这时在Local IP Address中可以规定,只有当本机上配置了特定的IP地址时,远程桌面连接才能正确进行。

与此同时,你还可以要求远程桌面必须在配置了IPSec的情况下进行,在此之上可以要求IPSec必须进行加密,以及必须是从特定的计算机或者用户发起的IPSec连接。
除此之外,还可以通过Profile、网络连接等对Rule进行进一步的控制。当然,设置的越多就要求匹配的越严格,很有可能会因为过于严格的配置导致最后功能无法使用,所以在配置规则的时候必须慎重。
Outbound rules
对于Outbound Rules,由于一般访问都是客户端发起的,为了方便商业用户的使用,默认情况下所有向外的访问都是允许的,因此定义Allow规则是没有意义的。在特定情况下,可能会需要禁止一些网络连接的进行,比如不想让IE浏览器访问特定的网站。如果你的PC有多个用户在使用,而另外一个用户经常进行在线游戏,占用了过多的时间,通过定义规则你也可以让他无法访问进行游戏。
下面我们简单的看看如何设置一个出方向上的规则。同刚才类似,我们可以通过应用程序、端口、特定服务等来进行Rules的设置,这里我们使用自定义,可以看到更多的选项,然后在程序中选中IE浏览器,这样我们就可以控制IE浏览器不能访问特定的站点。

然后我们需要选择规则可以控制的计算机:

这里的Endpoint1实际上指的就是源计算机,你可以指定本计算机上特定的网络连接,如果你的计算机是其他计算机的网关,你也可以指定一个子网范围。Endpoint2是目标计算机,比如你不想让IE浏览器访问某个网站,这里就只要加入他的IP地址就可以了(遗憾的是不能直接添加域名)。然后在Action中选中Block,指定相应的Profile和Name就可以了。
对于Outbound规则的使用,我一直存在很大的疑虑,即对一个客户端操作系统,可以用Outbound规则实现什么?不同于企业级的硬件防火墙或者防火墙服务器,他们可以通过Outbound控制和深度检测(应用层检测)可以对整个网络对外的访问进行控制;而单独使用个人防火墙如果只是控制一台计算机,这个太过于复杂,如果企业通过组策略进行Rules部署,也存在很大问题,比如你无法预料客户端在计算机的什么位置安装了什么程序,需要和什么样的端口进行通信,同时这个防火墙又不是应用级的只是协议级的,因此如何管理和部署是一个需要仔细考虑的内容。
总而言之Vista的Firewall给我们带了一个强大的工具,不过在对于个人电脑而言,这个工具并没有给大家带来意料之外的安全性。通过Rules我们可以对网络连接进行十分精细的控制,但是这个功能并不适合一般的商业用户,更适合通过组策略进行管理的企业用户。当然各位电脑Fans完全可以很方便的使用这个工具,帮助自己更好的管理网络安全。