Linux下rsyslog服务配置

两台Linux主机连在一个局域网中,Ubuntu10.04ip=10.20.133.31;Fedora9ip=10.20.133.32。最近看Netfilter/iptables的问题,发现iptables是默认不产生任何log的,但是iptables有一个机制可以主动产生log,而且可以自己定义的log的级别。一般情况下,fedora是常年开机,做一些实验和备份用的,通过ssh或telnet登录上去进行一些管理。突然想到是不是可以将登录fedora的log记录下来,看看哪些人还经常登录?(上面还开了ftp和httpd服务,交换一些资料)说干就干。

其实fedora上的登录信息已经由rsyslog(不再是syslog了)记录在/var/log/wtmp里了,每次登录到fedora上去查看满烦的。而且还要grep一大堆更是繁琐。为何不用iptables解决数据筛选的问题,用rsyslog在ubuntu(日常用计算机)搭一个日志服务器呢?这样子以后我要是有好多好多主机的时候都可以在ubuntu上查看日志了……当然是开玩笑了,我哪有这么钱啊?呵呵...

首先,配置fedora。在fedora的iptables规则中加上

iptables-A INPUT -p tcp –syn –dport 22 -j LOG –log-level alert

表示将ssh连接请求以alert级别记录下来(默认是/var/log/message)。

在/etc/rsyslog.conf中配置kern.laert @10.20.133.31将来自内核的级别为alert的log发到地址10.20.133.31,也就是我的ubuntu上。

接下来配置ubuntu。touch/var/log/kernfrommyhp用以存放来自fedora的日志文件。在rsyslog的配置文件/etc/rsyslog.d/50-default.conf加上

kern.alert /var/log/kernfrommyhp.log

即将来自kern.alert的log放到之前那个文件中(不光是来自fedora的,本机的也会放进去,但是alert级别log不多应该很好找)。下面就是最关键的地方了—让ubuntu接收其他主机发过来的日志文件。在ubuntu中是在/etc/default/rsyslog中配置的。根据网上资料将RSYSLOGD_OPTIONS="-c4"改成

RSYSLOGD_OPTIONS="-r -m 0"

两台主机运行servicersyslog restart就该OK了。运行的流程应该是:

ubuntu(也可以是其他主机)上ssh登录fedora,fedora记录该登录log,发送到ubuntu(日志服务器)上。

尝试ssh登录一次,打开/var/log/kernfrommyhp,结果为空,即实验失败了。

果断打开wireshark抓包分析。如下图:

可以看到结果是是fedora可以产生log,也可以向ubuntu发送该log(发向UDP514),但是ubuntu上rsyslog的接受进程似乎是没开,不能接受rsyslog的包。开始我以为是ubuntu的防火墙禁掉了。iptables-F后依旧如此;netstat-apn | grep 514也没发现有进程监听514端口。那就应该是ubuntu上配置有错了。尝试将RSYSLOGD_OPTIONS="-r -m 0"改成

RSYSLOGD_OPTIONS="-r514 -m 0"

即指定监听514,再试。抓包

Linux下rsyslog服务配置

没有了那个ICMP3号包了,应该是成功了。打开/var/log/kernfrommyhp:

yes!That‘sit !

关键:

fedora上的iptables规则注意别丢了,最好写到开机shell中,保证每次加载。ubuntu中配置文件位置有点诡异/etc/rsyslog.d/50-default.conf和/etc/default/rsyslog。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/psxyf.html