(1)日志基础
1)简介
rsyslog:记录大部分与系统操作有关,例如安全,认证sshd,su,计划任务at,cron
rsyslog日志可以存在本地,也可以存放在远程服务器
2)常见的日志文件
/var/log/messages //系统主日志文件
/var/log/secure //认证丶安全
/var/log/maillog //跟邮件postfix有关
/var/log/cron //crond,at进程产生的日志
/var/log/dmesg //和系统启动有关
/var/log/audit/audit.log //系统审计日志
/var/log/yum.log //yum日志
/var/log/xferlog //和访问FTP服务器有关
w //当前登录的用户 /var/log/wtmp
last //最近登录的用户 /var/log/btmp
lastlog //所有用户的登录情况 /var/log/lastlog
3)例
统计登录失败的top5 ip地址
#grep "failure" /var/log/secure | awk -F'[ =]+' '{print $18}' | grep -v user | sort | uniq -c | sort -k1 -rn | head -5
统计登录成功的top5 ip地址
#grep "Accept" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -k1 -rn | head -5
(2)rsyslog子系统
1)服务和配置文件
systemctl status rsyslog
/etc/logrotate.d/syslog //日志切割相关
/etc/rsyslog.conf //rsyslogd的主配置文件
2)主配置文件:/etc/rsyslog.conf
在主配置文件下定义了一套规则: 告诉rsyslogd进程哪个设备(facility),关于哪个级别的信息,以及如何处理
authpriv.* /var/log/secure
设备.日志级别 日志文件
#### RULES ####
authpriv.* /var/log/secure //设备authpriv的所有级别都输出到/var/log/secure文件中
mail.* -/var/log/maillog //设备mail的所有级别都延迟输出到/var/log/maillog文件中
cron.* /var/log/cron
*.emerg :omusrmsg:* //所有设备的紧急级别日志都输出到屏幕上
local7.* /var/log/boot.log
local4.* @192.168.1.253 //UDP //local4设备所有级别日志使用udp协议输出到192.168.1.253这台主机
local4.* @@192.168.1.253 //TCP
local设备是系统保留的设备
级别 :遇到何种情况才会记录日志
emerg //紧急,致命,服务无法继续运行,如配置文件丢失
alert //报警,需要立即处理,如磁盘使用率95%
crit //致命行为
err //错误行为
warning //警告信息
notice //普通
info //标准信息
debug //调试信息,拍错所需
说明:例如sshd程序的配置文件(/etc/ssh/sshd_config)中定义SyslogFacility AUTHPRIV;表示sshd程序使用rsyslog程序中的AUTHPRIV这个设备,表示sshd的日志都会输出到AUTHPRIV这个设备,同时在rsyslog的配置文件上(/etc/rsyslog.conf)中定义了一个规则(authpriv.* /var/log/secure),这个规则表示设备AUTHPRIV这个设备的所有级别日志都会输出到/var/log/secure上
3)例:改变应用程序sshd的日志设备为local5,并定义local5设备日志记录到/var/log/sshd.log文件中
#vim /etc/ssh/sshd_config //修改sshd使用rsyslog的设备为LOCAL5
#SyslogFacility AUTHPRIV
SyslogFacility LOCAL5
#systemctl restart sshd
#vim /etc/rsyslog.conf //修改rsyslog配置文件定义设备local5的所有级别日志输出到/var/log/sshd.log中
local5.* /var/log/sshd.log
#systemctl restart rsyslog
4)命令logger
logger "pppppp" //日志默认输出到/var/log/messages文件中
logger -p local5.info "pppp" //-p指定设备名和日志级别,日志输出到local5这个设备定义的输出文件中
logger -p local5.emerg "warnning" //日志级别为紧急emerg,默认情况都会打印到屏幕上,
5)日志发送到远程服务器:192.168.1.40的local5设备的所有级别日志都发送到192.168.1.253上;
#vim /etc/rsyslog.conf
local5.* @192.168.1.253 //定义local5设备的所有级别日志发送到192.168.1.253这台主机
#systemctl restart rsyslog
#tcpdump -i eth0 -nn port 514 //在192.168.1.253主机上进行抓包验证
#vim /etc/rsyslog.conf //修改rsyslog主配置文件,定义设备local5的所有级别日志都输出到/var/log/test.log文件中
local5.* /var/log/test.log
#systemctl restart rsyslog
测试命令:logger -p local5.info "pppp" //在40主机上使用logger进程产生设备local5的info级别日志