运维日记017 -- RHEL6之系统日志的管理
2016-10-29 11:04
330 查看
运维日记017 – RHEL6之系统日志的管理
Linux下的日志记录了系统每天发生的各种各样的事情,可以通过它来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。RHEL6下的日志文件存放在/var/log目录下,下面举几个常见日志的例子:/var/log/dmesg
核心启动日志。这个日志文件记录了内核启动时候输出的信息。
/var/log/messages
系统报错日志。
/var/log/maillog
邮件系统日志。
/var/log/secure
安全信息、认证登录和与xinetd有关的日志。
/var/log/cron
计划任务执行成功与否的日志。
/var/log/wtmp
记录所有的登录和登出。可以用
last命令查看所有登录过系统的用户和IP。
/var/log/btmp
记录错误的登录尝试。可以用
lastb命令查看。注意,这个文件如何突然快速增大,可能有人试图暴力破解用户密码。
/var/log/lastlog
记录每个用户的最后登录信息。
动态跟踪日志文件:tailf命令
RHEL6下有一个tailf命令非常适合用于监控日志文件的变化(follow the growth of a log file)。这条命令类似于tail -f,严格说来应该与`tail –follow=name`更相似些。与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件(It is similar to tail -f but does not access the file when it is not growing. This has the side effect of not updating the access time for the file, so a filesystem flush does not occur periodically when no log activity is happening.)。所以tailf特别适合那些便携机上跟踪日志文件,因为它能省电,因为减少了磁盘访问(tailf is extremely useful for monitoring log files on a laptop when logging is infrequent and the user desires that the hard disk spin down to conserve battery life.)。
下面举一个tailf监控日志的例子。
# tailf /var/log/secure ... ... Oct 29 08:31:05 wjm sshd[1160]: Accepted password for wjm from 192.168.1.105 port 43841 ssh2 Oct 29 08:31:05 wjm sshd[1160]: pam_unix(sshd:session): session opened for user wjm by (uid=0) ... ...
这时,屏幕显示的末尾就是系统输出的最新的日志信息。此时你可以通过ssh远程登录一下该主机,可以看到屏幕上又会输出一条类似下面这样的日志信息:
Oct 29 08:31:05 wjm sshd[1160]: Accepted password for wjm from 192.168.1.105 port 43841 ssh2 Oct 29 08:31:05 wjm sshd[1160]: pam_unix(sshd:session): session opened for user wjm by (uid=0)
RHEL6下有一个logger命令,可以直接向系统日志中写入信息。例如:
# logger 'hello, this is a piece of faked log message.' # tailf /var/log/messge ... ... Oct 29 08:48:07 root root: hello, this is a piece of faked log message.
日志的分类和分级
Linux下的日志采用先分类,然后在每个类别下分级的管理模式。主要的七种日志分类:
名称 | 含义 |
---|---|
authpriv | 安全认证相关 |
cron | at和cron定时任务相关 |
deamon | 定时任务相关 |
kern | 内核产生 |
lpr | 打印系统产生 |
邮件系统产生 | |
syslog | 日志服务本身 |
另外,还有local0~lobal7这八个日志类型,是系统保留的,可以供其他程序使用或者用户自定义使用。
八种日志级别(按照由低到高顺序排列):
级别 | 含义 |
---|---|
debug | 排错信息 |
info | 正常信息 |
notice | 稍微要注意的 |
warn | 警告 |
err(error) | 错误 |
crit(critical) | 关键的错误 |
alert | 警报警惕 |
emerg(emergence) | 紧急突发事件 |
日志的总管家:rsyslog
在RHEL6中日志由系统服务rsyslog进行管理和控制。最小化安装RHEL6后,rsyslog服务默认是开启的。# chkconfig --list | grep rsyslog rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
该服务的配置文件位于/etc/rsyslog.conf,下面对该配置文件进行简单描述。
# vi /etc/rsyslog.conf ... ... #### MODULES #### $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imklog # provides kernel logging support (previously done by rklogd) #$ModLoad immark # provides --MARK-- message capability # Provides UDP syslog reception #$ModLoad imudp #$UDPServerRun 514 # Provides TCP syslog reception #$ModLoad imtcp #$InputTCPServerRun 514 ... ...
这一节设置rsyslog服务加载的模块。其中#号表示注释。其中比较重要的是
#$ModLoad imudp和
#$UDPServerRun 514两行,取消掉该行注释后,表示允许514端口接收使用UDP协议转发过来的日志。这样可以把本主机配置为集中式的日志服务器,它接收并存储其它主机的日志,提高了整个系统的安全性。
#$ModLoad imtcp和
#$InputTCPServerRun 514功能相同,只不过采用的是TCP协议。
... ... #### RULES #### *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg * # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log ... ...
这一节定义了不同类型和级别的日志应存放在哪里。例如,
*.info;mail.none;authpriv.none;cron.none /var/log/messages表示除了mail日志、authpriv日志和cron日志之外,其它的所有类型info级别及以上的日志都存放在/var/log/messages下。下面简要给出rsyslog.conf的日志记录规则:
. 代表该类型比后面还要高的等级(包括该等级)的日志都要被记录下来,其中.前面为日志类型,.后面为日志等级。例如:mail.info表示凡是mail类型的且等级大于或等于info级别的日志都记录下来。
.= 代表等于该等级的日志都要被记录下来。
.! 代表不等于该等级的日志都要被记录下来。
.none 该类型的日志都不做记录。
* 表示任意类型或者级别
而日志记录的位置有三种类型:
本地日志文件。通常就是/var/log目录下。
远程日志服务器。
直接弹出在屏幕上。类似与wall命令。
mail.* -/var/log/maillog
rsyslog.conf配置文件中上面这行/var/log/maillog前面的-是什么意思呢?
这里的-代表每当有新日志产生时,rsyslog会先写入缓存,而不是立即更新日志文件,只有当缓存写满时才会批量更新日志文件。这样可以减少写文件的次数。通常日志信息较多而且不是特别重要时,可以采用这种策略。
实战一:自定义sshd日志类型及日志文件
系统将sshd产生的日志定义为authpriv类型的,保存在/var/log/secure下。请自定义sshd的日志类型为local0,并保存在/var/log/sshdlog文件。修改sshd配置文件
# vi /etc/ssh/sshd_config ... ... # Logging # obsoletes QuietMode and FascistLogging #SyslogFacility AUTH #SyslogFacility AUTHPRIV SyslogFacility local0 ... ...
重启sshd服务
# service sshd restart
修改rsyslog配置文件
# vi /etc/rsyslog.conf ... ... local0.* /var/log/sshd.log ... ...
重启rsyslog服务
# service sshd restart
测试
# ssh root@192.168.1.111 # tailf /var/log/sshd.log
实战二:配置一个简单的远程日志服务器
1、启动两台RHEL6虚拟机,其中一台主机ip地址为192.168.1.111,将其设置为日志服务器。另一台ip地址192.168.1.112,设置为客户端用于测试日志服务器是否正确配置。2、配置日志服务器主机的/etc/rsyslog.conf文件,并重启rsyslog服务。
# vi /etc/rsyslog.conf ... ... # Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 ... ... # service rsyslog restart
3、配置客户端主机的/etc/rsyslog.conf文件,定义其日志向日志服务器发送,然后重启rsyslog服务。
# vi /etc/rsyslog.conf ... ... #### RULES #### ... ... *.info @192.168.1.111 ... ... # service rsyslog restart
4、配置日志服务器主机的防火墙,使其可以接收客户端发来的日志信息。简单起见,这里直接关闭了日志服务器主机的防火墙。
# iptalbes -F
5、客户端主机用logger命令产生一条日志,用tailf观察一下日志服务器的日志变化。
# tailf /var/log/messages # logger "this message is from 192.168.1.112"
相关文章推荐
- RHCE 系列(五):如何在 RHEL 7 中管理系统日志(配置、轮换以及导入到数据库)
- 运维日志管理系统
- 运维学习之系统日志的管理及时间的信息同步
- 运维之系统服务篇------ RAID磁盘阵列 、 进程管理 、 日志管理 、 systemctl控制
- ITIL提升中国电信运维管理系统建设
- 管理Linux系统日志文件工具:logrotate简介
- [原创]今天开发日志管理系统,全选,多项删除功能。
- Log4j日志管理系统简单使用说明
- Log4j日志管理系统简单使用说明
- Log4j日志管理系统简单使用说明
- Log4j日志管理系统简单使用说明
- Log4j日志管理系统简单使用说明
- 自己动手做博客之日志管理-1.1 系统分析
- 日记:2004年10月08日 学习工作流管理系统(WFMS)
- 自己动手做博客之日志管理-3.1 添加系统首页布局
- 自己动手做博客之日志管理-3.2 编码实现系统首页
- Log4j日志管理系统简单使用说明
- 值班日志管理系统更新记录
- Log4j日志管理系统简单使用说明
- Log4j日志管理系统简单使用说明