专门的状态检测防火墙早已成为历史,现今所有的下一代防火墙都是由状态检测防火墙演变而来,它消失在历史的舞台,它也无处不在,这就是技术的迭代更新。写到这里,让我想起了来一行禅师与一位小姑娘的对话。
为吕梁等地区用户提供了全套网页设计制作服务,及吕梁网站建设行业解决方案。主营业务为成都做网站、网站设计、吕梁网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
小姑娘问:我有一只可爱的小狗,有一天它死了,怎样才能不伤心?
一行禅师回答:你看到天边美丽的云朵,你好喜欢这朵云,就像喜欢你的小狗一样,突然这朵云不见了,你以为云死了,云朵去哪儿了?如果你花时间想想,你会看到云没有死,没有消失,只是化为了雨水,看到雨水,你就会看到那朵云;当你喝茶时看到热腾腾的水汽,你也会看到云,云并没有消失,它以新的形式活着,小狗也一样,如果你看的深一点,你就会看到它的新形体。
当我们学某种技能的时候,有时就会产生一些“火花”,技术也可以上升至哲学层面,比如LINUX系统的设计就有非常明确的哲学思想。有时相近的技术之间也会产生一些“火花”,比如以前无论是听老师说,还是自己看书,其实对单臂路由和vlanif的理解都比较浅,但是自己还以为自己是真的懂了,直到最近,在给同学写答案讲解时才发现自己其实并没有真正理解,但当我仔细想想的时候,就突然想通了,认为自己明白了并不是真正的明白,只有能说明白,写明白才是真正的明白,那一瞬间的感觉真是很奇妙,我想这就是很多大神坚持写博客的原因。
好了,言归正传,下面我们就正儿八经地说说状态检测防火墙的那些事儿!
状态检测是防火墙的一个功能,这个功能非常重要,它是在防火墙在发展过程当中的里程碑,此后的防火墙都集成了此功能。我们先分析没有状态检测功能的防火墙是怎样工作的,然后再分析有了状态检测功能的防火墙是怎样工作的.
没有状态检测防火墙的时期
如上图所示,PC和WEB服务器位于不同的网络,分别与防火墙相连,PC与WEB服务器之间的通信受到防火墙的控制。
当PC需要访问WEB服务器网页时,在防火墙上必须配置下表当中列出的一条规则:允许PC访问访问WEB服务器的报文通过。这里说的规则其实就是指防火墙上的安全策略。只不过本节重点讲解状态检测和会话机制,安全策略不是重点,所以通过规则来简化描述。关于安全策略的内容我们将在后面的文章当中讲解。
编号 | 源地址 | 源端口 | 目的地址 | 目的端口 | 动作 |
1 | 192.168.0.1 | ANY | 172.16.0.1 | 80 | 允许通过 |
在这条规则当中,源端口处的ANY表示任意端口,这是因为PC在访问WEB的时候端口是操作系统随机指定的,并不是确定的,所以这里设定为任意端口。
配置了这条规则之后,PC发出的报文就可以顺利的通过防火墙,到达WEB服务器,然后WEB服务器会向PC发送回应报文,这个报文也要穿过防火墙,在状态检测防火墙出现之前,包过滤防火墙(包过滤防火墙在监制检测防火墙之前)还必须配置下表当中的规则,允许反方向的报文通过防火墙。
编号 | 源地址 | 源端口 | 目的地址 | 目的端口 | 动作 |
2 | 172.16.0.1 | 80 | 192.168.0.1 | any | 允许通过 |
在规则2当中,目的端口也没有设定为任意端口,因为我们无法确定PC访问WEB到底用的哪个端口,要想使得WEB服务器的回应报文顺利通过防火墙到达PC,只能将规则2当中的目的端口设定为任意端口。
任意端口其实也就是所有端口,这样会有很大的安全隐患,外部的恶意***者伪装成WEB服务器,就可以畅通无阻的穿过防火墙,PC将会面临严重的安全风险。
我们好好看一下,其实造成安全隐患的原因就是防火墙不知道PC访问WEB服务器的源端口到底是哪个?为了保证通信,不得以放行了在入方向的任意端口。那么我们可不可以想办法让防火墙知道PC访问WEB服务器用的到底是哪个端口,然后让WEB服务器的回应包回复之前自动添加规则放行源IP是PC出方向的目标IP,源端口是PC的目的端口,目标端口就是PC的源端口。当然可以实现,其实状态监测机制就是这样实现的。那么我们下面再看一看有了状态检测机制之后,两者的访问过程是怎样的?
使用状态检测防火墙之后
还是以上面的网络环境为例,首先还是需要在防火墙设定规则1,允许PC访问WEB服务器的报文通过。当报文到达防火墙之后,防火墙允许报文通过,同时还会针对PC访问WEB服务器的这个行为建立会话,会话当中包含PC发出的报文信息如地址和端口等。
当WEB服务器回应PC的报文到达防火墙后,防火墙会把报文中的信息与会话中的信息进行比对。如果发现报文当中的信息与会话当中的信息相匹配,并且该报文符合HTTP协议规定的规范,则认为这个报文属于PC访问WEB服务器行为的后续回应报文,直接允许这个报文通过,如下图所示:
为了便于说明,在本节当中我们将PC和WEB服务器与防火墙之间直接相连。实际环境当中,如果PC、WEB服务器与防火墙之间跨网络相连,则必须要防火墙上配置路由,保证PC和WEB服务器两者之间相互路由可达。即使WEB服务器回应给PC的报文已经匹配了会话,防火墙也必须存在去往PC的的路由,这样才能保证回应报文正常发送到PC。
恶意***即使伪装成WEB服务器向PC发起访问,由于这类报文不属于PC访问WEB服务器行为的后续报文,防火墙就不会允许这些报文通过,这样即保证了PC可以正常访问WEB服务器,也避免了大范围开放端口带来的风险。
总结一下,在状态检测防火墙出现之前,包过滤防火墙只会根据设定好的静态规则为判断是否允许报文通过,它认为报文都是无状态的孤立个体,不关注报文产生的前因后果,这就要求包过滤防火墙都必须针对每一个方向的报文都配置一条规则,转发效率低而且容易带来安全风险。
而状态检测防火墙的出现正好弥补了包过滤防火墙这个缺陷。状态检测防火墙使用基于连接状态的检测机制,将通信双方之间交互的属于同一连接的所有报文都作为整体的数据流来对待。在状态状态防火墙看来,同一个数据流内的报文不再是孤立的个体,而是存在联系的。例如,为数据流的第一个报文建立会话,数据流内的后续报文就会直接匹配会话转发,不需要再进行规则的检测,提高了转发效率。
包过滤防火墙认为数据包之间是割裂的个体,更网络更容易受到***。而状态监测防火墙认为报文与报文之间是存在联系的,从而寻求数据包之间的“合作发展”,最后实现高效率、高安全、可持续发展,现在也的确是状态监测防火墙的天下了,但并不是说包过滤防火墙就不好,它还是有它的“用武之地”的,我们后面再细说。
在当今社会生活,我们也像防火墙一样恰当地追求合作,不应该一味追求独立,将自己封闭。那么到底是追求是独立好?还是追求合作好?这个问题类似于能力重要还是人脉重要?理想重要还是财富重要?我们的人生是有时间概念的,我们只需要把两者放置到合适的时间段,比如我们把独立放置到比较靠前的时间段,而把合作放置独立的时间段之后,亦或者独立和合作并行也未尝不可,一个有心人是可以平衡的很好的。写到最后,中庸又出现了,我认为用中庸去结尾很合适,因为根本没有绝对答案,人生也并不是非黑即白,检测一流智力的标准就是大脑当中同时存在两种截然相反的想法,还能维持正常行事的能力,这不是中庸又是什么呢?
老罗英语的LOG当中,一个眼睛代表理想,另一个眼睛代表财富,在理想和财富之间是一个微笑。