九、输出Iptables日志到一个指定的文件(logboy同学撰写)

Iptables的man参考页中提到: 我们可以使用Iptables在Linux内核中建立, 维护和检查IP包过滤规则表。几个不同的表可能已经创建, 每一个表包含了很多内嵌的链, 也可能包含用户自定义的链。Iptables默认把日志信息输出到/var/log/messages文件。不过一些情况下你可能需要修改日志输出的位置。下面向大家介绍如何建立一个新的日志文件/var/log/iptables.log。通过修改或使用新的日志文件, 你可以创建更好的统计信息或者帮助你分析网络攻击信息。

(1). Iptables默认的日志文件

例如, 如果你输入下面的命令, 屏幕将显示/var/log/messages文件中的Iptables日志信息:

# tail -f /var/log/messages

输出:

Oct 4 00:44:28 debian gconfd (vivek-4435):
Resolved address "xml:readonly:/etc/gconf/gconf.xml.defaults"
to a read-only configuration source at position 2
Oct 4 01:14:19 debian kernel:
IN=ra0 OUT= MAC=00:17:9a:0a:f6:44:00:08:5c:00:00:01:08:00
SRC=200.142.84.36 DST=192.168.1.2
LEN=60 TOS=0x00 PREC=0x00 TTL=51 ID=18374
DF PROTO=TCP SPT=46040 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 

(2).输出Iptables日志信息到一个指定文件的方法

打开你的/etc/syslog.conf文件:

# vi /etc/syslog.conf

在文件末尾加入下面一行信息:

kern.warning /var/log/iptables.log

保存和关闭文件。

重新启动Syslogd(如果你使用Debian/Ubuntu Linux):

# /etc/init.d/sysklogd restart

另外, 使用下面命令重新启动Syslogd(如果你使用Red Hat/Cent OS/Fedora Core Linux):

# /etc/init.d/syslog restart现在确认你的Iptables使用了log-level 4参数(前面有一个log-prefix标志)。例如:

# DROP everything and Log it
iptables -A INPUT -j LOG –log-level 4
iptables -A INPUT -j DROP

举一个例子, 丢弃和记录所有来自IP地址65.55.11.2的连接信息到/var/log/iptables.log文件。

iptables -A INPUT -s 64.55.11.2 -m limit
limit 5/m --limit-burst 7 -j LOG
log-prefix ‘** HACKERS **’ --log-level 4
iptables -A INPUT -s 64.55.11.2 -j DROP 

命令解释:

log-level 4: 记录的级别. 级别4为警告(warning)。

log-prefix ‘*** TEXT ***’: 这里定义了在日志输出信息前加上TEXT前缀。TEXT信息最长可以是29个字符, 这样你就可以在记录文件中方便找到相关的信息。

现在你可以通过/var/log/iptables.log文件参考Iptables的所有信息:

# tail -f /var/log/iptables.log

十、日志轮询

再说下日志的轮询,Linux的日志轮询机制做得相当好,当然我们也可以通过配置/etc/logrotate.conf来修改它,有兴趣的同学可参考鸟哥的文章,这里就不作详细介绍了。

51CTO.com独家特稿,合作站点转载请注明原文译者和出处。】


相关内容