Chinaunix首页 | 论坛 | 博客
  • 博客访问: 23477
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 68
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-20 12:06
文章分类
文章存档

2014年(7)

我的朋友

分类: 网络与安全

2014-03-21 11:44:51

 

1.    有哪些问题

防火墙策略会有哪些问题,首先得说什么样的策略才是安全上认可的策略,不外乎以下几点:

1.        策略配置合理。合理就是源地址、目的地址、开放服务都是最小化的,如果做不到,至少也要目的地址、开放服务是最小化的。

2.        策略表尽量简洁和简短,策略越多越难维护,需要的时候将多条策略合并到一条,需要和第一条综合考虑。

3.        策略顺序的重要性。防火墙按照从上到下的顺序进行策略匹配,所以优先将流量大的策略和延时敏感的应用策略放在前面。比如领导们上网的策略不妨单独放一条在前面,你懂的。

大概就以上几点,在实际配置时以上几点需要按照实际情况再进行拆分、合并、调整顺序,灵活应对。那么为什么不能一开始就配置好合理的策略呢,原因就多了,比如:

ü  一开始就没有考虑这个问题;

ü  配置人员没有经验,拿不准,开放了双向策略等;

ü  人员变动造成的;

ü  临时策略

。。。。。。

好了,问题已经存在了,现在是我们接手了,我们主要关注怎么去梳理策略,达到我们的要求。前面说的三点,最重要是达到第一步的要求:合理,也就是最小化,起码要做到目的地址、开放服务的最小化,下面就针对Juniper防火墙详细介绍我们的梳理方法。

2.    梳理思路

认识上,要尽可能利用现有策略,而不是妄想抛弃现有策略重新搭建,除非是一个新墙或者允许你去做这种尝试的情况下。基于这个认识,我们需要:

1.        需要获得尽可能多的信息:

a)        确定当前使用了哪些zone,每个zone分配的业务区域的IP范围;

b)        最好了解相关业务区域里面有哪些IP及其用途;

c)        如果能有业务流程的相关资料最好不过;

d)       整个网络的划分;

2.        可以利用策略匹配的日志记录,来分析策略的有效性,所以需要开启所有策略的log记录。

3.        分析一段时间内的日志,在分析过程中进行策略调整,通过在原策略上拆分出符合要求的策略,继续监控原策略,当一定时间该策略没有日志的时候,可以认为该策略无用。

3.    梳理过程

3.1. 第一步:初步梳理

首先要看是否有在上面的策略覆盖下面策略的情况,这种情况下,流量不会匹配下面的策略,需要我们调整策略的顺序(覆盖的情况)或者删除下面的策略(策略相同)。如何去看呢,两个步骤:

1.        防火墙命令:exec policy verify

命令可以检测策略的覆盖情况,如下所示:

根据实际的策略内容,对这些策略做顺序调整或删除。

2.        命令只能检测出一部分,复杂的策略命令是检测不出来的。这个时候需要我们对每个区域间的策略一条条去核实、调整。

3.2. 第二步:开启记录,制作表格

上面调整好了后,开启所有策略的log。开始做我们的表格记录吧。如下格式,忠实记录现有防火墙策略的内容:

Policy:记录策略方向

Policy ID:策略ID

Source:源地址

Destination:目的地址

Service:服务
Log CountReports——Policies里面会有当期策略一定时期匹配日志数的统计,如果看到某条策略Log Count没有值不代表该策略无用,这个用来最开始辅助判断;
分析:当前对该策略分析结果
优化:后续的优化方式

3.3. 第三步:获取日志

开启日志记录后,需要把流量日志导出来。对于Juniper,可以配置syslog转发,直接将流量日志发送到日志服务器。注意只勾选Traffic Log

日志服务器看需要,比如使用
Kiwi Syslog,将日志以每天一个文件的方式存下来,怎么配就不说了。

有了日志,下面就是我们需要每天做的工作了。

3.4. 第四步:分析日志

需要分析日志了,我们先看看防火墙产生的原始流量日志是什么样的:

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.shzone


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

脚本内容如下:



点击(此处)折叠或打开

  1. [ $# -ne 1 ] && { echo "Usage: fw.sh 日志文件名"; exit 1;}
  2. if [ ! -f source"_"dest"_"$1 ]
  3. then
  4. sed -r 's/.*(policy_id=.*zone=[^ ]+).*(src=.*) src-xlated.*/\1 \2/;:a;s/(service=[^ ]+) (.* proto=)/\1_\2/;ta' $1>>source"_"dest"_"$1;
  5. # sed -s 's/^.*\(policy_id=.*\) action=.*\( src=.*\) src-xlated.*$/\1\2/' $1>>source"_"dest"_"$1;
  6. fi
  7. if [ ! -f rule"_"source"_"dest"_"$1 ]
  8. then
  9. for ID in `grep -v "^#" zone|awk -F":" '{print $1}'`
  10. do
  11. ZONE=`grep -v "^#" zone|grep "$ID"|awk -F":" '{print $2}'`;
  12. echo "+++++++++++++++++++++++++++++++++++" >>rule"_"source"_"dest"_"$1;
  13. echo $ID >>rule"_"source"_"dest"_"$1;
  14. grep "$ZONE" source"_"dest"_"$1|awk '{print $1}'|sort|uniq -c >>rule"_"source"_"dest"_"$1;
  15. done
  16. fi
  17. cat rule"_"source"_"dest"_"$1;

脚本执行:./fw.sh 日志文件


[root@RHEL2 0128]# ./fw.sh 2014-01-28.log

结果如下:


3.5. 第五步:记录数据

将每天分析出的数据记录在表格中,然后逐步细化,进行拆分合并、顺序调整,相对稳定后进行监控,最后禁用无用的策略。
    

4.    后记

现在有专门做防火墙管理的软件,包含了策略梳理的功能,比如FireMon,不差钱的话可以去试试,我等屌丝只能自己动手了。

流量分析中稍微困难的一点在于有一些干扰流量,需要知识、经验丰富才能判断,后续单独再讲。

感谢CU上帮我完善脚本的各位达人。

阅读(2347) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~