日志对于Linux系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,管理员可以通过它来检测错误发生的 原因,或者是受到攻击时攻击者留下的痕迹。日志主要的功能有审计和监测,它还可以实时监测系统状态,监测和追踪侵入者等
系统日志默认分类
/var/log/messages ##系统服务及日志,包括服务的信息,报错等等
/var/log/secure ##系统认证信息日志
/var/log/maillog ##系统邮件服务信息
/var/log/cron ##系统定时任务信息
/var/log/boot.log ##系统启动信息
在执行cat /var/log/messages命令后会看到如图所是内容
上图显示的日志文件内容由下面四个部分构成:
- 时间标签:表示消息发出的日期和时间
- 主机名:表示生成消息的计算机的主机名。如果只有一台计算机,主机名就有可能没有必要了,但是,如果在网络环境中使用rsyslog服务,那么就可能把不同主机的消息发送到一台服务器上集中处理
- 生成消息的子系统的名字:表示消息来自内核或者是进程的名字,以及表示发出消息的程序的名字。
- 消息:消息的内容
日志管理服务(rsyslog)
rsyslog(负责采集日志和分类存放日志)
rsyslog已被许多日志函数采用,他被用在许多保护措施当中。任何程序都可以通过rsyslog服务记录事件。rsyslog服务可以记录系统事件,可以写到一个文件或者设备中,或给用户发送一个信息。它能记录本地事件或者通过网络记录另一个主机上的事件。rsyslog服务依赖于两个重要的文件:/etc/init.d/rsyslog(守护进程)和/etc/rsyslog.conf配置文件。习惯上,许多rsyslog信息被写到/var/log目录下的文件中
在/etc/rsyslog.conf文件中规则部分的格式如下所示,日志内容和级别之间以“.”隔开:日志内容.级别 动作
日志的内容:
功能 | 描述 |
auth | 认证系统,比如login或su,即询问用户名和口令 |
authpriv | 安全、验证等相关信息 |
cron | 时间任务相关 |
kern | 内核产生的消息 |
lpr | 打印服务相关信息 |
mail | 电子邮件服务相关信息 |
news | 网络新闻服务相关的信息 |
user | 由用户程序产生的相关信息 |
uucp | unix to umix copy, unix主机之间相关的通讯 |
local0~local7 | 与自定义程序一起使用 |
级别:
级别 | 描述 |
emerg | 紧急情况 |
alert | 立即引起注意的情况 |
crit | 危险情况的警告 |
err | 错误信息 |
warning | 警告信息 |
notice | 需要引起注意的情况 |
info | 正常情况 |
debug | 包含情报的信息,通常只在一个程序时使用 |
none | 用于禁止任何消息 |
* | 所有级别,除了none |
动作:
动作 | 描述 |
文件 | 指定日志文件记录日志信息,日志文件使用绝对路径 |
用户名 | 发送信息到指定用户,“*”表示所有用户 |
设备 | 发送信息到指定设备中,比如/dev/console |
@主机名 | 发送信息到指定的远程主机,远程主机必须运行rsyslog,并可以识别rsyslog配置文件 |
日志的远程同步
在日志发送方:
vim /etc/rsyslog.conf
*.* @172.25.254.200 @表示udp协议发送。@@表示tcp协议发送
systemctl reatsrt rsyslog
在日志接受方
vim /etc/rsyslog.conf
15 modload imudp
16 udpserverrun 514开启接受端口
systemctl reatsrt rsyslog
systemctl stop firewalld关闭火墙
systemctl disable firewalld设定火墙开机关闭
测试
在发送方和接受方度清空日志文件
> /var/log/messages
在日志地发送方
logger test
cat /var/log/messages 查看日志已经生成
在日志接受方查看
cat /var/log/messages
日志采集格式的设定
vim /etc/rsyslog.conf
$template LOGFMT,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n
以百分号为界限,分为5部分
第一部分显示日志时间
第二部分显示主机ip
第三部分日志记录目标
第四部分日志内容
第五部分换行
时间同步服务
服务名称 chronyd
在服务端:
vim /etc/chrony.conf
22 allow 172.25.254.0/24 #允许那些客户端来同步本机时间
29 local stratum 10 #本机不同步任何主机的时进,本机作为时间源
重启 systemctl restart chronyd
timedatectl set-timezone Asia/Shanghai 更改当前时区为东8区
在客户端:
vim /etc/chrony.conf
server 172.25.254.200 iburst #本机立即同步200主机的时间
重启 systemctl restart chronyd
timedatectl set-timezone Asia/Shanghai 更改当前时区为东8区
测试:(在客户端)
chronyc sources -v
210 Number of sources =1
最下边出现^*
timedatectl 命令
timedatectl #管理系统时间
timedatectl status #显示当前时间信息
set-time #设定当前时间
set-timezone #设定当前时区
set-local-rtc 0|1 #设定是否使用utc时间
list-timezone #查看支持的所有时区
日志分析工具journal
systemd-journald ##进程名称
journalctl ##直接执行,浏览系统日志
-n 3 ##显示最新3条
-p err ##显示报错
-f ##监控日志
--since --until ## 从什么时间到什么时间的日志
-o verbose ##显示日志能够使用的详细进程参数
##_SYSTEMD_UNIT=sshd.service服务名称
##_PID=1182进程pid