## 两个服务都处理日志消息$ systemd-journald #默认记入内存$ rsyslog #默认记入硬盘## 日志格式有: 时间日期 主机名 用户 执行命令 等/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.类别: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 紧急,内核崩溃等严重信息## 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.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 #记录所有日志$ chattr +a /var/log/all.log旧的日志文件剪切改名,并创建新的日志文件,超过范围则删除(可以通过脚本实现)
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 [选项] -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 /拆分文件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 x05server端配置
## 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