日志管理

这一生的挚爱 提交于 2019-12-02 09:23:20

日志的种类和记录的方式-自定义ssh服务日志类型和存储位置
在centos7中,系统日志消息由两个服务负责处理:systemd-journaldrsyslog

日志文件 用途
/var/log/message 大多数系统日志消息记录在此处。有也例外的:如与身份验证,电子邮件处理相关的定期作业任务等
/var/log/secure 安全和身份验证相关的消息和登录失败的日志文件。 ssh远程连接产生的日志
/var/log/maillog 与邮件服务器相关的消息日志文件
/var/log/cron 与定期执行任务相关的日志文件
/var/log/boot.log 与系统启动相关的消息记录
/var/log/dmesg 与系统启动相关的消息记录

查看哪个IP地址经常暴力破解系统用户密码

 grep Failed /var/log/secure
 grep Failed /var/log/secure|awk '{print $11}'|uniq -c

awk '{print $11}' #以空格做为分隔符,打印第11列的数据
uniq -c命令用于报告或忽略文件中的重复行,-c或——count:在每列旁边显示该行重复出现的次数;
/var/log/wtmp文件的作用,/var/log/wtmp也是一个二进制文件,记录每个用户的登录次数和持续时间等信息。
/var/log/btmp文件是记录错误登录系统的日志。如果发现/var/log/btmp日志文件比较大,大于1M,就算大了,就说明很多人在暴力破解ssh服务,此日志需要使用lastb程序查看
可以用last命令输出wtmp中内容: last 显示到目前为止,成功登录系统的记录
last #查看登录成功的记录
lastb #查看登录失败的记录

发现暴力登录后,使用防火墙,拒绝掉:命令如下:

iptables -A INPUT -i eth0 -s. 192.168.1.63 -j DROP

> /var/log/btmp # 清空日志:

日志记录的方式
分类------------ 级别
在这里插入图片描述
在这里插入图片描述

rsyslog日志服务配置

Rhel5 ->服务名称syslog ->配置文件 /etc/syslog.conf
rhel6-7 ->服务名称rsyslog ->配置文件 /etc/rsyslog.conf
我们来查看一下日志的配置文件信息:
编辑配置文件 vim /etc/rsyslog.conf
在这里插入图片描述
#$UDPServerRun 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类别的日志都不记录

实战-自定义ssh服务的日志类型和存储位置

1.vim /etc/rsyslog.conf #编辑日志配置文件在73行下,插入以下内容
local0.* /var/log/sshd.log

把local0类别的日志,保存到 /var/log/sshd.log路径在这里插入图片描述

2.定义ssh服务的日志类别为local0,编辑sshd服务的主配置文件

 vim /etc/ssh/sshd_config

32行改下类别
改:32 SyslogFacility AUTHPRIV
为:32 SyslogFacility local0

在这里插入图片描述

3.先重启rsyslog服务(生效配置)

systemctl restart rsyslog

再重启sshd服务.生成日志

systemctl restart sshd

验证是否生成日志并查看其中的内容,

cat  /var/log/sshd.log   #说明修改成功

在这里插入图片描述上面对就的信息:时间 主机 服务 进程ID 相关的信息

防止日志被删除
chattr +a /var/log/sshd.log #设置权限,只能增加不能删除删减。
lsattr /var/log/sshd.log #查看权限
这个功能看着很强大,其实不实用,因这样会让系统日志切割时报错,日志有时会太。最主的是,黑客可以取消这个属性。
chattr -a /var/log/sshd.log #取消权限

日志切割-搭建远程日志收集服务器
在linux下的日志会定期进行滚动增加,我们可以在线对正在进行回滚的日志进行指定大小的切割(动态),如果这个日志是静态的。比如没有应用向里面写内容。那么我们也可以用split工具进行切割;其中Logrotate支持按时间和大小来自动切分,以防止日志文件太大。
logrotate配置文件主要有:
/etc/logrotate.conf 以及 /etc/logrotate.d/ 这个子目录下的明细配置文件。
logrotate的执行由crond服务调用的。
vim /etc/cron.daily/logrotate #查看logrotate脚本内容
logrotate程序每天由cron在指定的时间(/etc/crontab)启动
日志是很大的,如果让日志无限制的记录下去 是一件很可怕的事情,日积月累就有几百兆占用磁盘的空间,
如果你要找出某一条可用信息很难, 当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志.

vim /etc/logrotate.conf

在这里插入图片描述
weekly : 每周执行回滚,或者说每周执行一次日志回滚
rotate: 表示日志切分后历史文件最多保存离现在最近的多少份 [rəʊˈteɪt] 旋转
create : 指定新创建的文件的权限与所属主与群组
dateext : 使用日期为后缀的回滚文件 #可以去/var/log目录下看看
在这里插入图片描述
其它参数说明:
monthly: 日志文件将按月轮循。其它可用值为 daily(天),‘weekly’(周)或者‘yearly’(年)。
rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
notifempty: 如果日志文件为空,轮循不会进行。
create 644 root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
/var/lib/logrotate/status中默认记录logrotate上次轮换日志文件的时间。

使用 logrotate 进行ssh日志分割
vim /etc/logrotate.d/sshd #创建一个sshd日志切割配置文件
/var/log/sshd.log {
missingok
weekly
create 0600 root root
minsize 1M
rotate 3
}
systemctl restart rsyslog #重启日志服务
logrotate -d /etc/logrotate.d/sshd #预演,不实际轮循
logrotate -vf /etc/logrotate.d/sshd #强制轮循,也就是说即使轮循条件没有满足,也可以通过加-f强制让logrotate轮循日志文件
-v 显示指令执行过程
-f 强制执行
ls /var/log/sshd* #查看效果
配置远程日志服务器-实现日志集中的管理
server端配置
vim /etc/rsyslog.conf # 使用TCP协议方式,收集日志
改:19 #KaTeX parse error: Expected 'EOF', got '#' at position 22: …d imtcp 20 #̲InputTCPServerRun 514
为:
19 $ModLoad imtcp
20 $InputTCPServerRun 514
注:使用UDP协议速度快,不保证数据的完整,使用TCP协议可靠.完整
systemctl restart rsyslog #重新启动 rsyslog
netstat -anlpt| grep 514 #查看服务监听的状态:
在这里插入图片描述
setenforce 0 #关闭selinux功能
systemctl stop firewalld #关闭防火墙
iptables -F #清空防火墙规则

客户端配置
vim /etc/rsyslog.conf #在90行之后,插入

*.*   @@192.168.1.63:514

systemctl restart rsyslog.service #重启rsyslog服务
logger “aaaaa ” #发送模拟日志
tail -f /var/log/messages | grep dk --color #服务端动态查看日志

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!