欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux中日志管理及日志轮询

程序员文章站 2022-04-25 20:08:39
...

1、日志管理的意义

日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。

日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等

一般情况下我们的日志主要放在哪里?
/var/log

[[email protected] localhost ~]# ls /var/log
anaconda.ifcfg.log    anaconda.xlog     ConsoleKit  lastlog   sa        yum.log
anaconda.log          anaconda.yum.log  cron        maillog   secure
anaconda.program.log  audit             dmesg       messages  spooler
anaconda.storage.log  boot.log          dmesg.old   ntpstats  tallylog
anaconda.syslog       btmp              dracut.log  prelink   wtmp

2、常用的日志文件:

btmp 记录登录失败的信息
lastlog 记录最近几次登录事件和最后一次不成功的登录
messages 从syslog 记录信息(有的链接到syslog文件)
utmp 记录当前登录的每一个用户
whmp 系统登录情况: 登入登出

1)登录信息查看

last 查看登录日志内容

[[email protected] localhost ~]# last
root     pts/0        10.0.0.1         Fri Nov 29 13:36   still logged in   
root     tty1                          Fri Nov 29 11:17   still logged in
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

清空日志文件

[[email protected] localhost ~]# > /var/log/wtmp 
[[email protected] localhost ~]# last

wtmp begins Fri Nov 29 13:40:24 2019

2)/var/log/lastlog 查看最后登录信息

记录的是所有的用户什么时候登录过系统

[[email protected] localhost ~]# lastlog
用户名           端口      来自             最后登陆时间
Username         Port     From             Latest
root             pts/0    10.0.0.1         Fri Nov 29 13:36:47 +0800 2019
bin                                        **从未登录过**
daemon                                     **从未登录过**
adm                                        **从未登录过**
lp                                         **从未登录过**
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

3)/var/log/btmp 用户登录系统的错误信息

[[email protected] localhost ~]# lastb             # 查看登录失败的信息
root     ssh:notty    192.168.1.4      Fri Feb 28 14:36 - 14:36  (00:00)    
root     ssh:notty    192.168.1.4      Fri Feb 28 14:36 - 14:36  (00:00)    
root     ssh:notty    192.168.1.4      Fri Feb 28 14:36 - 14:36  (00:00)    
root     ssh:notty    192.168.1.4      Fri Feb 28 14:36 - 14:36  (00:00)    
root     ssh:notty    192.168.1.4      Fri Feb 28 14:36 - 14:36  (00:00)    

btmp begins Fri Feb 28 14:36:32 2020

备注: 巡检 , 发现/var/log/btmp 变得很大。说明有人在对你的服务器进行暴力**

问题: 怎么查看一个文件的大小

[[email protected] localhost ~]# ll -h /var/log/btmp 
-rw-------. 1 root utmp 1.9K 2月  28 14:36 /var/log/btmp

又模拟一下输错命令之后,查看文件大小

[[email protected] localhost ~]# ll -h /var/log/btmp 
-rw-------. 1 root utmp 4.2K 2月  28 14:39 /var/log/btmp

4)日志的记录方式:

日志的种类:

daemon     后台进程相关  
kern  	     内核产生的信息
lpr   	          打印系统产生的
authpriv     安全认证
cron   	      定时相关
mail 	      邮件相关
syslog  	  日志服务本身的
news 	      新闻系统
local0~7      自定义的日志设备
local 0->local 7 8个系统保留的类, 供其它的程序使用 /或者是用户自定义

5)日志级别: 重–轻

0.emery 紧急, 内核崩溃等严重的信息
1.alert 警报: 需要立刻修改的信息
2.crit 关键的错误,已经影响到了整个的系统或者软件不能正常工作的信息
3.err 错误,阻止某个模块或者程序的功能不能正常使用
4.warning 警告
  notice 注意,正常但是重要的信息
5.info 正常的信息,一般的信息,最常用的
  debug 调试级的信息,日志信息最多

6)日志服务:

rhel5
服务名称: syslog
配置文件: /etc/syslog.conf

RHEL6-RHEL7
服务名称: rsyslog

配置文件: /etc/syslog.conf

打开文件 /etc/syslog.conf

7)配置文件:

MODULES 日志的模块

$ModLoad imuxsock 支持本地系统日志的模块
$ModLoad imklog 支持内核日志的模块
$ModLoad immark 支持日志标记
$ModLoad imudp 支持upd协议
$UDPServerRun 514 允许514端口接收使用udp和tcp协议转发过来的日志
$ModLoad imtcp 支持tcp协议

#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console
//  内核类型的所有级别的日志  存放到  ——> /dev/consloe
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none               /var/log/messages
// 所有类型的级别是info以上,除了mail,authpiv, cron,

问题: mail , authpiv ,cron放在哪里

authpriv.* 认证的信息–>存放–> /var/log/secure
mail.* 邮件相关的信息->存放–> -/var/log/maillog
cron.* 计划任务相关的信息–>存放–> /var/log/cron
local7.* 开机时显示的信息–>存放–> /var/log/boot.log

8)日志输入的规则

-info 高于info级别的信息全部都记录到某个文件里去
.= 级别 仅记录等于某个级别的日志
举例: .=info 只记录 info 级别的日志
.! 级别 除了某个级别意外,记录所有级别信息
举例: .!err 除了err级别,别的级别都记录
.none 指的是排除某个类别

3、实战案例

自定义ssh 服务的日志

1、 编辑rsyslog的配置文件

[[email protected] localhost ~]# vim /etc/rsyslog.conf
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
# 添加
local0.*                                                /var/log/sshd.log

2、定义ssh服务的日志级别

[[email protected] localhost ~]# vim /etc/ssh/ssh_config
# 添加的内容如下:

SyslogFacility local0

3、 启动rsyslog和sshd服务

[[email protected] localhost ~]# systemctl  restart rsyslog
[[email protected] localhost ~]# systemctl  restart sshd

4、查看是否生成相关日志

[[email protected] localhost ~]# cd /var/log/
[[email protected] localhost log]# more sshd.log
Feb 28 15:29:08 centos7-xinsz08 sshd[22837]: Server listening on 0.0.0.0 port 2
2.
Feb 28 15:29:08 centos7-xinsz08 sshd[22837]: Server listening on :: port 22.

备注: 对应信息: 时间 - 主机-服务-进程ID -监听的相关信息

4、日志切割(轮转)

在linux下的日志会定期进行滚动增加,我们可以在线对正在进行回滚的日志进行指定大小的切割(动态),如果这个日志是静态的。比如没有应用向里面写内容。那么我们也可以用split工具进行切割;其中Logrotate支持按时间和大小来自动切分,以防止日志内容将包含/var/log的文件系统填满。

1、logrotate 配置文件:

/etc/ logrotate.conf /etc/ lograte.conf.d/

logrotate的执行由crond服务实现。在/etc/cron.daily目录中,有个文logrotate,它实际上是个shell script,用来启动logrotate

[[email protected] localhost log]# cd /etc/cron.daily/
[[email protected] localhost cron.daily]# ls
logrotate  makewhatis.cron  mlocate.cron  prelink  readahead.cron  tmpwatch

logrotate程序每天由cron在指定的时间(/etc/crontab)启动

2、日志回滚原理

当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志.
sshd日志回滚实战

1) 修改配置文件

[[email protected] localhost cron.daily]# vim /etc/logrotate.conf
/var/log/sshd.log {         #  指定的是要切割的日志文件
    missingok               # 如果文件丢失不报错
    monthly                 # 每月轮换一次
    create 0664 root utmp   # 设置sshd.log这个文件的属主和属组
    minsize 10M             # 文件超过10M进行回滚
    rotate 2                # 日志进行分割后,保留两份历史数据
}

2) 重启rsyslog

[[email protected] localhost cron.daily]# systemctl restart rsyslog

3) 强制切割

[[email protected] localhost cron.daily]# logrotate –vf /etc/logrotate.conf
[[email protected] localhost cron.daily]# cd /var/log/
[[email protected] localhost log]# ll sshd.log 
-rw------- 1 root root 0 2019-11-29 14:00 sshd.log
# 切割完之后,源文件大小变为0

日志切割,是可以按照文件的大小和时间来进行切割,也可以使用shell脚本来实现。

相关标签: 日志管理