【Linux】日志管理及日志轮询
日志管理的意义
日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。
日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等
一般情况下我们的日志主要放在哪里?
 /var/log
[root@centos7-xinsz08 ~]# ls /var/log
anaconda httpd spooler-20200227
audit lastlog swtpm
boot.log libvirt tallylog
boot.log-20200211   maillog tuned
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 
常用的日志文件:
btmp 记录登录失败的信息
 lastlog 记录最近几次登录事件和最后一次不成功的登录
 messages 从syslog 记录信息(有的链接到syslog文件)
 utmp 记录当前登录的每一个用户
 whmp 系统登录情况: 登入登出
登录信息查看
last 查看登录日志内容
[root@centos7-xinsz08 ~]# last
root pts/0 192.168.1.4 Thu Feb 27 16:19   still logged in reboot   system boot  3.10.0-1062.12.1 Thu Feb 27 16:18 - 14:30  (22:12) 
  
 - 1
 - 2
 - 3
 
清空日志文件
[root@centos7-xinsz08 ~]# > /var/log/wtmp
[root@centos7-xinsz08 ~]# last
wtmp begins Fri Feb 28 14:32:27 2020
[root@centos7-xinsz08 ~]# 
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 
2. /var/log/lastlog 查看最后登录信息
记录的是所有的用户什么时候登录过系统
[root@centos7-xinsz08 ~]# lastlog 
用户名 端口 来自 最后登陆时间
root pts/0 192.168.1.4 四 2月 27 16:19:22 +0800 2020
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 
3. /var/log/btmp 用户登录系统的错误信息
[root@centos7-xinsz08 ~]# 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
[root@centos7-xinsz08 ~]# 
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 
备注: 巡检 , 发现/var/log/btmp 变得很大。说明有人在对你的服务器进行暴力破解
问题: 怎么查看一个文件的大小
[root@centos7-xinsz08 ~]# ll -h /var/log/btmp 
-rw-------. 1 root utmp 1.9K 2月  28 14:36 /var/log/btmp
又模拟一下输错命令之后,查看文件大小
[root@centos7-xinsz08 ~]# ll -h /var/log/btmp 
-rw-------. 1 root utmp 4.2K 2月  28 14:39 /var/log/btmp
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 
日志的记录方式:
日志的种类:
daemon 后台进程相关  
kern 内核产生的信息
lpr 打印系统产生的
authpriv 安全认证
cron 定时相关
mail 邮件相关
syslog 日志服务本身的
news 新闻系统
local0~7 自定义的日志设备
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 
local 0->local 7 8个系统保留的类, 供其它的程序使用 /或者是用户自定义
日志级别: 重–轻
- emery 紧急, 内核崩溃等严重的信息
 - alert 警报: 需要立刻修改的信息
 - crit 关键的错误,已经影响到了整个的系统或者软件不能正常工作的信息
 - err 错误,阻止某个模块或者程序的功能不能正常使用
 - warning 警告
5.notice 注意,正常但是重要的信息 - info 正常的信息,一般的信息,最常用的
7: debug 调试级的信息,日志信息最多 
日志服务:
rhel5
 服务名称: syslog
 配置文件: /etc/syslog.conf
RHEL6-RHEL7
 服务名称: rsyslog
配置文件: /etc/syslog.conf
打开文件 /etc/syslog.conf
配置文件:
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,
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 
问题: mail , authpiv ,cron放在哪里
authpriv.* 认证的信息–>存放–> /var/log/secure
 mail.* 邮件相关的信息->存放–> -/var/log/maillog
 cron.* 计划任务相关的信息–>存放–> /var/log/cron
 local7.* 开机时显示的信息–>存放–> /var/log/boot.log
日志输入的规则:
-info 高于info级别的信息全部都记录到某个文件里去
 .= 级别 仅记录等于某个级别的日志
 举例: .=info 只记录 info 级别的日志
 .! 级别 除了某个级别意外,记录所有级别信息
 举例: .!err 除了err级别,别的级别都记录
 .none 指的是排除某个类别
实战案例:
自定义ssh 服务的日志
1) 编辑rsyslog的配置文件
vim  /etc/rsyslog.conf 
# Save boot messages also to boot.log
local7.* /var/log/boot.log
local0.* /var/log/sshd.log
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 
2) 定义ssh服务的日志级别
[root@centos7-xinsz08 ~]# vim /etc/ssh/sshd_config
 添加的内容如下:
SyslogFacility local0
  
 - 1
 - 2
 
3) 启动rsyslog和sshd服务
  120  systemctl  restart rsyslog
  121  systemctl  restart sshd
  
 - 1
 - 2
 - 3
 
4)查看是否生成相关日志
122  cd /var/log/
 124  more sshd.log 
  
 - 1
 - 2
 
[root@centos7-xinsz08 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.
  
 - 1
 - 2
 - 3
 - 4
 
备注: 对应信息: 时间 - 主机-服务-进程ID -监听的相关信息
日志切割(轮转)
在linux下的日志会定期进行滚动增加,我们可以在线对正在进行回滚的日志进行指定大小的切割(动态),如果这个日志是静态的。比如没有应用向里面写内容。那么我们也可以用split工具进行切割;其中Logrotate支持按时间和大小来自动切分,以防止日志内容将包含/var/log的文件系统填满。
logrotate 配置文件:
 /etc/ logrotate.conf /etc/ lograte.conf.d/
logrotate的执行由crond服务实现。在/etc/cron.daily目录中,有个文logrotate,它实际上是个shell script,用来启动logrotate
[root@centos7-xinsz08 log]# cd /etc/cron.daily/
[root@centos7-xinsz08 cron.daily]# ls
logrotate  man-db.cron  mlocate
  
 - 1
 - 2
 - 3
 
logrotate程序每天由cron在指定的时间(/etc/crontab)启动
日志回滚原理:
当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志.
  
 - 1
 
sshd日志回滚实战
1) 修改配置文件
[root@centos7-xinsz08 log]# vim /etc/logrotate.conf
/var/log/sshd.log {   // 指定的是要切割的日志文件 missingok //如果文件丢失不报错 monthly //每月轮换一次 create 0664 root utmp  //设置sshd.log这个文件的属主和属组 minsize 10M 文件超过10M进行回滚 rotate 2 日志进行分割后,保留两份历史数据
}
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 
2) 重启rsyslog
systemctl restart rsyslog
3) 强制切割
logrotate –vf /etc/logrotate.conf
[root@centos7-xinsz08 log]# ll sshd.log
-rw-rw-r--. 1 root utmp 0 2月  28 16:06 sshd.log
//切割完之后,源文件大小变为0
  
 - 1
 - 2
 - 3
 
总结
日志切割,是可以按照文件的大小和时间来进行切割,也可以使用shell脚本来实现。
文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。
原文链接:zmedu.blog.csdn.net/article/details/104555974
- 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)