**认识和分析日志文件**
什么是日志文件?简单来说就是记录系统活动信息的几个文件,内容大概就是记录系统在什么时间由哪个进程做了什么样的操作,发生了何种事件。
1.日志文件存放地
主要存放在/var/log目录下
常见的几个日志文件说明:
/var/log/message
大多数系统日志消息记录在此处。有也例外的:如与身份验证,电子邮件处理相关的定期作业任务等
/var/log/secure
安全和身份验证相关的消息和登录失败的日志文件。 ssh远程连接产生的日志
/var/log/maillog
与邮件服务器相关的消息日志文件
/var/log/cron
与定期执行任务相关的日志文件
/var/log/boot.log
与系统启动相关的消息记录
/var/log/dmesg
与系统启动相关的消息记录
日志文件是怎么产生的?
1:软件开发商自行定义写入的日志文件及格式
2:linux自带的日志文件管理服务统一管理,只需要将信息丢给它,自
行帮你分析,并分类放置倒各个日志文件,
此服务为:rsyslog.service
2.日志文件的一般格式、
#事件发生的事件
#发生此事件的主机名
#此事件的服务类型;命令(如,systemd,sshd等)
#该事件的详细内容
例如:/var/log/secure
大概意思就是:
在11月29日clb这台主机上 ssh服务,root用户登录了这台主机
还有特别多的日志信息,主要集中在/var/log/messages这个文件中,做为一个合格的系统管理员,常查看这个文件是非常有必要的,多看日志文件对系统正常运行帮助真的挺大。
例1:查看哪个IP地址经常暴力破解系统用户密码
[root@chengLB~]# ssh root@192.168.29.2 #故意输错3次密码
[root@chengLB log]# grep Failed /var/log/secure
Aug 19 21:55:42 panda sshd[84029]: Failed password for root from 10.10.30.130 port 50916 ssh2
Aug 19 21:55:44 panda sshd[84029]: Failed password for root from 10.10.30.130 port 50916 ssh2
Aug 19 21:55:47 panda sshd[84029]: Failed password for root from 10.10.30.130 port 50916 ssh2
Aug 19 21:55:52 panda sshd[84034]: Failed password for root from 10.10.30.130 port 50917 ssh2
[root@chengLB log]# grep Failed /var/log/secure|awk ‘{print $11}’|uniq -c
3 192.168.29.2
注:awk ‘{print $11}’ #以空格做为分隔符,打印第11列的数据
uniq命令用于报告或忽略文件中的重复行,-c或——count:在每列旁边显示该行重复出现的次数;
例2:/var/log/wtmp文件的作用
/var/log/wtmp也是一个二进制文件,记录每个用户的登录次数和持续时间等信息。
可以用last命令输出wtmp中内容: last 显示到目前为止,成功登录系统的记录
[root@chengLB~]# last
root pts/2 192.168.29.100 Tue May 22 00:35 still logged in
root pts/2 192.168.29.100 Mon May 21 20:42 - 00:35 (03:53)
或:
[root@chengLB~]# last -f /var/log/wtmp
例3:使用 /var/log/btmp文件查看暴力破解系统的用户
/var/log/btmp文件是记录错误登录系统的日志。如果发现/var/log/btmp日志文件比较大,大于1M,就算大了,就说明很多人在暴力破解ssh服务,此日志需要使用lastb程序查看
[root@chengLB~]# lastb
root ssh:notty 192.168.29.100 Mon May 21 21:49 - 21:49 (00:00)
root ssh:notty 192.168.29.100 Mon May 21 21:49 - 21:49 (00:00)
发现后,使用防火墙,拒绝掉:命令如下:
iptables -A INPUT -i eth0 -s. 192.168.29.100 -j DROP
查看恶意ip试图登录次数:
lastb | awk ‘{ print $3}’ | sort | uniq -c | sort -n
清空日志:
方法1:[root@chengLB~]# > /var/log/btmp
方法2: rm -rf /var/log/btmp && touch /var/log/btmp
两者的区别?
使用方法2,因为创建了新的文件,而正在运行的服务,还用着原来文件的inode号和文件描述码,所需要重启一下rsyslog服务。建议使用方法1 > /var/log/btmp
3.rsyslog.servers:记录文件日志的服务
linux日志服务由rsyslog.servers这个服务负责
先检查一下这个服务状态吧
[root@clb ~]# systemctl status rsyslog.service
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since 五 2019-11-29 14:35:49 CST; 37min ago
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
Main PID: 1583 (rsyslogd)
Tasks: 3
CGroup: /system.slice/rsyslog.service
[root@clb ~]# systemctl status rsyslog.service #查看此服务状态
[root@clb ~]# systemctl restart rsyslog.service #重启此服务
[root@clb ~]# systemctl enable rsyslog.service #设置开机自启
3.1 rsyslog.servers的配置文件:/etc/rsyslog.conf
/etc/rsyslog.conf主要包含了三个选项
●什么服务
●服务处于什么等级
●日志存放位置
日志的名称:
daemon 系统服务相关
kern 内核产生的信息
lpr 打印系统产生的
authpriv 安全认证
cron 定时相关
mail 邮件相关
syslog 日志服务本身的
news 新闻系统
local0~7 自定义的日志设备
local0-local7——8个系统保留的类, 供其它的程序使用或者是用户自定义
信息等级:
编码 优先级 严重性
7 debug 信息对开发人员调试应用程序有用,
6 info 正常的操作信息,可以收集报告,测量吞吐量等
5 notice 注意,正常但重要的事件,
4 warning 警告,不采取行动。将会发生错误。比如文件系统使
3 err 错误,阻止某个模块或程序的功能不能正常使用
2 crit 关键的错误,已经影响了整个系统或软件不能正常工作的信息
1 alert 警报,需要立刻修改的信息
●/etc/rsyslog.conf文件的具体内容
编辑配置文件 vim /etc/rsyslog.conf
.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv. /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
.emerg :omusrmsg:
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
注释:
#KaTeX parse error: Expected 'EOF', got '#' at position 19: …ServerRun 514 #̲允许514端口接收使用UDP协…InputTCPServerRun 514 ##允许514端口接收使用TCP协议转发过来的日志
#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 指的是排除某个类别 例: mail.none 所有mail类别的日志都不记录
rsyslor.conf语法练习
例1:将mail相关的日志放到/var/log/mail.log 在rsyslog.conf中怎么设置?
mail.info /var/log/mail.log
实战-自定义ssh服务的日志类型和存储位置
[root@chengLB~]# vim /etc/rsyslog.conf #以73行下,插入以下红色标记内容
73 local7.* /var/log/boot.log
74 local0.* /var/log/sshd.log
注:把local0类别的日志,保存到 /var/log/sshd.log路径
定义ssh服务的日志类别为local0,编辑sshd服务的主配置文件
[root@chengLB log]# vim /etc/ssh/sshd_config #插入
SyslogFacility local0
改:32 SyslogFacility AUTHPRIV
为:32 SyslogFacility local0
先重启rsyslog服务(生效配置)
[root@chengLB log]# systemctl restart rsyslog
再重启sshd服务.生成日志
[root@chengLB log]# systemctl restart sshd
验证是否生成日志并查看其中的内容,
[root@chengLB~]# cat /var/log/sshd.log #说明修改成功
May 22 00:19:54 clb sshd[44737]: Server listening on 0.0.0.0 port 22.
May 22 00:19:54 clb sshd[44737]: Server listening on :: port 22.
上面对就的信息:时间 主机 服务 进程ID 相关的信息
互动:如何防止日志删除?
[root@chengLB~]# chattr +a /var/log/sshd.log
[root@chengLB~]# lsattr /var/log/sshd.log
-----a---------- /var/log/sshd.log
[root@chengLB~]# systemctl restart sshd
[root@chengLB~]# cat /var/log/sshd.log #重启服务,查看日志有所增加
注:这个功能看着很强大,其实不实用,因这样会让系统日志切割时报错,日志有时会太。最主的是,黑客可以取消这个属性。
[root@chengLB~]# chattr -a /var/log/sshd.log #取消,这里一定要取消,不然后面做日志切割报错
互动:当日志太多,导致日志很文件大怎么办?