Linux系统中的日志管理
日志对于安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过它来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。
日志主要的功能有:审计和监测。它还可以实时的监测系统状态,监测和追踪侵入者等等
那么日志存放的位置在哪里呢?
我们的 /var/log 是存放日志的位置
常用的日志文件如下:
btmp 记录denglu失败的信息
lastlog 记录最近几次成功登录的事件和最后一次不成功的登录
messages 从syslog中记录信息(有的链接到syslog文件)
utmp 记录当前登录的每个用户
wtmp 系统登录的情况:登入登出
登录信息的查看
我们也可以通过last 命令查看登录日志内容
哪个用户在哪个时间通过哪种方式登录系统的情况
/var/log/lastlog #最后登录信息
lastlog #记录所有的用户什么时候登录过系统
/var/log/btmp # 用户登录系统的错误信息
lastb 查看
# 如果说你发现你的btmp文件变得很大,说明有很大的可能是有人在暴力破解你的主机
lastlog 和 last的区别:
last 查看IP
lastlog 查看后门的账号
日志的记录方式
日志的种类:
daemon 后台进程相关
kern 内核产生的信息
lpr 打印系统产生的
authpriv 安全认证
cron 定时相关
mail 邮件相关
syslog 日志服务本身的
news 新闻系统
local 0local 7 8个系统保留的类, 供其它的程序使用 /或者是用户自定义
日志的级别: 轻重
debug 排错的信息
info 正常的信息
notice 注意
warn 警告
err 错误
crit 关键的错误
alert 警报
energ 紧急
日志服务
旧版本 rhel5
服务名称 syslog
配置文件 /etc/syslog.conf
rhel6-7
服务名称 rsyslog
配置文件 /etc/rsyslog.conf
#编辑配置文件 vim /etc/rsyslog.conf
#kern.* #内核类型的所有级别日志 存放到 /dev/console
*.info;mail.none;authpriv.none;cron.none /var/log/messages
所有的类别级别是info以上 除了mail,authpriv,cron (产生的日志太多,不易于查看)
类别.级别
authpriv.* 认证的信息存放 /var/log/secure
mail.* 邮件相关的信息 存放 -/var/log/maillog
cron.* 计划任相关的信息 存放 /var/log/cron
local7.* 开机时显示的信息存放--> /var/log/boot.log
注:
“- ”号: 邮件的信息比较多,现将数据存储到内存,达到一定大小,全部写到硬盘.有利于减少I/O进程的开销
数据存储在内存,如果关机不当数据消失
日志输入的规则
.info 高于info级别的信息全部记录到某个文件
=级别 仅记录等于某个级别的日志
例:.=info 只记录info级别的日志
! 级别 除了某个级别意外,记录所有的级别信息
例.!err 除了err外记录所有
none 指的是排除某个类别
自定义ssh服务的日志
#编辑rsyslog配置文件
vi /etc/rsyslog.conf
输入 local 0 .* /var/log/sshd.log #日志的保存路径
#定义ssh服务的日志级别
#编辑sshd服务的主配置文件
vim /etc/ssh/sshd_config
#先重启rsyslog服务(生效配置)
systemctl restart rsyslog
#再重启sshd服务.生成日志
systemctl restart sshd
#查看一下有没有对应的日志产生
日志的回滚
在linux下的日志会定期进行回滚,
控制系统执行日志回滚操作的配置文件主要有:
/etc/logrotate.conf
以及 /etc/logrotate.d/
这个目录下的明细配置文件。
日志是很大的,如果让日志无限制的记录下去 是一件很可怕的事情,日积月累就有几百兆占用磁盘的空间,
如果你要找出某一条可用信息海底捞针
日志回滚原理:
当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志.
vim /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly # 每周执行回滚
# keep 4 weeks worth of backlogs
rotate 4 #保留4个副本
# create new (empty) log files after rotating old ones
create #创建新的文件存储数据
# use date as a suffix of the rotated file
dateext #使用日期为后缀的回滚文件 #可以去/var/log目录下看看
# 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
/var/log/wtmp { #指定的日志文件
monthly #每月轮转一次
create 0664 root utmp
minsize 1M #日志文件必须大于1M才会去轮换(回滚)
rotate 1 #保存一个轮换日志
}
/var/log/btmp {
missingok # 如果日志文件不存在,继续处理下一个文件而不产生报错信息。
monthly
create 0600 root utmp #设置utmp 这个日志文件的权限,属主,属组
rotate 1
}
同样的,我们也可以自定义ssh日志的基础上,实现日志回滚
vim /etc/logrotate.conf
/var/log/sshd.log{
missingok # 如果日志文件不存在,继续处理下一个文件而不产生报错信息。
monthly
create 0600 root utmp #root用户,utmp组创建
minsize 1M
rotate 1
}
配置远程日志服务器->实现日志集中的管理
准备两台服务器
server端配置
# 编辑 /etc/rsyslog.conf
#Provides TCP syslog reception
$ModLoad imtcp #开启支持tcp的模块
$InputTCPServerRun 514 #允许接收tcp 514的端口传来的日志
#UDP速度快不保证数据的完整
# TCP可靠.完整
# 使用TCP的方式,去除#号注释
# 重新启动 rsyslog
systemctl restart rsyslog
查看服务监听的状态
netstat -anlput |grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 4471/rsyslogd
tcp 0 0 192.168.75.129:514 192.168.75.128:33801 ESTABLISHED 4471/rsyslogd
tcp6 0 0 :::514 :::* LISTEN 4471/rsyslogd
client端配置:
vim /etc/rsyslog.conf
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
*.* @@192.168.75.129:514 #添加此行 服务器
. 所有类别和级别的日志
@@192.168.1.63:514 服务端的IP:端口
重启rsyslog 服务
systemctl restart rsyslog
服务端验证:
关闭防火墙
tail -f /var/log/message #动态查看增加内容