计算机基础(2)— windows 防火墙对FTP服务器、HTTP服务器的影响

window 防火墙对FTP服务器、HTTP服务器的影响

01. win7关闭防火墙功能

单击左下角的【开始】按钮 —>【控制面板】—>【系统和安全】—>【Windows 防火墙】—>【打开或关闭Windows防火墙】
这里写图片描述

小记:可通过下图路径设置允许通过防火墙的程序或功能
这里写图片描述

02. window 防火墙对FTP服务器的影响

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。

在此以一个在实际环境中比较常见的FTP部署和应用拓扑为例,来详细解读防火墙(启用了NAT功能)对FTP的影响。
(此例来源:http://www.5iadmin.com/post/919.html
(1)网络拓扑图
这里写图片描述
(2)主动模式的连接分析
如本例中网络拓扑所示,IP为192.168.1.1客户端计算机打开一个可用的TCP端口1025,经过其前端的防火墙进行NAT转换成地址1.1.1.1和端口1025后建立到目标地址为2.2.2.2的21端口的连接,然后服务器前端的防火墙将此连接信息传递到服务器172.16.6.1的21端口,成功建立FTP控制连接。

服务器则经由这个已经建立的逻辑连接通道返回数据包,与客户端进行交互。接着,客户端发出PORT指令,在指令中嵌入了地址信息(IP:192.168.1.1,Port:1026),告知服务器用于数据连接,并打开端口1026,等待服务器连接。当承载PORT指令的数据包到达客户机前端的防火墙时,由于NAT的缘故,在成功创建NAT表项,改写数据包的IP和TCP端口信息后:

如果此时防火墙不能识别并检查此连接是FTP应用,便不能对PORT指令中嵌入的地址和端口信息进行改写,则将此数据包通过先前已建立的控制连接通道传递到服务器后,服务器则打开20端口,将建立到192.168.1.1的1026端口的数据连接。

显然,此连接数据包要么被其前端的防火墙丢弃,要么在流入因特网后立刻被丢弃,永远无法到达客户端。在这种情况下,客户端一直处在控制连接阶段发送含有PORT指令的数据包,以便建立数据连接;而服务器则在打开了20端口后,一直尝试建立到客户端的数据连接,但始终收不到应答。

直接的结果就是:客户端成功连接了FTP服务器,却无法进行数据传输。这里可能还包含一个隐藏的安全威胁:如果恰巧192.168.1.1对于服务器主机来说是直接可达的,则此时服务器便将数据包发送到这台计算机,在这两台主机之间产生莫名的数据流。其他可能更隐蔽、更不好的情况,笔者不再做假设论述了。

如果此时防火墙能支持对FTP应用进行审查和跟踪,即能识别PORT指令中的内容,就将其中嵌入的地址信息改写成(IP:1.1.1.1,PORT:1026)并动态打开1026端口,并建立新的NAT转换表项,等待连接,则当服务器收到PORT指令后,打开20端口,建立到1.1.1.1上1026端口的连接,成功交互后,便能进行数据传输了。

(3)被动模式的连接分析

控制连接建立后,客户端发出的PASV指令到达服务器,服务器则随机打开一个可用的TCP端口,并将地址和端口信息(IP:172.16.6.1,Port:50000)返回给客户端,告知客户端利用这些信息进行数据连接。当包含服务器地址信息的这个数据包到达其前端的防火墙时:

如果防火墙不能识别并检查此数据包的应用层数据,无法判定它是FTP的PASV指令的返回包,并对其中嵌入的地址信息进行重写,则当此数据包返回到客户端时,客户端将随机打开端口3000,以目的地址172.16.6.1、端口50000来进行数据连接,同理,此连接数据包永远不能到达服务器端。

这种情况下,客户端将一直尝试建立数据连接,却总是不能收到应答。这里可能包含的隐藏安全威胁,如前所述。

如果防火墙能对FTP应用进行审查和跟踪,并将返回包中嵌入的服务器地址信息进行重写,即转换成(IP:2.2.2.2,Port:50000),然后建立新的NAT表项,动态打开50000端口,等待连接。则此返回包到达客户端时,客户端将随机打开端口3000,以目的地址2.2.2.2、端口50000来新建连接,便能成功建立数据连接。

根据以上分析,为成功进行FTP数据传输,主动模式下要求客户机前端的防火墙在启用NAT后能对FTP应用进行审查和跟踪,识别并改写PORT指令中的客户端地址信息;被动模式下则要求服务器前端的防火墙能改写服务器响应PASV指令后返回数据包中的服务器地址信息。

当然,为保险起见,为保证FTP应用的正常使用,建议两端的防火墙都需要支持对FTP进行识别和内容审查。

(4)网络防火墙与FTP

大多数网管设置防火墙的默认访问控制策略是:允许从内部到外部的一切流量,禁止从外部到内部的一切流量。

就FTP应用来说,为了简化防火墙策略的配置又兼顾安全策略要求,客户机选择被动模式进行数据连接较好,不需要对其前端的防火墙设置特别的访问控制策略,但要求服务器前端的防火墙能动态打开数据连接所需的随机端口;服务器端则选择主动连接较好,为允许客户端的访问,其前端防火墙的访问控制策略仅需要显式对外开放21端口即可,但需要客户机前端的防火墙能动态打开数据连接所需的端口。

从方便使用的角度考虑,既然提供FTP服务,就要配置好服务器前端的防火墙,使其访问控制策略能支持两种模式下的FTP服务正常工作。

如果客户机前端的NAT设备为路由器,不是防火墙,并不能审查和跟踪FTP应用,从前面的分析可以推断出,主动模式下肯定存在连接性问题,需要以被动方式建立数据连接才能成功使用FTP服务。

如果FTP控制端口非默认,而是定制的TCP端口(比如2121),在这种情况下,服务器前端的防火墙通过配置命令显式指示FTP的控制端口,便能进行审查和跟踪。但客户机前端的防火墙即使其能识别默认端口下的FTP应用,此时也会把控制端口非21的FTP服务当作一般的TCP应用对待,这种情形下,便不能改写主动模式下的客户端地址端口信息,导致服务器在建立数据连接时失败,但客户端使用被动连接模式能正常工作。

综上所述,客户端使用被动方式连接FTP服务器是最恰当的,能最大限度地降低连接性问题。同时降低了对客户机前端防火墙备的要求,不需要像主动方式那样动态开放允许输入的随机端口,把可能的安全威胁推给了服务器端。这或许是微软的IE浏览器(资源管理器)默认设置使用被动方式的原因。如图表2所示。另外需要注意的,在Windows命令行下,FTP默认是使用主动方式进行数据连接的。
这里写图片描述
(5)主机防火墙与FTP

如果将FTP服务器架设在Windows Server 2008上,由于它内置Windows防火墙,而且默认已经启用,所以客户端建立到这台FTP服务器的控制连接便会被封锁,此时需要在防火墙上开放对TCP 21端口的传入连接。

被动模式下,由于服务器通过控制信道将用来监听客户端请求的端口号是随机产生的,此时需要在防火墙上开放的传入连接的端口也是随机的。由于Windows防火墙不能像网络防火墙那样根据需要动态打开和关闭FTP服务要求的随机端口,所以需要静态开放全部可能的随机端口。

Windows Server 2008默认的动态端口范围是49152-65535,而Windows防火墙的例外开放规则只能针对单一端口来开放,要开放49152-65535这个范围内的一万多个端口,非常不切实际,更是会给运行FTP服务器的主机带来严重的安全威胁。

所幸的是,基于IIS7.0建立的FTP服务器允许将端口号固定在自行指定的一个范围中,如50000-50005,此时便只需要开放这一小段范围的端口即可,大大提升了安全性和配置Windows防火墙的效率。如果服务器上部署的是第三方防火墙,则需要慎重考虑如何设置使之能安全保障FTP服务的正常运行。

03. window 防火墙对http服务器的影响(部分)

(1)包过滤
根据对防火墙的定义,凡是能有效阻止网络非法连接的方式,都算防火墙。早期的防火墙一般就是利用设置的条件,监测通过的包的特征来决定放行或者阻止的,包过滤是很重要的一种特性。虽然防火墙技术发展到现在有了很多新的理念提出,但是包过滤依然是非常重要的一环,如同四层交换机首要的仍是要具备包的快速转发这样一个交换机的基本功能一样。通过包过滤,防火墙可以实现阻挡攻击,禁止外部/内部访问某些站点,限制每个ip的流量和连接数。
(2)包的透明转发
事实上,由于防火墙一般架设在提供某些服务的服务器前。如果用示意图来表示就是 Server—FireWall—Guest 。用户对服务器的访问的请求与服务器反馈给用户的信息,都需要经过防火墙的转发,因此,很多防火墙具备网关的能力。
(3)阻挡外部攻击
如果用户发送的信息是防火墙设置所不允许的,防火墙会立即将其阻断,避免其进入防火墙之后的服务器中。
(4)记录攻击
如果有必要,其实防火墙是完全可以将攻击行为都记录下来的,但是由于出于效率上的考虑,目前一般记录攻击的事情都交给IDS来完成了,

相关参考资料:
HTTP代理与防火墙
为什么http不保持与客户端的tcp连接
防火墙HTTP服务的安全性研究

猜你喜欢

转载自blog.csdn.net/yangdan1025/article/details/80934131