当前位置: > Linux服务器 >

Linux下rsyslog服务配置

时间:2014-05-17 11:03来源:linux.it.net.cn 作者:IT网
两台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,再试。抓包

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

    yes!That‘sit !

    关键:

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

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容