技术开发 频道

IPtables日志探秘

  【IT168 技术】防火墙的主要功能除了其本身能进行有效控制网络访问之外,还有一个很重要的功能就是能清晰地记录网络上的访问,并自动生成日志进行保存。虽然日志格式会因防火墙厂商的不同而形态各异,但被记录下的主要信息大体上却是一致的。无论是后面我们谈到的PIX、ASA或是CheckPoint放火墙其产生的日志内容均类似。这就表明,任何连接或者请求,例如TCP、UDP、ICMP连接记录、连接的流量信息、连接建立时间等,防火墙日志都会将其逐一体现。所以归纳起来,防火墙日志大致包含消息发送源IP地址、消息目的IP、消息流向、消息的内容,以及应用几方面。

  防火墙每天要产生大量的日志文件,防火墙管理员针对这未经任何处理和分析的庞大的日志进行管理是很困难的。因此,日志的统计和分析现在已经成为防火墙功能中必不可少的一项,管理员不但可以按照不同的需求来查找日志、审计日志,还可以分析网络带宽的利用率、各种网络协议和端口的使用情况等。防火墙日志还会产生安全警告及一些对网络安全管理很有帮助的信息。这极大的方便了管理员对防火墙的安全管控。

  本文以Linux下的Iptables为例讲解防火墙日志,下面看一段Iptables日志

  Jun 19 17:20:04 web kernel: NEW DRAP IN=eth0 OUT=MAC=00:10:4b:cd:7b:b4:00:e0:le:b9:04:al:08:00 SRC=192.168.150.1 DST=192.168.150.152 LEN=20 TOS=0X00 PREC=0x00 TTL=249 ID=10492 DF PROTO=UDP SPT=53 DPT=32926 LEN=231

  对于此日志解释见表1。

IPtables日志探秘
1 IptablesLog字段解释

  二、LOG日志格式的思考:

  从表1的描述可看出,iptables日志记录的信息很多而且显得很凌乱,在分析时面临以下几个问题:

  (1)MAC的表示过于简单,把目标MAC、源MAC及长度类型全部混在一起,不利于阅读。

  (2)在表中的序号12、13中TOS和PREC的值都为“0x00”标志位表示方式混乱。

  (3)在日志中没有记录数据包内容,特别是对一些被拒绝的数据包,如果有记录数据包内容将有助于查找攻击方式、方法。

  (4)没有记录规则号,对于被记录的数据包,当需要查看它因为满足什么条件被记录时,将变得比较困难。

  (5)LEN、DPT标志同时出现在IP头、TCP头中在分析处理日志时容易出现混乱。

  三、 日志分析

  在Linux下单独记录Iptables的方法是编辑/etc/syslog.conf文件,在其中加入一行

  kern.warning /var/log/iptables.log

  然后重启syslog服务:

  #/etc/init.d/syslog restart

  为了方便地对日志进行分析,可加上适当的记录日志前缀,即在IPtables中使用LOG选项,通过 LOG 选项打开匹配数据包的内核记录功能。LOG 选项的子选项 --log-prefix 用来给记录信息添加一个消息前缀,这个前缀可设达 29 个字符。添加前缀的目的只是为了更好的辨别记录信息,比如更容易用 grep 这种工具过滤出匹配的记录信息。下面举个例子。在 Linux 服务器中输入下面的命令:

IPtables日志探秘

  接下来查看iptables.log日志文件中加HACKERS前缀的日志,当然你也可以换成其他内容。

IPtables日志探秘

  参数“-j LOG”用于设定日志级别,利用 syslo 把特殊级别的信息放入指定日志文件。初始存放在/var/log/messages里面,由于存放messages中,对于分析日志产生不便。这里简单介绍一个iptables日志的管理、循环和自动报告生成的实例。

  几乎所有的Linux发行版都默认安装了iptables,由dmesg或syslogd的facility结合内核管理。iptables的日志的初始值是[warn(=4)],若需要修改这个初始值就需要编辑syslog.conf。

IPtables日志探秘

  /etc/logrotate.conf的初始设置是每周进行日志循环。所以每周的日志将被存在 /var/log/iptables.log中,以前的日志将被顺次存储在 iptableslog.1~ iptables-log.50 中。

  另一种方法就是通过iptables直接获取日志,操作如下:

  # iptables -A INPUT -s 127.0.0.1 -p icmp -j LOG --log-prefix "iptables icmp-localhost "

  \\*保存从eth0 进入的packet记录;

  # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

  \\*废除从eth0进入的packet记录;

  经过上面两条命令操作之后/var/log/iptables-log.1的内容将如下所示:

  Sep 23 10:16:14 hostname kernel: iptables icmp-localhost IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=57148 SEQ=256

  上面这种方法比较麻烦,下面用ulog工具可使用netlink直接将日志广播到用户态,这样以来效率更高,首先安装ulog包,命令如下:

  #apt-get install ulogd

  查看Iptables日志,如图1所示。

IPtables日志探秘
▲图1 用ulog查看Iptables日志

  四、图形化分析工具

  了解日志构成和结构、含义是基础,但打数据下的大安全时代必须使用工具软件协助你完成任务,下面笔者推荐几款图形化分析工具。

  1)OSSIM

  在OSSIM USM 版本可以对各种日志进行归一化处理并以图表的方式展现出来,如图2所示。

IPtables日志探秘
▲图2 OSSIM日志收集

  2) Firewall Analyzer

  Firewall Analyzer是一套基于Web,无需安装代理的防火墙日志分析系统,该系统可支持网络中的多款防火墙设备,并实现监视、日志搜集和分析、并以报表的形式将其呈现出来。利用Firewall Analyzer,网络安全管理员,可以快速的获取网络频宽占用,以及安全时间等重要信息,从而更加有效地对网络实施管理。一般来说,可以获取到的安全事件信息包括:入侵检测、病毒攻击、拒绝服务攻击等异常的网络行为。Firewall Analyzer能分析Cisco PIX、ASA,CheckPoint等多种防火墙日志。如图3所示为Firewall Analyzer流量分析界面。

IPtables日志探秘
▲图3 Firewall Analyzer 日志分析主界面

  3) Sawmill

  Sawmill适用于Unix/Linux和Windows等多种平台,支持900 种日志格式,集中式且跨平台的日志报表管理系统,能集中搜集日志,并产生中文报表(包含体简体及繁体中文),简约的操作界面让使用者能直觉地透过简单的点击操作,能够轻松分析Netfilter日志,快速分析并定制报表。

IPtables日志探秘
▲图5 设定读取数据源

IPtables日志探秘
▲图6设定输出报表

  有关日志分析的更多内容大家可以参考《UNIX/Linux网络日志分析与流量监控》一书。

   作者简介:李晨光,系统架构师,ChinaUnix专家博主,Linux讲师,著有《Linux企业应用案例精解》、《Linux企业应用案例精解 第二版》、《UNIX/Linux网络日志分析与流量监控》等著作。

6
相关文章