David
发布于 2014-09-16 / 16 阅读 / 0 评论 / 0 点赞

Ubuntu 解决auth.log为空问题和rsyslogd日志丢失

2014年9月18日 23:15:47 关于rsyslog问题更新下,就不另外开新文章了
在刚装好系统情况下,一般不会出现记录为空或者不能正常记录的问题,但是经常安装更新是Ubuntu特点之一,而且我的强迫症已经越发犀利。 每次登录都提示有可用更新,就忍不住apt-get upgrade。 原本打算在美国的VPS上装GitLab玩下,可是安装的时候提示需要14.04版本(好像是),OK~ 系统升级上去后再告诉我需要64位才能安装,英语不好是硬伤,不看文档的祸。 由原来12.10升级到14.04后就出现认证日志没有正常记录的问题,这应该算是比较重要的日志。 So,开始解决问题。 系统一般都自带syslog(syslogd)服务,在搜索了很关键词后大多都提到"rsyslog",至于如何令系统自带的日志服务重新工作起来的方法还没找到。 既然自带的不能工作,不如装上"rsyslog"耍下,Ubuntu下装软件有多方便就不详细说安装过程了,重点是如何去配置。 配置文件在[su_label type="black"]/etc/rsyslog.conf[/su_label] 配置内容就不上了,保持默认即可,有问题再来改(关键是不知所云) 在最后一处有段 001 又是引用,不过这的确很方便管理类多套配置。 接着进入到他说的目录[su_label type="black"]/etc/rsyslog.d[/su_label],或许你的会有很多个配置文件,也可能只有一个,这个无关紧要。 003 如图所示,服务器上只有一个配置文件,省得到处乱找。 打开那货[su_label type="black"]50-default.conf[/su_label] 图就不上了,当时我就震惊,格式跟syslog.conf一模一样,好评。 接下来就容易多,把需要记录的日志前的“#”去掉,再把日志路径的“-”去掉。 [su_label type="important"]#cron.*                      -/var/log/cron.log[/su_label] 修改成 [su_label type="important"]cron.*                        /var/log/cron.log[/su_label] 同样,也可以把不需要的日志信息注释掉,默认情况下auth.log记录是开启的,所以我只需要启动或者重启rsyslog。 [su_label type="important"]service rsyslog restart[/su_label] 过一段时间后查看[su_label type="black"]/etc/auth.log[/su_label],里面包含了很多认证操作信息。 目前我们真实需要的是认证失败的记录,方便拉黑,你懂的~ Ending 作为一名程旭媛,定时监控自动屏蔽某些IP这些操作必须交给程序来做,例如Fail2Ban、DenyHosts,关于这两个怎么用日后再说。
  日志丢失这个问题目前还没遇到,不过也会引起CPU占用100%。 若出现日志丢失,那么一般会在[su_label type="black"]/var/log/message[/su_label],反正跑不远,肯定在log文件夹下,耐性找找。 提示信息如下:
rsyslogd-2177: imuxsock begins to drop messages from pid 17131 due to rate-limiting
官方也有解释文档,不过是通过限制一段时间内写入日志数量来解决。[su_button url="http://www.rsyslog.com/tag/rate-limiting/" target="blank" style="flat" background="#ef2d65" radius="5"]How to use rate limiting in rsyslog?[/su_button] 在[su_label type="black"]/etc/rsyslog.conf[/su_label]中增加任意位置增加下面两句
# 60秒内
$SystemLogRateLimitInterval 60

#最多累计插入3000条日志
$SystemLogRateLimitBurst 3000
最后重启rsyslog即可,如果还不行,那我也不清楚了