2014年(7)
分类: 网络与安全
2014-03-21 11:44:51
防火墙策略会有哪些问题,首先得说什么样的策略才是安全上认可的策略,不外乎以下几点:
1. 策略配置合理。合理就是源地址、目的地址、开放服务都是最小化的,如果做不到,至少也要目的地址、开放服务是最小化的。
2. 策略表尽量简洁和简短,策略越多越难维护,需要的时候将多条策略合并到一条,需要和第一条综合考虑。
3. 策略顺序的重要性。防火墙按照从上到下的顺序进行策略匹配,所以优先将流量大的策略和延时敏感的应用策略放在前面。比如领导们上网的策略不妨单独放一条在前面,你懂的。
大概就以上几点,在实际配置时以上几点需要按照实际情况再进行拆分、合并、调整顺序,灵活应对。那么为什么不能一开始就配置好合理的策略呢,原因就多了,比如:
ü 一开始就没有考虑这个问题;
ü 配置人员没有经验,拿不准,开放了双向策略等;
ü 人员变动造成的;
ü 临时策略
。。。。。。
好了,问题已经存在了,现在是我们接手了,我们主要关注怎么去梳理策略,达到我们的要求。前面说的三点,最重要是达到第一步的要求:合理,也就是最小化,起码要做到目的地址、开放服务的最小化,下面就针对Juniper防火墙详细介绍我们的梳理方法。
认识上,要尽可能利用现有策略,而不是妄想抛弃现有策略重新搭建,除非是一个新墙或者允许你去做这种尝试的情况下。基于这个认识,我们需要:
1. 需要获得尽可能多的信息:
a) 确定当前使用了哪些zone,每个zone分配的业务区域的IP范围;
b) 最好了解相关业务区域里面有哪些IP及其用途;
c) 如果能有业务流程的相关资料最好不过;
d) 整个网络的划分;
2. 可以利用策略匹配的日志记录,来分析策略的有效性,所以需要开启所有策略的log记录。
3. 分析一段时间内的日志,在分析过程中进行策略调整,通过在原策略上拆分出符合要求的策略,继续监控原策略,当一定时间该策略没有日志的时候,可以认为该策略无用。
首先要看是否有在上面的策略覆盖下面策略的情况,这种情况下,流量不会匹配下面的策略,需要我们调整策略的顺序(覆盖的情况)或者删除下面的策略(策略相同)。如何去看呢,两个步骤:
1. 防火墙命令:exec policy verify
命令可以检测策略的覆盖情况,如下所示:
根据实际的策略内容,对这些策略做顺序调整或删除。
2. 命令只能检测出一部分,复杂的策略命令是检测不出来的。这个时候需要我们对每个区域间的策略一条条去核实、调整。
上面调整好了后,开启所有策略的log。开始做我们的表格记录吧。如下格式,忠实记录现有防火墙策略的内容:
Policy:记录策略方向
Policy ID:策略ID
Source:源地址
Destination:目的地址
Service:服务
Log Count:Reports——Policies里面会有当期策略一定时期匹配日志数的统计,如果看到某条策略Log Count没有值不代表该策略无用,这个用来最开始辅助判断;
分析:当前对该策略分析结果
优化:后续的优化方式
开启日志记录后,需要把流量日志导出来。对于Juniper,可以配置syslog转发,直接将流量日志发送到日志服务器。注意只勾选Traffic Log。
日志服务器看需要,比如使用Kiwi Syslog,将日志以每天一个文件的方式存下来,怎么配就不说了。
有了日志,下面就是我们需要每天做的工作了。
需要分析日志了,我们先看看防火墙产生的原始流量日志是什么样的:
2014-01-08 14:53:03 Local0.Notice 192.168.44.61 P_DF01: NetScreen device_id=P_DF01 [Root]system-notification-00257(traffic): start_time="2014-01-08 14:49:23" duration=11 policy_id=104 service=tcp/port:9003 proto=6 src zone=Untrust dst zone=PRD action=Permit sent=294 rcvd=112 src=172.16.30.5 dst=192.168.100.12 src_port=59744 dst_port=9003 src-xlated ip=172.16.30.5 port=59744 dst-xlated ip=192.168.100.12 port=9003 session_id=523914 reason=Close - TCP FIN<000> |
原始的流量日志中内容太多了,在做查询的时候很不方便,我们实际上只需要其中的几个字段,见标红部分,如下:
policy_id=104 service=tcp/port:9003 proto=6 src zone=Untrust dst zone=PRD src=172.16.30.5 dst=192.168.100.12 src_port=59744 dst_port=9003 |
另外,我们还需要统计出匹配策略的日志数。
最终的shell脚本如下,包含两个文件:fw.sh和zone。
zone文件用来标示excel表格中Policy和实际日志中对应关系,如下所示,需要将所有策略的都写出来:
from_Untrust_to_PRD:src zone=Untrust dst zone=PRD from_PRD_to_Untrust:src zone=PRD dst zone=Untrust from_Untrust_to_OA:src zone=Untrust dst zone=OA from_OA_to_Untrust:src zone=OA dst zone=Untrust …… |
fw.sh脚本功能如下:
a) 处理原始日志,只输出我们需要的字段,输出结果为source_dest_2014-01-28.log;
b) 输出策略统计数据,输出结果为rule_source_dest_2014-01-28.log;
脚本内容如下:
点击(此处)折叠或打开
脚本执行:./fw.sh 日志文件
[root@RHEL2 0128]# ./fw.sh 2014-01-28.log
|
结果如下:
将每天分析出的数据记录在表格中,然后逐步细化,进行拆分合并、顺序调整,相对稳定后进行监控,最后禁用无用的策略。
现在有专门做防火墙管理的软件,包含了策略梳理的功能,比如FireMon,不差钱的话可以去试试,我等屌丝只能自己动手了。
流量分析中稍微困难的一点在于有一些干扰流量,需要知识、经验丰富才能判断,后续单独再讲。
感谢CU上帮我完善脚本的各位达人。