Nov 9

[原]屏蔽syslog里记录由crond执行pam session的信息 阴

linuxing , 17:37 , 基础知识 » 故障处理 , 评论(1) , 引用(0) , 阅读(34422) , Via 本站原创 | |
   syslog是用来记录系统日志信息的,主要是记录重要信息。但一些无聊的日志信息很可能会把关键信息给冲掉,或者导致寻找信息很麻烦。例如,在/var/log/messages中就经常看到这样的信息:
引用
Nov  9 17:10:02 mail crond(pam_unix)[4768]: session closed for user root
Nov  9 17:10:02 mail crond(pam_unix)[4769]: session closed for user root
Nov  9 17:15:01 mail crond(pam_unix)[4780]: session opened for user root by (uid=0)
Nov  9 17:15:01 mail crond(pam_unix)[4780]: session closed for user root

没5分钟、10分钟就执行一次,烦不烦啊?一定要解决掉。
一、原因
要解决问题,就要知道引起问题的原因。该日志是记录下面的动作的:
引用
# cat /etc/cron.d/mrtg
*/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
# cat /etc/cron.d/sysstat
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1

也就是每5、10分钟就使用root用户执行一次mrtg和sa1命令。密度相当频繁。

二、解决
既然知道是crond切换用户的时候,pam发出的信息,那就从源头出发:
修改/etc/pam.d/crond,把下面这行:
引用
session    required  /lib/security/$ISA/pam_stack.so service=system-auth

注释掉:
引用
#session    required  /lib/security/$ISA/pam_stack.so service=system-auth

保存即可。
◎补充
后来发现,这个解决方法会导致/var/log/cron报错:
引用
Nov  9 19:30:01 mail crond[6772]: System error
Nov  9 19:30:01 mail crond[6771]: System error

虽然网上很多说法是没问题的,但还是仅供参考吧,下面的方法更好。

三、同解
类似这种:
引用
Nov  9 17:38:23 mail su(pam_unix)[4977]: session opened for user root by root(uid=0)
Nov  9 17:38:27 mail su(pam_unix)[4977]: session closed for user root
Nov  9 17:42:33 mail su(pam_unix)[5154]: session opened for user root by root(uid=0)
Nov  9 17:42:35 mail su(pam_unix)[5154]: session closed for user root

是su通过pam记录到日志的信息,可以修改/etc/pam.d/su:
引用
session    required     /lib/security/$ISA/pam_stack.so service=system-auth

为:
引用
#session    required     /lib/security/$ISA/pam_stack.so service=system-auth

※注意,这时候使用su切换用户日志就不会记录了,需要注意安全问题哦。不能修改sshd的session配置,否则会登陆不上服务器的。

四、另解
上述的方法可以针对不同的应用屏蔽信息,但可能会带来安全的问题。
而且如果您在使用Oracle RAC的话,必定要搭建ssh key校验,这样就会出现大量类似信息:
引用
Nov  9 18:59:39 mail sshd(pam_unix)[6435]: session opened for user root by root(uid=0)

上面的方法也帮不了你。当然,还是有方法可以解决的:修改syslog的配置。
1、syslog
大部分的发行版都使用sysklogd作为默认的日志服务器,其配置文件在/etc/syslog.conf。

2、主日志文件不记录验证信息
把原来:
引用
*.info;mail.none;news.none;authpriv.none;cron.none             /var/log/messages

修改为:
引用
*.info;auth.none;mail.none;news.none;authpriv.none;cron.none            /var/log/messages

也就是加入auth.none。
auth是syslog记录的选择条件,其表示由pam_pwdb报告的认证活动。使用none就是相关信息不记录到后面指定的日志文件中。这样,所有和pam相关的信息(包括出错信息)都不会记录到该主配置文件了。

3、增加安全配置日志
完全不记录PAM验证信息当然不行,因此,我们可以把这些信息记录到单独的文件中。
而如果你安装了红旗的rflogview套件,/etc/syslog.conf中就有:
引用
auth.=info;auth.=notice;authpriv.=info;authpriv.=notice          -/var/log/rflogview/secure_info

你也可以自己加入:
引用
auth.info       /var/log/authlog

最后,重启syslog服务:
# service syslog restart

这样,所有PAM登陆信息就统一登记在/var/log/authlog文件了:
引用
# cat authlog
Nov  9 19:17:02 mail su(pam_unix)[6560]: session opened for user root by root(uid=0)
Nov  9 19:17:02 mail su(pam_unix)[6560]: session closed for user root
Nov  9 19:17:12 mail sshd(pam_unix)[6601]: authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.228.244  user=root
Nov  9 19:17:16 mail sshd(pam_unix)[6603]: session opened for user root by root(uid=0)

从管理的角度来说,这样也是最方便的。
。※不明白系统默认配置为什么不是这样。另外,记得及时清空过大的日志哦!
此外,红旗DC上还带有syslog-ng,一个可以增强版的syslog,但默认是关闭的,以后再讲解。
Tags: ,
youyou Homepage
2007/11/27 09:57
恩.好文.
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]