当前位置:首页>Linux>1.21 Linux日志管理

1.21 Linux日志管理

  • 2026-10-11 08:34:35
1.21 Linux日志管理

2 日志管理

## 两个服务都处理日志消息$ systemd-journald  #默认记入内存$ rsyslog    #默认记入硬盘

2.1 日志文件的作用

## 日志格式有:  时间日期  主机名  用户 执行命令 等/var/log/message    #大多数消息系统日志记录处/var/log/secure     #安全和身份验证登录相关日志文件/var/log/maillog    #与邮件相关日志/var/log/cron     #定时任务相关日志/var/log/boot.log    #与系统启动相关的消息记录/var/log/dmesg     #与系统启动相关的消息记录(硬件相关)

例1:检查哪个ip在暴力破解系统用户密码

# 在/var/log/secure文件中查找Failed相关行 awk查找相关列 uniq取消重复 -c统计重复次数[root@localhost ~]# grep "Failed" /var/log/secure | awk '{print $11}' | uniq -c     20 192.168.18.1

例2:登录相关文件

/var/log/wtmp   #记录登录次数和持续时间相关信息/var/log/btmp   #记录登录错误的相关信息

注意:上述两个文件都是二进制文件,无法直接打开读取

设置防火墙过滤规则

练习:将有暴力破解密码意向的IP,通过防火墙过滤

## 步骤:  设置定时清空防火墙规则,避免过滤自己的IP  设置防火墙过滤规则  [root@localhost ~]# crontab -e       #设置定时关闭防火墙规则*/1 * * * * iptables -F[root@localhost ~]# iptables -A INPUT -i ens33 -s 192.168.18.1 -j DROP  #设置防火墙过滤规则
清空日志
  • 先备份,再清空日志

方法1:通过重定向的方式,覆盖写入文件为空 #inode号不改变

#检查all.log的inode号[root@localhost ~]# ll -i /var/log/all.log 16777613 -rw-------. 1 root root 1369 9月  21 14:45 /var/log/all.log#检查all.log不为空[root@localhost ~]# tail -n 5 /var/log/all.log Sep 21 14:45:01 localhost postfix/qmgr[6866]: 13347FBBC0: removedSep 21 14:45:11 localhost sshd[17952]: pam_unix(sshd:session): session closed for user rootSep 21 14:45:11 localhost systemd-logind: Removed session 94.Sep 21 14:45:11 localhost sshd[7797]: pam_unix(sshd:session): session closed for user rootSep 21 14:45:11 localhost systemd-logind: Removed session 32.#先关闭all.log的a属性,再将空覆盖写入,再将a属性给all.log加上[root@localhost ~]# chattr -a /var/log/all.log  && > /var/log/all.log  && chattr +a /var/log/all.log #检查all文件为空[root@localhost ~]# cat /var/log/all.log #检查all文件inode未改变[root@localhost ~]# ll -i /var/log/all.log 16777613 -rw-------. 1 root root 0 9月  21 14:46 /var/log/all.log

方法2:直接删除日志文件,再创建日志文件 #inode号会改变

注意:rsyslog服务无法识别新创建的日志文件,需要重启rsyslog服务

#检查inode号[root@localhost ~]# ll -hi /var/log/all.log 16777613 -rw-------. 1 root root 5.4K 9月  21 14:51 /var/log/all.log#取消文件的a属性,删除,创建,给文件添加a属性[root@localhost ~]# chattr -a /var/log/all.log  && rm -rf /var/log/all.log  && touch /var/log/all.log  && chattr +a /var/log/all.log #检查inode号发生改变[root@localhost ~]# ll -hi /var/log/all.log 17150246 -rw-r--r--. 1 root root 0 9月  21 14:52 /var/log/all.log#重启rsyslog[root@localhost ~]# systemctl restart rsyslog#检查rsyslog服务状态[root@localhost ~]# systemctl status rsyslog● rsyslog.service - System Logging Service   Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)   Active: active (running) since 三 2022-09-21 14:53:03 CST; 11s ago     Docs: man:rsyslogd(8)           http://www.rsyslog.com/doc/ Main PID: 25620 (rsyslogd)   CGroup: /system.slice/rsyslog.service           └─25620 /usr/sbin/rsyslogd -n9月 21 14:53:03 localhost.localdomain systemd[1]: Stopped System Logging Service.9月 21 14:53:03 localhost.localdomain systemd[1]: Starting System Logging Service...9月 21 14:53:03 localhost.localdomain rsyslogd[25620]:  [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="25620" x-info="htt... start9月 21 14:53:03 localhost.localdomain systemd[1]: Started System Logging Service.Hint: Some lines were ellipsized, use -l to show in full.

2.2 日志记录方式

类别:daemon    #后台进程相关kern    #内核产生的信息lpr     #打印系统产生的cron    #定时相关mail    #邮件相关syslog    #日志服务本身的new     #新闻系统authpriv   #安全认证local10~7   #自定义的日志设备local10-local17  #8个系统保留,程序使用或者用户自定义级别:数字越小,级别越重编码     优先级    严重性7   debug    信息对开发人员调试程序有用,操作过程中无用6   info    正常操作信息5   notice    注意,正常但重要的事件4   warning    警告,提示如果不采取行动,将会发生错误。比如文件系统使用90%3   err     错误,阻止某个模块或程序的功能不能正常使用2   crit    关键的错误,已经影响整个系统或者软件不能正常工作的信息1   alert    警报,需要立刻修改的信息0   emerg    紧急,内核崩溃等严重信息

2.3 rsyslog日志服务

## rsyslog日志的配置文件:  /etc/rsyslog.conf  /etc/rsyslog.d#rsyslog.conf[root@localhost ~]# vi /etc/rsyslog.conf*.info;mail.none;authpriv.none;cron.none                /var/log/messagesauthpriv.*                                              /var/log/securemail.*                                                  -/var/log/maillog  #记录到内存cron.*                                                  /var/log/cron*.emerg                                                 :omusrmsg:*    #广播uucp,news.crit                                          /var/log/spoolerlocal7.*                                                /var/log/boot.log

2.4 日志输入规则

.info   #大于等于info级别的信息记录.=级别   #仅记录等于某个级别的日志.=info          /var/log/info.log   #仅记录info级别的日志
.!级别   #除了某个级别外,记录所有.!err           /var/log/all.log   #除了err级别外,记录所有
.none    #排除某个类别mail.none  #所有mail类别的日志都不记录
自定义日志

修改配置文件后,需要重启服务才能启用

在/etc/rsyslog.conf中添加

*.*             /var/log/all.log   #记录所有日志
防止日志删除 添加a属性
$ chattr  +a  /var/log/all.log

3 日志切割、搭建日志收集服务器

3.1 日志切割

日志轮替

旧的日志文件剪切改名,并创建新的日志文件,超过范围则删除(可以通过脚本实现)

logrotate日志轮替配置文件:  /etc/logrotate.conf

全局规则

[root@localhost ~]# vi /etc/logrotate.confweekly    #每周轮替rotate 4   #轮替次数create    #创建新文件,也可以指定新建文件的权限和所有者所属组dateext    #使用日期作为后缀切割文件include /etc/logrotate.d  #包括其他目录文件的规则

局部规则

[root@localhost ~]# vi /etc/logrotate.conf#局部规则/var/log/wtmp {     #指定日志文件的路径,名字    monthly      #每月轮替一次    create 0664 root utmp  #设置wtmp日志文件的权限,所有者,所属组        minsize 1M    #日志轮替的最小值,达到最小值才会轮替,否则到时间也不会轮替    rotate 1     #日志切割后历史文件最多保存一份,不包含当前使用的日志文件}/var/log/btmp {    missingok     #轮替期间,任何错误将被忽略    monthly    create 0600 root utmp    rotate 1}

注:两者同时存在时,则按照局部规则执行

其它参数说明:   monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。  rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。   compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。  delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归 档压缩。  missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。  notifempty: 如果日志文件为空,轮循不会进行。   create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志 文件。  sharedscripts    #关键字之后指定脚本  prerotate/endscript   #执行命令之前执行   比如取消文件a属性  postrotate/endscript  #执行命令之后执行   比如重启服务,给文件添加a属性

日志轮替配置文件目录

## /etc/logrotate.d    #日志轮替配置文件目录,子文件中写着不同的局部规则[root@localhost ~]# ls /etc/logrotate.dbootlog  chrony  syslog  wpa_supplicant  yum
命令 logrotate
## logrotate   [选项]  -v     #显示过程  -f     #强制轮替 (需要指定规则)
#查看指定的轮替规则[root@localhost ~]# cat /etc/logrotate.d/alog/var/log/all.log{ weekly rotate 6 dateext sharedscripts prerotate  /usr/bin/chattr -a /var/log/all.log endscript sharedscripts postrotate  /usr/bin/chattr +a /var/log/all.log  /usr/bin/systemctl restart rsyslog.service endscript}#检查当前日志目录下的子文件[root@localhost ~]# ls /var/logall.log            btmp           dmesg               maillog            secure            tuned                   vmware-vmsvc.loganaconda           btmp-20220921  dmesg.old           maillog-20220921   secure-20220921   vmware-network.1.log    wtmpaudit              chrony         firewalld           messages           spooler           vmware-network.2.log    wtmp-20220921boot.log           cron           grubby_prune_debug  messages-20220921  spooler-20220921  vmware-network.log      yum.logboot.log-20220921  cron-20220921  lastlog             rhsm               tallylog          vmware-vgauthsvc.log.0  yum.log-20220921#执行强制轮替[root@localhost ~]# logrotate -vf /etc/logrotate.confreading config file /etc/logrotate.confincluding /etc/logrotate.dreading config file alog....rotating pattern: /var/log/btmp  forced from command line (1 rotations)empty log files are rotated, old logs are removedconsidering log /var/log/btmp  log needs rotatingrotating log /var/log/btmp, log->rotateCount is 1dateext suffix '-20220921'glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'destination /var/log/btmp-20220921 already exists, skipping rotationset default create context#再次检查当前日志目录下的子文件,发现多了一些轮替产生的文件[root@localhost ~]# ls /var/logall.log            btmp           dmesg.old           messages           spooler-20220921      vmware-vgauthsvc.log.0all.log-20220921   btmp-20220921  firewalld           messages-20220921  tallylog              vmware-vmsvc.loganaconda           chrony         grubby_prune_debug  rhsm               tuned                 wtmpaudit              cron           lastlog             secure             vmware-network.1.log  wtmp-20220921boot.log           cron-20220921  maillog             secure-20220921    vmware-network.2.log  yum.logboot.log-20220921  dmesg          maillog-20220921    spooler            vmware-network.log    yum.log-20220921
日志拆分
## split  文件拆分  -a   #指定输出后缀长度,默认为2个字符  -d   #指定输出后缀用数字代替  -b   #指定输出大小:k、m、g
[root@localhost ~]# cp /var/log/lastlog /root/     #复制日志文件到家目录下[root@localhost ~]# ls           #查看文件alog  anaconda-ks.cfg  lastlog[root@localhost ~]# ll -h /root/总用量 24K-rw-r--r--. 1 root root  243 9月  21 16:06 alog-rw-------. 1 root root 1.4K 8月  23 01:00 anaconda-ks.cfg-rw-r--r--. 1 root root 286K 9月  21 16:20 lastlog[root@localhost ~]# split -db 50k /root/lastlog     #以50k拆分,以数字为后缀拆分lastlog[root@localhost ~]# ll -h /root/        #查看文件总用量 320K-rw-r--r--. 1 root root  243 9月  21 16:06 alog-rw-------. 1 root root 1.4K 8月  23 01:00 anaconda-ks.cfg-rw-r--r--. 1 root root 286K 9月  21 16:20 lastlog-rw-r--r--. 1 root root  50K 9月  21 16:21 x00-rw-r--r--. 1 root root  50K 9月  21 16:21 x01-rw-r--r--. 1 root root  50K 9月  21 16:21 x02-rw-r--r--. 1 root root  50K 9月  21 16:21 x03-rw-r--r--. 1 root root  50K 9月  21 16:21 x04-rw-r--r--. 1 root root  36K 9月  21 16:21 x05
cat 文件合并
格式:  cat      /拆分文件1   /拆分文件2  ....  /拆分文件n  >  合并文件 
[root@localhost ~]# ll -h /root/           #查看文件总用量 320K-rw-r--r--. 1 root root  243 9月  21 16:06 alog-rw-------. 1 root root 1.4K 8月  23 01:00 anaconda-ks.cfg-rw-r--r--. 1 root root 286K 9月  21 16:20 lastlog-rw-r--r--. 1 root root  50K 9月  21 16:21 x00-rw-r--r--. 1 root root  50K 9月  21 16:21 x01-rw-r--r--. 1 root root  50K 9月  21 16:21 x02-rw-r--r--. 1 root root  50K 9月  21 16:21 x03-rw-r--r--. 1 root root  50K 9月  21 16:21 x04-rw-r--r--. 1 root root  36K 9月  21 16:21 x05[root@localhost ~]# cat ./x00 ./x01 ./x02 ./x03 ./x04 ./x05 > /root/lalog  #合并文件[root@localhost ~]# ll -h /root/总用量 608K-rw-r--r--. 1 root root  243 9月  21 16:06 alog-rw-------. 1 root root 1.4K 8月  23 01:00 anaconda-ks.cfg-rw-r--r--. 1 root root 286K 9月  21 16:22 lalog-rw-r--r--. 1 root root 286K 9月  21 16:20 lastlog-rw-r--r--. 1 root root  50K 9月  21 16:21 x00-rw-r--r--. 1 root root  50K 9月  21 16:21 x01-rw-r--r--. 1 root root  50K 9月  21 16:21 x02-rw-r--r--. 1 root root  50K 9月  21 16:21 x03-rw-r--r--. 1 root root  50K 9月  21 16:21 x04-rw-r--r--. 1 root root  36K 9月  21 16:21 x05

3.2 远程日志服务器 (可实现日志集中管理)

server端配置

## 1)vim  /etc/rsyslog.conf   #修改配置文件[root@localhost ~]# vim /etc/rsyslog.conf  #进入配置文件修改#取消注释以下两行代码$ModLoad imtcp         $InputTCPServerRun 514
## 2)重启rsyslog服务[root@localhost ~]# systemctl restart rsyslog.service
## 3)清空防火墙规则[root@localhost ~]# iptables -F

客户端配置

## 1)修改主机名[root@localhost ~]# hostnamectl set-hostname yq
## 2)修改配置文件/etc/rsyslog.conf  若服务端取消注释的是UDP,则客户端配置文件用一个@    若服务端取消注释的是TCP,则客户端配置文件用两个@[root@yq ~]# vi /etc/rsyslog.conf *.*             @@192.168.18.134:514
## 3)重启rsyslog服务,清空防火墙[root@yq ~]# systemctl restart rsyslog && iptables -F

测试

## #客户端执行添加用户等会记录日志的操作,然后进入服务端查看#客户端[root@yq ~]# useradd yq1[root@yq ~]# useradd yq2#服务端[root@localhost ~]# tail -n 10 /var/log/secure    #检查服务端是否记录客服端日志Sep 21 16:30:59 localhost polkitd[6151]: Registered Authentication Agent for unix-process:15058:566757 (system bus name :1.54 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)Sep 21 16:30:59 localhost polkitd[6151]: Unregistered Authentication Agent for unix-process:15058:566757 (system bus name :1.54, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)Sep 21 16:36:08 yq polkitd[6387]: Unregistered Authentication Agent for unix-process:7095:49226 (system bus name :1.27, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)Sep 21 16:38:10 yq useradd[7113]: new group: name=yq1, GID=1000Sep 21 16:38:10 yq useradd[7113]: new user: name=yq1, UID=1000, GID=1000, home=/home/yq1, shell=/bin/bashSep 21 16:38:13 yq useradd[7118]: new group: name=yq2, GID=1001Sep 21 16:38:13 yq useradd[7118]: new user: name=yq2, UID=1001, GID=1001, home=/home/yq2, shell=/bin/bash[root@localhost ~]#[root@localhost ~]# grep yq /var/log/all.log | grep useradd  #检查服务端是否记录客服端日志Sep 21 16:38:10 yq useradd[7113]: new group: name=yq1, GID=1000Sep 21 16:38:10 yq useradd[7113]: new user: name=yq1, UID=1000, GID=1000, home=/home/yq1, shell=/bin/bashSep 21 16:38:13 yq useradd[7118]: new group: name=yq2, GID=1001Sep 21 16:38:13 yq useradd[7118]: new user: name=yq2, UID=1001, GID=1001, home=/home/yq2, shell=/bin/bash

最新文章

随机文章