在CentOS 7中,系统日志消息由两个服务负责处理:systemd-journald和rsyslog。
常见日志文件的作用
/var/log目录是由rsyslog服务维护的,其中存放着一些特定的系统和服务的日志文件,如表
过滤日志文件的Failed字段,把结果通过管道传递给awk命令,打印第11列内容,再把结果通过管道传递给uniq命令进行排序。
uniq命令用于报告或忽略文件中的重复行,选项-c或--count:在每列旁边显示该行重复出现的次数。
[root@testhost log]# grep Failed secure | awk '{print $11}' | uniq -c
42 61.177.173.24
1 default
1 MikroTik
1 113.172.49.210
3 61.177.173.24
1 demo
116 61.177.173.24
1 116.5.187.195
145 61.177.173.24
1 ubnt
1 admin
1 user
/var/log/wtmp文件的作用
/var/log/wtmp是一个二进制文件,记录每个用户的登录次数和持续时间等信息。可以用last命令输出wtmp文件中的内容,last命令用来显示到目前为止成功登录系统的记录。
[root@testhost ~]# last -f /var/log/wtmp
或者
[root@testhost ~]# last
使用/var/log/btmp文件查看暴力破解系统的用户
/var/log/btmp文件是记录错误登录系统的日志。如果发现/var/log/btmp日志文件大于1MB,就说明很多人在暴力破解ssh服务,此日志需要使用lastb命令查看。
[root@testhost ~]# lastb
发现某个IP地址登录错误次数最多后,使用防火墙拒绝,命令如下:
[root@testhost ~]# iptables -A INPUT -i eth0 -s 61.177.173.24 -j DROP
查看恶意IP试图登录次数:
[root@testhost ~]# lastb | awk '{print $3}' | sort | uniq -c | sort -n
1
1 113.101.64.19
1 113.101.65.168
1 113.101.65.242
1 113.85.70.108
1 115.76.6.227
1 116.5.187.195
1 116.5.187.233
1 116.5.187.7
1 Fri
2 113.101.64.46
2 113.160.133.27
2 116.110.144.62
2 116.110.216.253
2 116.110.22.133
2 157.61.212.1
清空日志。
[root@testhost ~]# > /var/log/btmp
或者
[root@testhost ~]# > rm -rf /var/log/btmp && touch /var/log/btmp
两者的区别:
使用方法2时,因为创建了新的文件,而正在运行的服务还用着原来文件的inode号,
所以,需要重启一下rsyslog服务。
建议使用方法1 > /var/log/btmp。
日志的记录方式
(1)日志的分类如下
daemon:后台进程相关的日志。
kern:内核产生的信息。
lpr:打印系统产生的信息。
authpriv:安全认证相关的日志。
cron:定时任务相关的日志。
mail:邮件相关日志。
syslog:日志服务本身的信息。
news:新闻系统相关的日志。
local0~local7:8个系统保留的类,供其他程序使用或者用户自定义。
(2)日志的级别:严重性由轻到重如表
rsyslog日志服务
在RHEL 5系统中,日志服务名为syslog,配置文件为/etc/syslog.conf。
在RHEL 6和RHEL 7系统中,日志服务名为syslog,配置文件为/etc/rsyslog.conf。
使用vim /etc/rsyslog.conf编辑日志的配置文件。
注释如下:
#$UDPServerRun 514:允许514端口接收使用UDP转发过来的日志(相当于开启监听在UDP的514端口,可以作为一个日志服务器使用,默认使用“#”注释掉,使用时需要取消注释)。
#$InputTCPServerRun 514:允许514端口接收使用TCP转发过来的日志(相当于开启监听在TCP的514端口,可以作为一个日志服务器使用,默认使用“#”注释掉,使用时需要取消注释)。
#kern.*/dev/console:内核类型的所有级别日志存放到/dev/console目录下。
*.info;mail.none;authpriv.none;cron.none/var/log/messages:所有的类别级别是info以上的日志,除mail、authpriv、cron(产生的日志太多,不易于查看)外,都存放到/var/log/messages目录下。
authpriv.*/var/log/secure:authpriv(授权相关)设施的所有级别的日志记录到/var/log/secure文件中,该文件的权限为600。
mail.*-/var/log/maillog:mail设施的所有级别的日志记录到/var/log/maillog文件中。
cron.*/var/log/cron #cron(计划任务相关)设施的所有级别的日志信息记录到/var/log/cron文件中。
*.emerg:omusrmsg:*:*.emerg表示所有设施的emerg级别的日志信息,:omusrmsg:*中的*表示所有用户,即把所有设施的emerg级别的日志信息发送给当前系统所登录的所有用户。
uucp,news.crit/var/log/spooler:uucp和news设施的crit级别的日志信息记录在/var/log/spooler文件中。
local7.*/var/log/boot.log:自定义设施的相关信息,但是local7默认是系统在启动时的引导日志信息(开机时显示的信息)记录在/var/log/boot.log文件中。
注意:日志配置文件中,第一个字段中的*.*,“.”前面的*表示类别,后面的*表示级别。类别和级别的详细介绍如下。
类别也称“设施”,用于分别管理不同功能的日志,从功能或程序上对日志进行分类,并由专门的工具将其日志记录到日志的配置文件所定义的文件中。
“-”:邮件的信息比较多,先将数据存储到内存,达到一定大小再全部写到磁盘,这样有利于减少I/O进程的开销。
数据存储在内存中,如果关机不当,数据将会消失。
日志输入的规则
日志输入的规则如下:
(1).info:大于或等于info级别的信息全部记录到某个文件。
(2).=级别:仅记录等于某个级别的日志。
如:=info表示只记录info级别的日志。
(3).! 级别:除了某个级别以外,记录所有级别的日志。
如:.!err表示除了err外记录所有日志。
(4).none:排除某个类别。
如:mail.none:所有mail类别的日志都不记录。