linux日志管理

在centos7中,系统日志消息由两个服务负责处理:systemd-journald和rsyslog

一、 常见的日志文件及作用

系统日志文件概述:/var/log目录保管由rsyslog维护的,里面存放的一些特定于系统和服务的日志文件

日志文件用途
/var/log/message大多数系统日志消息记录在此处。有也例外的:如与身份验证,电子邮件处理相关的定期作业任务等
/var/log/secure安全和身份验证相关的消息和登录失败的日志文件。 ssh远程连接产生的日志
/var/log/maillog与邮件服务器相关的消息日志文件
/var/log/cron与定期执行任务相关的日志文件
/var/log/boot.log与系统启动相关的消息记录
/var/log/dmesg与系统启动相关的消息记录
/var/log/wtmp是一个二进制文件,记录所有用户登录次数和持续时间的消息
/var/log/btmp记录错误登录系统的日志

last 显示到目前为止,成功登录系统的记录

[root@CentOS 7-23 ~]# last #使用last查看系统最近的登陆信息
yangjie  pts/0        :0               Mon Jun 24 21:40   still logged in   
yangjie  :0           :0               Mon Jun 24 21:40   still logged in   
reboot   system boot  3.10.0-693.el7.x Mon Jun 24 21:39 - 21:51  (00:12)    
yangjie  pts/1        :0               Sat Jun 22 01:08 - 01:34  (00:26)    
yangjie  pts/0        :0               Sat Jun 22 00:18 - 01:34  (01:15)    
yangjie  :0           :0               Sat Jun 22 00:18 - down   (01:16) 

[root@CentOS 7-23 ~]# last -f /var/log/wtmp
yangjie  pts/0        :0               Mon Jun 24 21:40   still logged in   
yangjie  :0           :0               Mon Jun 24 21:40   still logged in   
reboot   system boot  3.10.0-693.el7.x Mon Jun 24 21:39 - 21:54  (00:15)    
yangjie  pts/1        :0               Sat Jun 22 01:08 - 01:34  (00:26)    
yangjie  pts/0        :0               Sat Jun 22 00:18 - 01:34  (01:15)    
yangjie  :0           :0               Sat Jun 22 00:18 - down   (01:16) 

/var/log/btmp日志文件如果大于1M,说明有人在暴力破解ssh服务,使用lastb查看

[root@CentOS 7-23 ~]# ll /var/log/btmp
-rw-------. 1 root utmp 1536 624 21:44 /var/log/btmp
 
[root@CentOS 7-23 ~]# lastb
root     ssh:notty    192.168.234.24   Mon Jun 24 21:44 - 21:44  (00:00)    
root     ssh:notty    192.168.234.24   Mon Jun 24 21:44 - 21:44  (00:00)    
root     ssh:notty    192.168.234.24   Mon Jun 24 21:44 - 21:44  (00:00)    
root     pts/0                         Mon Jun 24 21:42 - 21:42  (00:00)    
btmp begins Mon Jun 24 21:42:00 2019

#发现后,使用防火墙,拒绝掉:命令如下:
iptables -A INPUT -i eth0 -s. 192.168.234.24 -j DROP

二、日志的记录方式

日志的命名规则为:分类.级别

1、日志的分类

分类说明
daemon后台进程相关
kern内核产生的信息
lpr打印系统产生的
authpriv安全认证
cron定时相关
mail邮件相关
syslog日志服务本身的
news新闻系统
local0~7自定义的日志设备

2、日志的级别: 上-轻>下-重

优先级严重性
debug信息对开发人员调试应用程序有用,在操作过程中无用
info正常的操作信息,可以收集报告,测量吞吐量等
notice注意,正常但重要的事件
warning警告,提示如果不采取行动。将会发生错误。比如文件系统使用90%
err错误,阻止某个模块或程序的功能不能正常使用
crit关键的错误,已经影响了整个系统或软件不能正常工作的信息
alert警报,需要立刻修改的信息
emerg紧急,内核崩溃等严重信息

3. rsyslog日志服务

rhel5 ->服务名称syslog ->配置文件 /etc/syslog.conf
rhel6-7 ->服务名称rsyslog->配置文件 /etc/rsyslog.conf

查看服务的配置文件信息:

[root@CentOS 7-23 ~]# vi /etc/rsyslog.conf
....
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514 #允许514端口接收使用UDP协议转发过来的日志
 
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514 #允许514端口接收使用TCP协议转发过来的日志
....
....
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# 所有的类别级别是info以上 除了mail,authpriv,cron
 
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
#所有的认证的信息存放到/var/log/secure
 
# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog
#所有的邮件相关的信息存放到/var/log/maillog,“- ”号: 邮件的信息比较多,现将数据存储到内存,达到一定大小,全部写到硬盘.有利于减少I/O进程的开销,数据存储在内存,如果关机不当数据消失
 
# Log cron stuff
cron.*                                                  /var/log/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/boot.log

4、日志输入的规则

.* 记录所有级别的信息

.info 大于等于info级别的信息全部记录到某个文件

.=级别 仅记录等于某个级别的日志

例:.=info 只记录info级别的日志

.!级别 除了某个级别意外,记录所有的级别信息

例:.!err 除了err外记录所有

.none 指的是排除某个类别

例: mail.none 所有mail类别的日志都不记录

多种规则并列用分隔符

例: .info;mail.none

5、自定义ssh服务的日志类型和存储位置

[root@CentOS 7-23 ~]# vi /etc/rsyslog.conf
 local0.*                 /var/log/sshd.log
#把local0类型所有级别的日志添加到/var/log/sshd.log

编辑sshd服务的主配置文件:

[root@CentOS 7-23 ~]# vi /etc/ssh/sshd_config
#SyslogFacility AUTHPRIV
#add
SyslogFacility local0
[root@CentOS 7-23 ~]# ll /var/log/sshd.log
-rw-------. 1 root root 151 624 23:12 /var/log/sshd.log #查看发现/var/log下面存在sshd.log文件,说明修改成功
[root@CentOS 7-23 ~]# cat /var/log/sshd.log
Jun 24 23:12:24 CentOS 7-23 sshd[20137]: Server listening on 0.0.0.0 port 22.
Jun 24 23:12:24 CentOS 7-23 sshd[20137]: Server listening on :: port 22.

6、日志切割

linux下的日志会定期进行滚动增加,可以在线对正在进行回滚的日志进行指定大小的切割(动态);如果这个日志是静态的,比如没有应用向里面写内容,可以用split工具进行切割;其中Logrotate支持按时间和大小来自动切分,以防止日志文件太大;

logrotate的执行由crond服务调用的,cron在指定的时间(/etc/crontab)启动

logrotate配置文件主要有两个:
/etc/logrotate.conf
/etc/logrotate.d/ 这个子目录下的明细配置文件

[root@CentOS 7-23 ~]# vi /etc/cron.daily/logrotate  #查看logrotate脚本内容
 
#!/bin/sh
 
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf #调用/etc/logrotate.conf文件
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
 
[root@CentOS 7-23 ~]# less /etc/logrotate.conf #查看/etc/logrotate.conf文件
 
# uncomment this if you want your log files compressed
#compress
 
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
 
# no packages own wtmp and btmp -- we'll rotate them here #配置有wtmp和btmp日志的logrotate日志切割配置
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}
 
/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}
 
# system-specific logs may be also be configured here.
 
[root@CentOS 7-23 ~]# ll /etc/logrotate.d #查看/etc/logrotate.d下的明细配置文件,存在不同服务的logrotate配置文件
总用量 64
-rw-r--r--. 1 root root   91 411 2018 bootlog
-rw-r--r--. 1 root root  160 915 2017 chrony
-rw-r--r--. 1 root root   71 411 2018 cups
-rw-r--r--. 1 root root  172 930 2016 iscsiuiolog
-rw-r--r--. 1 root root  165 529 08:16 libvirtd
-rw-r--r--. 1 root root  142 529 08:16 libvirtd.qemu
-rw-r-----. 1 root named 514 65 03:26 named
-rw-r--r--. 1 root root  106 411 2018 numad
-rw-r--r--. 1 root root  136 610 2014 ppp
-rw-r--r--. 1 root root  408 83 2017 psacct
-rw-r--r--. 1 root root  115 1031 2018 samba
-rw-r--r--. 1 root root   68 1016 2018 sa-update
-rw-r--r--. 1 root root  224 1030 2018 syslog
-rw-r--r--. 1 root root  188 1031 2018 vsftpd
-rw-r--r--. 1 root root  100 1031 2018 wpa_supplicant
-rw-r--r--. 1 root root  103 115 2018 yum
[root@CentOS 7-23 ~]# cat /etc/logrotate.d/yum #查看yum服务的logrotate配置文件
/var/log/yum.log {
    missingok #在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误
    notifempty #如果日志文件为空,轮循不会进行
    maxsize 30k #文件超过30k进行日志切割
    yearly #每年执行一次日志回滚
    create 0600 root root #重建用户为root,属组为root,执行权限为0600/var/log/yum.log文件
}

三、实战演示

7、编辑配置文件

[root@CentOS 7-23 ~]# vi /etc/logrotate.conf
 
# rotate log files weekly
weekly
 
# keep 4 weeks worth of backlogs
rotate 4
 
# create new (empty) log files after rotating old ones
create
 
# use date as a suffix of the rotated file
dateext
 
# uncomment this if you want your log files compressed
#compress
 
# 说明:(全局参数)
#weekly :     每周执行回滚,或者说每周执行一次日志回滚
#rotate:      表示日志切分后历史文件最多保存离现在最近的多少份   [rəʊˈteɪt] 旋转
#create :   指定新创建的文件的权限与所属主与群组
#dateext :  使用日期为后缀的回滚文件  #可以去/var/log目录下看看
 
# RPM packages drop log rotation information into this direct
ory
include /etc/logrotate.d
 
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly 
    create 0664 root utmp 
    minsize 1M
    rotate 1
}
 
/var/log/btmp {  #  指定的日志文件的名字和路径
    missingok #如果文件丢失,将不报错
    monthly #每月轮换一次
    create 0600 root utmp 设置btmp这个日志文件的权限,属主,属组
    minsize 1M #文件超过1M进行回滚,所以大家要知道它不一定每个月都会进行分割,要看这个文件大小来定
    rotate 1  #日志切分后历史文件最多保存1份,不含当前使用的日志
}
 
# system-specific logs may be also be configured here.

其它参数说明:

monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。
rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
notifempty: 如果日志文件为空,轮循不会进行。
create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
/var/lib/logrotate/status中默认记录logrotate上次轮换日志文件的时间

[root@CentOS 7-23 ~]# vi /var/lib/logrotate/logrotate.status
logrotate state -- version 2
"/var/log/yum.log" 2019-6-20-21:0:0
"/var/log/cups/page_log" 2019-6-20-21:0:0
"/var/log/sa-update.log" 2019-6-20-21:0:0
"/var/log/cups/error_log" 2019-6-20-21:0:0
"/var/named/data/named.run" 2019-6-20-21:0:0
"/var/log/boot.log" 2019-6-20-21:0:0
"/var/log/cups/access_log" 2019-6-20-21:0:0
"/var/log/wtmp" 2019-6-20-21:0:0
"/var/log/chrony/*.log" 2019-6-20-21:0:0
"/var/log/spooler" 2019-6-20-21:0:0
"/var/log/btmp" 2019-6-20-21:0:0
"/var/log/xferlog" 2019-6-20-21:0:0
"/var/log/iscsiuio.log" 2019-6-20-21:0:0
"/var/log/maillog" 2019-6-20-21:0:0
"/var/log/libvirt/libvirtd.log" 2019-6-20-21:0:0
"/var/log/libvirt/qemu/*.log" 2019-6-20-21:0:0
"/var/log/wpa_supplicant.log" 2019-6-20-21:0:0
"/var/log/secure" 2019-6-20-21:0:0
<lib/logrotate/logrotate.status" 25L, 984C 1,1

8、使用 logrotate 进行ssh日志分割

定义了ssh日志存储在/var/log/sshd的基础上执行:

 
[root@CentOS 7-23 ~]# vi /etc/logrotate.d/sshd #创建一个sshd的logrotate配置文件
/var/log/sshd.log{
missingok
weekly
create 0600 root root
minsize 1M
rotate 3
}
[root@CentOS 7-23 ~]# systemctl restart rsyslog #重启日志服务
[root@CentOS 7-23 ~]# logrotate -vf /etc/logrotate.d/sshd 
#强制轮循,也就是说即使轮循条件没有满足,也可以通过加-f强制让logrotate轮循日志文件
reading config file /etc/logrotate.d/sshd
Allocating hash table for state file, size 15360 B
 
Handling 1 logs
 
rotating pattern: /var/log/sshd.log forced from command line (3 rotations)
empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed
considering log /var/log/sshd.log
  log needs rotating
rotating log /var/log/sshd.log, log->rotateCount is 3
dateext suffix '-20190625'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/sshd.log.3 to /var/log/sshd.log.4 (rotatecount 3, logstart 1, i 3), 
renaming /var/log/sshd.log.2 to /var/log/sshd.log.3 (rotatecount 3, logstart 1, i 2), 
renaming /var/log/sshd.log.1 to /var/log/sshd.log.2 (rotatecount 3, logstart 1, i 1), 
renaming /var/log/sshd.log.0 to /var/log/sshd.log.1 (rotatecount 3, logstart 1, i 0), 
old log /var/log/sshd.log.0 does not exist
fscreate context set to system_u:object_r:var_log_t:s0
renaming /var/log/sshd.log to /var/log/sshd.log.1
creating new /var/log/sshd.log mode = 0600 uid = 0 gid = 0
removing old log /var/log/sshd.log.4
set default create context
[root@CentOS 7-23 ~]# ll /var/log/sshd* #轻质轮循4次后,查看sshd日志文件,发现只保存了最近的4的日志文件
-rw-------. 1 root root 0 625 00:16 /var/log/sshd.log
-rw-------. 1 root root 0 625 00:16 /var/log/sshd.log.1
-rw-------. 1 root root 0 625 00:16 /var/log/sshd.log.2
-rw-------. 1 root root 0 625 00:16 /var/log/sshd.log.3

配置远程日志服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

twdnote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值