一、 初识网络防火墙1.1、防火墙的基本功能我们这里说的防火墙(Firewall)是一种网络设备,它在网络中起到两个最基本的功能:
· 划分网络的边界
· 加固内网的安全
**划分网络的边界**防火墙设备的其中一个功能,就是划分网络的边界,严格地将网络分为"外网"和"内网"。"外网"则是防火墙认为的——不安全的网络,不受信任的网络"内网"则是防火墙认为的——安全的网络,受信任的网络你可以这么打一个比喻:如果把网络比作一个城市,那么"内网"就是你的小区内部,"外网"就是城市道路小区的围墙就相当于是防火墙,起到了一个隔离"内部环境"和"外部环境"的功能
并且呢,任何一个防火墙设备,在设计上就会强制把"内部"和"外部"的概念。应用在接口上从内部访问外部默认情况下是允许的,但是从外部访问内部默认情况下是禁止的(需要设置相关策略才能从外部到内部访问。)这种情况就像你到任何一个小区或者单位,你从里面出来的时候门卫一般不管你,但是如果想从外面进去,那可就不是那么回事了哦。
**加固网络的安全**刚才说到了防火墙的其中一个功能,就是网络流量流向的问题(内到外可以访问,外到内默认不能访问),这就从一定程度上加强了网络的安全性,那就是:"内网属于私有环境,外人非请莫入!"另外,防火墙还能从另外一些方面来加固内部网络的安全**1、隐藏内部的网络拓扑**这种情况用于互联网防火墙。因为内网一般都会使用私有IP地址,而互联网是Internet的IP地址。由于在IPv4环境下IP地址不足,内部使用大量的私有地址,转换到外部少量的Internet地址,这样的话,外部网络就不会了解到内部网络的路由,也就没法了解到内部网络的拓扑了。同时,防火墙上还会使用NAT技术,将内部的服务器映射到外部,所以从外部访问服务器的时候只能了解到映射后的外部地址,根本不会了解到映射前的内部地址。
**2、带有安全检测防御**这种功能并不是每一款防火墙都有安全检测系统(intrusion detection system,简称"IDS")是一种对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。它与其他网络安全设备的不同之处便在于,IDS是一种积极主动的安全防护技术。 **3、会话日志功能**防火墙都有"会话记录"功能,每一个数据包在经过防火墙之后,都可以在防火墙的会话表中查询到历史访问记录。比如10.112.100.101的主机在访问外部网络的时候,只要它访问成功,都会被防火墙所记录下来。如果是外部主机访问内部呢?当然,在你的内部网络遭受不安全以后,可以在防火墙上查到从外到内,到底是哪个IP地址非法闯入了。如果确实有外部非法闯入内部的访问,也可以追查防火墙的安全策略设置,看看哪一条安全策略的设置有问题。虽然这看起来是一种"亡羊补牢"的做法,但是能查到危害源,总比你什么都查不到要好啊。1.2、防火墙在企业环境的应用1、互连网出口设备这估计是大家最能想到的一种用途吧。因为Internet就是一个最典型的"外网",当企业网络接入Internet的时候,为了保证内部网络不受来自外部的威胁侵害,就会在互联网出口的位置部署防火墙。
2、分支机构接骨干网作边界设备在电力行业、金融行业等大型跨地,跨省的企业时,为了企业中各个省级、地市级单位的内部数据通信通常都会自建一张骨干网络。在每个省级、地市级单位办公网络接入骨干网时,就可以在网络接入点部署防火墙,进一步提高每个单位的办公网络安全性。
3、数据中心内保护服务器数据中心(DataCenter)是为企业存放重要数据资料的,同时数据中心内会放置各种各样功能不一的服务器。想要保证数据的安全,首先就要保证这些服务器的安全。物理上的安全嘛,你就防火防水防贼呗,应用上的安全,找杀毒软件嘛;但是在网络上防止,防止非授权人员操作服务器,就需要到防火墙来发挥作用了。一般在传统的数据中心内,会根据不同的功能来决定服务器的分区,然后在每个分区和核心设备的连接处部署防火墙。
## 1.3、并不是任何场合都适合部署防火墙谁都知道安全性和方便性有时候会有那么一些冲突。你去坐飞机,会经过非常严格的安检,没个十几二十分钟完成不了;但是在坐高铁,火车或者大巴的时候,安检可能就没那么严格了。防火墙作为一种网络安全设备,部署在网络中会对穿过防火墙的数据包进行拦截,然后确定它符合策略要求以后才会放行。这会对网络传输效率造成一定影响。所以在一些十几个人的小公司或者是网络功能单一的环境(网络就是用来上网用的)是不会使用防火墙的。加上企业级防火墙价格一般比较高(十几万到一百多万不等的价格),在那些以节约成本为先的偏小型私人企业一般不会使用防火墙。所以防火墙一般用于数据中心,大型企业总部,国有企业省级、地区级办公机构,带有服务器区域的网络环境或机密性较高的单位。二、防火墙的生厂商根据防火墙的部署方式,防火墙分为硬件防火墙和软件防火墙两种。硬件防火墙:防火墙是一台网络设备,独立上架安装使用。下图为大家展示了思科的硬件防火墙,Cisco ASA和Cisco Firepower
软件防火墙:用一台多网卡服务器,安装windows或linux操作系统,再在操作系统上安装与防火墙相关的功能软件。下图为大家展示Microsoft ISA正在发布Exchange服务器
硬件防火墙的生产商很多,但是在国内大多数都是用以下几种产品:
捷哥列出这些生产商也只是其中一部分,上述厂商的防火墙捷哥都接触过,但是经常遇到的还是Cisco ASA,Juniper SRX,华为USG,天融信NGFW,迪普DPTec-FW1000这些设备。这里捷哥本人也不敢乱说谁好谁坏吧,只是经过一段时间的观察,发现了这样一个小小规律:一般来说Cisco ASA和Juniper SRX,华为USG,H3C FW,迪普FW系列用作内网防火墙较多,而天融信和深信服系列更多用于互联网出口。软件防火墙一般都是由软件公司生产:Windows 自带的防火墙(一般Windows都作终端使用,很少让其作为路由设备转发数据)Linux自带的防火墙(Netfilter,管理工具叫IPtables)ISA/TMG(微软软件)Squid(开源软件,更多的情况用于代理服务器)## 三、防火墙的分类防火墙按照功能和级别的不同,一般分类这么三类:* 包过滤型防火墙* 状态检测型防火墙* 代理型防火墙## 3.1、包过滤型防火墙这种防火墙只能实现最基础的包过滤功能,按照既定的访问控制列表对数据包的三、四层信息进行控制,详细一点就是:三层信息:源IP地址,目标IP地址四层信息:源端口,目标端口这种情况其实用一个路由器或者三层交换机,配置ACL就能实现只有符合了条件的数据包才能被放行,不符合条件的数据包无论如何都不会被放行。但是包过滤型防火墙的性质就是那么"教条"与"顽固不化"!
如果是使用一个路由器,强行设置"从外部到内部拒绝所有流量"会有什么后果呢?
当然,外部的流量全部被ACL阻止了,但是这么设置在某些场合会造成网络通信故障:比如内部的主机访问外部TCP协议的服务,需要经过三次握手,其中第二次握手的流量就是从外部到内部的,如果单使用一个路由器的ACL实现包过滤,并且在外部接口配置拒绝所有流量进入,就会导致三次握手无法完成,从而内部主机访问不到外部的服务。
第一次握手,内部主机10.112.100.101使用随机端口10025访问外部的WebServer`200.100.1.2的TCP 80`三层信息源IP地址:10.112.100.101目标IP地址:200.100.1.2源端口:TCP 10025目标端口:TCP 80由于内部接口放行所有流量,所以这个第一次握手的流量被放行了
第二次握手,外部主机200.100.1.2的被动地TCP 80发出相应,将第二次握手的数据包传回到10.112.100.101的TCP 10025端口上,此时三层信息源IP地址:200.100.1.2目标IP地址:10.112.100.101源端口:TCP 80目标端口:TCP 10025但是外部接口拒绝了所有流量的进入,所以这个第二次握手的包无法送到内部主机,导致三次握手无法完成。从而主机就没法访问外部Web Server了
由于TCP连接时,内部主机在发起第一次握手时总是以随机端口进行连接,所以你在外部也没法针对相应的端口进行流量的放行,但是如果把外部接口也改为permit ip any any,又会导致内部主机容易受到外部的侵害。
说到这里,捷哥想说一句题外话曾经有一个学员网友问了我一个问题,说是在企业部署了一台Cisco 6509交换机作为汇聚设备。但是他又想实现这样的一个功能,看图吧:
网友的意思是,想在Gi 2/1接口上做一些控制,只允许来自核心方面的流量访问办公区域的一些特定端口,其他的全部禁止访问,问我在这个Cisco 6509上怎么做。我告诉他的是:"如果设备是交换机的话,你这个操作没法做。因为办公区的电脑访问外网或者内网服务器的时候,会打开一些随机端口,你就没法知道这些随机端口是什么。如果你随便在Gi 2/1接口上去做限制,会导致你办公区域的电脑根本没法上网。"## 3.2、状态检测型防火墙状态检测型防火墙就是为了解决"傻×"的包过滤型防火墙而存在的。它比包过滤型防火墙还多了一层"状态检测"功能。状态化检测型防火墙可以识别出主动流量和被动流量,如果主动流量是被允许的,那么被动流量也是被允许的。例如TCP的三次握手中,第一次流量是主动流量,从内到外,第二次流量就是从外到内的被动流量,这可以被状态监测型防火墙识别出并且放行。状态监测型防火墙会有一张"连接表",里面记录合法流量的信息。当被动流量弹回时,防火墙就会检查"连接表",只要在"连接表"中查到匹配的记录,就会放行这个流量
第一次握手,内部主机10.112.100.101使用随机端口10025访问外部的WebServer200.100.1.2的TCP 80三层信息源IP地址:10.112.100.101目标IP地址:200.100.1.2源端口:TCP 10025目标端口:TCP 80由于内部接口放行所有流量,所以这个第一次握手的流量被放行了但此时,防火墙在连接表中生成了如下内容:
第二次握手时,是外部主机被动弹回的流量源地址(外部):200.100.1.2源端口(外部):TCP 80目标地址(内部):10.112.100.101目标端口(内部):TCP 10025此时,防火墙会暂时拦截流量,然后检查连接表,看看内部主机的IP和端口,外部主机的IP和端口是否与连接表中记录的相同,如果相同,它就会放行这个流量。当然,形成连接表记录的先决条件是:主动发起访问一端的流量要符合防火墙的安全策略要求,也就是说内部网络向外部网络不被明确拒绝,外部网络访问内部网络被明确允许。只有连接表内记录了内外主机和IP端口信息的,被动弹回的流量才会被防火墙放行。如果是外部主动发起的流量,而防火墙又没有允许它访问内部,由于是外部主动发起的流量,所以防火墙的连接表里没有相应的信息,这就会遭到防火墙的拒绝。从而达到既保证了内部到外部的正常通信,又使得内部主机不受到外部的侵犯,这就是状态检测型防火墙的魅力所在。目前主流的硬件防火墙几乎都支持状态监测功能。## 3.3、代理型防火墙代理型防火墙一般是一个安装在多网卡服务器上的软件,拥有状态监测的功能,但是多了一项功能就是代理服务器功能。一般有正向代理和反向代理两种功能:**正向代理**正向代理用于内部主机访问Internet服务器的时候,特别是Web服务的时候很管用。当内部主机第一次访问外部的Web服务器时,代理服务器会将访问后的内容放在自己的"高速缓存"中,当内部主机再次访问该Web服务器的时候,如果有相同的内容,代理服务器就会将这个访问定位到自己的高速缓存,从而提升内部主机的访问速度。
代理型防火墙的代理功能可以在内部主机访问Web数据的时候,起到一个缓存加速的情况。但是这种防火墙因为是安装在一台服务器上的软件,其性能受到服务器本身的限制。所以对于一些实时性的数据,或者是从网上下载文件到本地,就可能会被防火墙拖慢网速。目前代理型防火墙在企业一般很少用于正向代理或者是出口网关设备,倒是反向代理更多。**反向代理**反向代理和正向代理有点类似,只不过访问的方向是外部到内部。当外部主机要访问内部发布的某个服务器的时候,不会让它把访问目标定位到内部服务器上,而是反向代理设备上。反向代理设备会从真实的服务器上抽取数据到自己的缓存中,起到保护真实服务器的功能。反向代理一般单独部署,不和状态检测防火墙部署在一起,各自实现各自的功能。
反向代理在一定程度上可以保护内部的真实服务器,即使遭到危险,也是反向代理被危及被破坏的数据也是缓存。并且反向代理服务器上可能会记录对方的危险方式,找出网络系统中存在的缺陷,提醒管理员即使封阻漏洞,修复缺陷。
# 四、关于防火墙的学习方法## 4.1、理解原理,掌握技巧(了解原理,查阅手册)因为防火墙生产厂商比较多,把每个厂商的防火墙的配置命令和设置方式都拿出来一个一个的说,这个非常不现实。因为在企业内部的防火墙都是生产环境,我不可能那生产环境的防火墙来给大家做试验品,一来这可能导致网络故障(责任我背不起啊!)二来我和客户签了保密协议,出于职业道德我也不能把这些配置都展示给大家。进口防火墙产品因为是全英文的手册复杂,但是有着一套比较完善的模拟器系统,可以帮助大家理解防火墙的特性和配置方式,所以,捷哥在这个专栏里面,着重用两款进口产品(Cisco和Juniper)为大家展示防火墙特性的一些配置及验证。国内的防火墙产品,捷哥也会在专栏的文章里面体现到。因为国内的产品缺少模拟器,而且实际环境多半是Web界面进行配置,所以对于国内的防火墙产品捷哥重点是教大家如何去查阅手册(国内产品一定是全中文手册,非常容易看懂)。## 2、抓住重点,切勿混淆这一点是针对于学过路由交换的读者说的。曾经捷哥在51cto学院出了一个跟Juniper相关的视频课程,结果被人打了差评,原因就是我没有讲在防火墙上如何配置OSPF、BGP这些路由协议。在这里我必须给大家强调一下,因为防火墙从最初的设计上来讲,就是为了作为网络边界设备和安全设备。防火墙的工作重点是在处理包过滤及状态化会话,以及兼顾一些安全检测的功能,对路由处理能力并不强。在实际的企业部署中,一般是不会在防火墙上去跑动态路由的。所以,学习防火墙,重点技术就是在安全策略,NAT,以及一些安全的配置还有防火墙双机热备上面。## 3、经验只可借鉴不可照搬防火墙位于网络的关键位置,特别是数据中心的防火墙。一般来说,在企业中运维防火墙的话,防火墙的变更操作会很多,一般都会在安全策略,ACL的地方进行变更操作。所以要玩好防火墙,技术之外的技巧,例如脚本技巧,文本技巧要大于技术之内。捷哥会给大家介绍一些如何去对一些陌生的防火墙厂商的快速上手技巧,大家可以灵活借鉴,但不可生搬硬套哦。还有呢,防火墙很多时候查看多余配置。对于进口防火墙来说,如何在全英文的界面下抓住重点,从查看到的内容中找到关键信息和关键参数,这也是需要一点点小小的技巧的。当然啦,大家不要只盯着configure,学会show和display也同样重要。