rsyslog
为什么要有日志?
-
系统或程序将一些运行过程当中的信息输出到日志可以方便我们排错。
-
黑客入侵之后还能追溯审计
为什么要用日志服务器?
如果仅将日志放置在本地的话,那么黑客入侵之后,可以清除所有的日志,消除自身痕迹,而如果将日志放置到远端服务器的话,这样黑客的踪迹就会被记录到日志当中。
rsyslog配置:
安装:yum -y install rsyslog,默认就已经安装并开机启动。
配置文件:/etc/rsyslog.conf, /etc/rsyslog.d/
主程序:/usr/sbin/rsyslogd
模块路径:/usr/lib64/rsyslog/
Unit File:/usr/lib/systemd/system/rsyslog.service
rsyslog中的两个术语:
facility:设施
就是记录哪些项目,比如设施里面有cron,意思就记录定时任务的日志,此外还有
auth, authpriv, daemon, kern, lpr, mail, mark, news, security, user, uucp, syslog, local0-local7 ;
priority:记录日志的等级,如果等级是info,代表包含了info以及以上的所有等级事件日志都记录
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
配置文件由三部分组成:
[ root@cento~]# grep "####" /etc/rsyslog.conf
#### MODULES ####
#### GLOBAL DIRECTIVES ####
#### RULES ####
MODULES:定义了模块的选修,如接下来的使用mysql模块记录日志则需要在这里配置
GLOBAL DIRECTIVES:定义了全局的环境
RULES:定义了记录日志的设施以及等级等信息
格式为:
日志定义格式: facility.priority Target
facility: 设施,从功能或程序上对日志进行分类,并由专门的工具负责记录日志;
常用的facility:
lpr: 打印相关的日志
auth:认证相关的日志
user:用户相关的日志
cron:计划任务相关的日志
kern:内核相关的日志
mail:邮件相关的日志
mark:标记相关的日志
news:新闻相关的日志
uucp:文件copy相关的日志
daemon:系统服务相关的日志
authpri: 授权相关的日志
security:安全相关的日志
local0-local7:自定义相关的日志信息(自定义时可以使用通配符)
通配符:
*:所有
f1,f2,f3......:列表
!:取反
priority:日志级别
常用的日志级别:
debug: 调试
info: 消息
notice: 注意
warn,warning: 警告
err,error: 错误
crit: 严重级别
alert: 需要立即修改该的信息
emerg,panic: 内核崩溃,内核恐慌等严重的信息
通配符:
*:所有日志级别
none:没有任何级别,也就是不记录日志信息
Target:文件路径
可以使用的有:
/var/log/messages
用户:*当前登录系统的所有用户
日志服务器:@SERAVER_IP
管道:| COMMAND
配置文件概述:
cat /etc/rsyslog.conf
#### RULES ####
//这里面的星代表所有,但排除了mail、authpriv、cron这三个项目,所以messages里面记录的信息是最多的,yum信息也会被记录到此日志里面。
*.info;mail.none;authpriv.none;cron.none /var/log/messages
//authpriv是记录与用户登录认证相关的日志,查询是否有黑客入侵系统可分析此日志
# 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 :omusrmsg:*
# 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
为什么/var/log/maillog前面有一个短横线呢?如果不加短横线代表同步IO,也就是说当日志存储时必须硬盘反馈已经完全写入成功了才是成功;如果加上短横线代表系统可代替硬盘回复,这要样的话会减轻IO压力,而mail项目的日志并不是特别重要,所以前面就加了短横线。
rsyslog实现日志服务器
rsyslog是c/s架构,即可以将日志存储于本地,也可以存储到日志服务器,rsyslog也可以做日志服务器,rsyslog可以基于tcp/udp两个协议工作,默认侦听514端口,只需要在modules打开即可。
//修改服务端配置,打开服务监听端口,并重启服务:
#### modules ####
…………
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
[13:05 root@centos6.8~]# service rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
在客户端的配置中,定义将日志发往服务端:
#### RULES ####
*.* @10.1.252.109
、服务端已经收到日志:
[13:15 root@centos6.8~]# tail /var/log/messages
Oct 16 12:48:36 centos6 kdump: started up
Oct 16 12:48:39 centos6 abrtd: Init complete, entering main loop
Oct 16 13:05:50 centos6 kernel: Kernel logging (proc) stopped.
Oct 16 13:05:50 centos6 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1547" x-info="http://www.rsyslog.com"] exiting on signal 15.
Oct 16 13:05:50 centos6 kernel: imklog 5.8.10, log source = /proc/kmsg started.
Oct 16 13:05:50 centos6 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="2418" x-info="http://www.rsyslog.com"] start
Oct 18 10:20:43 localhost kernel: imklog 5.8.10, log source = /proc/kmsg started.
Oct 18 10:20:43 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="2205" x-info="http://www.rsyslog.com"] start
Oct 18 10:26:20 localhost root:
Oct 18 10:26:20 localhost root:
实现我们很少使用rsyslog做日志服务器,有专门的日志服务器程序,比如ELK,现在网络安全厂商也大力推广其硬件日志审计,其实也就是日志服务器,我曾经配置过一个建恒信安的日志审计,记录如下: