随着各类网络病毒及攻击大量出现,内部网络及数据面临的威胁日益严重。这些病毒、网络攻击第一步总是通过扫描发现和利用各类计算机端口,从而达到入侵的目的。对于网络端口的防护手段很多,常用的是防火墙的包过滤策略。本文主要是针对没有防火墙的网络节点,探讨在路由器中利用ACL established参数实现端口防护。
笔者所在公司为大型国企,网络庞大,各省、地市均有自身需要保护的数据资源。现实需求是,需要内部对外访问时候,无任何限制。而外部分公司对内部的访问,则要受到限制,不能无条件的任意访问。构造网络拓扑图,如图1所示。
图1 网络拓扑示意图
笔者所在公司为A公司,上级公司为B公司。A能够访问B公司网络(数据中心、服务器所在区域,A公司的业务要访问B公司),而作为A公司来说,不想B公司无条件访问A公司。也就是说A访问B,但B不能访问A,要求A到B的单向访问控制。
ACL(Access Control List)是指应用到路由器或者三层交换机接口上的指令列表,通畅成为访问控制列表,是用来实现流识别功能的。可以分为基本ACL、高级ACL、二层 ACL。
rule1 deny ipsource 10.1.1.00.0.0.255
然后将该ACL应用在R1连接A公司交换机的GE 0/0/0口的outbound方向。按照理解,对外访问不做任何限制,而仅阻断掉来自B公司源地址的访问。但是这样配置之后,发现A公司的所有业务全部中断了!笔者赶紧进行回退,然后分析原因。
数据流假如从A发出,那么A作为源地址,第一帧数据可以发现B,但是返回数据包时,B作为了源地址,A作为了目的地址,当返回数据包进入R1时,被R1接口GE0/0/1下的ACL策略阻断了。其实这个可以根据根据TCP的三次握手连接很好的解释。
A公司作为客户端,发送连接请求报文SYN到B公司服务器端,第一次握手;
B服务器接受连接后,回复ACK报文,并为这次连接分配资源,第二次握手;但是这个报文,A是收不到的,被笔者写的ACL阻断了。
这一步后,A收不到B发来的授予连接信息了,也就是SYN+ACK的信息收不到了。也就无法进行第三次握手,无法完成A向B发ACK报文。
因此整个TCP连接无法正常建立,导致了笔者所在的A公司业务全部中断。
Boosting算法问题在于更多关注不能正确分类样本数据,对于边界样本会导致权重失衡,产生“退化问题”。在Boosting基础上使用指数权重产生用于二值分类的AdaBoost算法[28,29]。
分析出原因后,笔者就针对此向解决办法。主要问题出在TCP的第二次握手上,那么如何让在这个包通过,成为解决问题的关键。
要识别出这个包,就得在这个数据包的包头上做标记进行区分。这里established参数很好的解决了这个问题。在华三/华为的网络设备中,ACL有一个不起眼的属性参数:established。笔者查阅资料,得知established参数就是在TCP连接中的ACK位、
图2 TCP设备中ACL配置
笔者所在公司某个节点路由器的配置如图2所示。RST位进行标记,从而识别出第二次握手的返回包。那么,笔者就将该识别的数据包进行放行,重新设计ACL:
rule 1 permit tcp source 10.1.1.0 0.0.0.255 established
即允许带有标志位的10.1.1.0/24的网络段。
这样之后,从A公司发出的第一次握手数据包就会匹配 rule 1,对 ACK和RST标记为1,而第二次握手的返回报中,由于ACK和RST都为1,即允许通过。
最后完整ACL设计如下:
acl number 3018
rule 1 permit tcp source 10.1.1.0 0.0.0.255 established
rule 999 deny tcp any
最后一条规则是防止其他未允许的其他类似B的公司数据包访问A公司。之后在R1的GE 0/0/1口的outbond方向下应用。
packet-filter 3018 outbound
在配置完成后,笔者进行效果验证。
从笔者所在的A公司访问B公司,所有业务正常。从B公司访问A公司,不能访问。达到了当初预期目标。
这样做的好处在哪里,笔者在此进行总结:
1.能对A公司内部网络进行有效防护。因无法进行TCP连接,很多暴力的扫描、非法访问、病毒传播都无法从外部进入内部网络。
2.不影响A公司业务。对于需要访问外部公司的业务,不受影响。
这样的好处,类似于一个公司内网可以访问外网,但是外网无法访问到公司内网。所以在当今网络安全日益严重的今天,这样的应用场景需求很多。
本文仅采用了一个实例,说明了ACL established 的应用场景,及配置方法。对于大型公司网络段较多,业务较多的场景,需要梳理出业务需求段。
有时既存在A到B的主动访问,还有B到A的主动访问。对于A到B的主动访问,可通过established参数实现返回包通过。而对于B到A的主动访问,直接用不带参数的permit方式允许通过,并将该规则置前,因为ACL是从上到下顺序执行的。
Established参数仅仅对TCP连接过滤,无法过滤UDP协议,因此假如有病毒是通过UDP协议端口传播,只能通过deny源地址进行,无法使用本文所述方法。