什么是 Linux 日志
进程和操作系统内核需要能够为发生的事件记录日志,这些日志可用于系统审核和问题的故障排除。
日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。
日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者。
日志在一般哪里
一般常见的日志文件存放在:/var/log 中
常见的日志有哪些
-
btmp:记录登录失败的信息
# 如果发现 /var/log/btmp 文件很大,说明有人在对你进行暴力破解 [root@fp-21 log]# lastb 12 ssh:notty 10.0.0.1 Mon Mar 2 09:29 - 09:29 (00:00) 12 ssh:notty 10.0.0.1 Mon Mar 2 09:29 - 09:29 (00:00) 12 ssh:notty 10.0.0.1 Mon Mar 2 09:29 - 09:29 (00:00) 12 ssh:notty 10.0.0.1 Mon Mar 2 09:29 - 09:29 (00:00) 12 ssh:notty 10.0.0.1 Mon Mar 2 09:29 - 09:29 (00:00) 12 ssh:notty 10.0.0.1 Mon Mar 2 09:29 - 09:29 (00:00) btmp begins Mon Mar 2 09:29:22 2020
-
lastlog:记录最近几次登录事件和最后一次不成功的登录
# 查看最后登录信息,记录所有用户什么登录过系统,查看该文件,可以判断是否有后门登录用户 [root@fp-21 log]# lastlog Username Port From Latest # 用户 端口 来自 最后登录 root pts/1 10.0.0.1 Mon Mar 2 09:29:04 +0800 2020 bin **Never logged in** daemon **Never logged in** adm **Never logged in** lp **Never logged in** ……
-
messages:从 syslog 记录信息
# 可查看哪个用户通过哪种方式登录,登录时长 [root@fp-21 log]# last root pts/1 10.0.0.1 Mon Mar 2 09:29 - 09:29 (00:00) root pts/0 10.0.0.1 Mon Mar 2 09:17 still logged in reboot system boot 3.10.0-957.el7.x Mon Mar 2 00:20 - 09:35 (09:14) root pts/0 10.0.0.1 Fri Jan 17 22:41 - down (00:05) reboot system boot 3.10.0-957.el7.x Fri Jan 17 22:38 - 22:46 (00:07) root pts/0 10.0.0.1 Fri Dec 6 20:40 - down (00:05) reboot system boot 3.10.0-957.el7.x Fri Dec 6 20:39 - 20:46 (00:06) …… wtmp begins Thu Nov 21 23:40:24 2019
日志各个种类
- auth:pam 产生的日志
- authpriv:ssh,ftp 等登录信息的验证信息
- cron:时间任务相关
- kern:内核
- lpr:打印
- mail:邮件
- mark(syslog)-rsyslog:服务内部的信息,时间标识
- news:新闻组
- user:用户程序产生的相关信息
- uucp:unix to unix copy,unix 主机之间相关的通讯
- local 1~7:自定义的日志设备
日志的级别
- none:完蛋,什么都不记录
- emerg:紧急,内核崩溃等严重信息
- alert:警报,需要立刻修改的信息
- crit:严重,阻止整个系统或者整个软件不能工作的信息
- err:错误,阻止某个功能或者模块不能正常工作的信息
- warning:警告
- notice:注意,最具有重要性的普通条件的信息
- info:正常,一般信息的日志,最常用
- debug:调试信息,日志信息最多
日志服务信息
操作系统 | 服务名称 | 配置文件 |
---|---|---|
RHEL 5 | syslog | /etc/syslog |
RHEL 6 | rsyslog | /etc/rsyslog |
RHEL 7 | rsyslog | /etc/rsyslog |
日志模块信息
模块名称 | 模块作用 |
---|---|
$ModLoad imuxsock | 支持本地系统日志的模块 |
$ModLoad imklog | 支持内核日志的模块 |
$ModLoad immark | 支持日志标记 |
$ModLoad imudp | 支持 UDP 协议 |
$ModLoad imtcp | 支持 TCP 协议 |
$UDPServerRun 514 | 允许514端口接受使用转发来的日志 |
日志输入的规则
-info:高于 info 级别的信息全部都记录到某个文件里去
.= 级别:仅记录等于某个级别的日志
.! 级别:除了某个级别之外,记录所有级别信息
. none:排除某个级别
自定义 ssh 服务日志
首先在日志服务配置文件中添加规则
# 添加本地 ssh 日志保存路径
[root@fp-21 ~]# vim /etc/rsyslog.conf
72 # Save boot messages also to boot.log
73 local7.* /var/log/boot.log
74 local0.* /var/log/sshd.log
75
修改 ssh 服务配置文件
# 注释掉默认路径
[root@fp-21 ~]# cat /var/log/sshd.log
30 # Logging
31 #SyslogFacility AUTH
32 #SyslogFacility AUTHPRIV
33 #LogLevel INFO
# 添加新路径
34 SyslogFacility /var/log/sshd.log
重新启动服务
[root@fp-21 ~]# systemctl restart rsyslog.service
[root@fp-21 ~]# systemctl restart sshd.service
查看文件
[root@fp-21 log]# cat /var/log/sshd.log
# 时间 主机 服务(进程ID、监听的相关信息)
Mar 2 10:18:01 fp-21 sshd[9780]: Server listening on 0.0.0.0 port 22.
Mar 2 10:18:01 fp-21 sshd[9780]: Server listening on :: port 22.
日志切割
在 Linux 下的日志会定期进行滚动增加,我们可以在线对正在进行回滚的日志进行指定大小的切割 (动态),如果这个日志是静态的。比如没有应用向里面写内容。那么我们也可以用 split 工具进行切割:其中 Logrotate 支持按时间和大小来自动切分以防止日志内容将包含 wafliog 的文件系统填满。
日志切割原理:
当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志。
修改配置文件添加规则
[root@fp-21 ~]# vim /etc/logrotate.conf
35 /var/log/btmp { # 指定的要切割的文件
36 missingok # 文件丢失不报错
37 monthly # 每月切割一次
38 create 0600 root utmp # 权限、属主、属组
39 rotate 2 # 切割保留份数
40 }
重新加载文件,强制切割
[root@fp-21 ~]# cd /etc/cron.daily/
[root@fp-21 cron.daily]# logrotate -vf /etc/logrotate.conf
……
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
fscreate context set to system_u:object_r:var_log_t:s0
renaming /var/log/sshd.log to /var/log/sshd.log-20200302
creating new /var/log/sshd.log mode = 0600 uid = 0 gid = 22
set default create context
查看是否切割成功
[root@fp-21 ~]# ll /var/log/ssh*
-rw-------. 1 root utmp 0 Mar 2 11:19 /var/log/sshd.log
-rw-------. 1 root root 341 Mar 2 10:34 /var/log/sshd.log-20200302
切割成功,源文件大小为0
总结
只有注入思想的博客才是好的博客