18.5 分析登录文件
18.5 分析登录文件
登录文件的分析是很重要的!你可以自行以 vim 或者是 journalctl 进入登录文件去查阅相关的信息。而系统也提供一些软件可以让你从登录文件中取得数据, 例如之前谈过的 last, lastlog, dmesg 等等指令。不过,这些数据毕竟都非常的分散,如果你想要一口气读取所有的登录信息, 其实有点困扰的。不过,好在 CentOS 有提供 logwatch 这个登录文件分析程序,你可以借由该程序来了解登录文件信息。 此外,鸟哥也依据 Red Hat 系统的 journalctl 搭配 syslog 函数写了一支小程序给大家使用喔!
18.5.1 CentOS 默认提供的 logwatch
虽然有一些有用的系统指令,不过,要了解系统的状态,还是得要分析整个登录文件才行~ 事实上,目前已经有相当多的登录文件分析工具,例如 CentOS 7.x 上面默认的 logwatch 这个套件所提供的分析工具, 他会每天分析一次登录文件,并且将数据以 email 的格式寄送给 root 呢! 你也可以直接到 logwatch 的官方网站上面看看:
不过在我们的安装方式里面,默认并没有安装 logwatch 就是了!所以,我们先来安装一下 logwatch 这套软件再说。假设你已经将 CentOS 7.1 的原版光盘挂载在 /mnt 当中了,那使用下面的方式来处理即可:
[[email protected] ~]# yum install /mnt/Packages/perl-5.*.rpm
> /mnt/Packages/perl-Date-Manip-*.rpm \
> /mnt/Packages/perl-Sys-CPU-*.rpm \
> /mnt/Packages/perl-Sys-MemInfo-*.rpm \
> /mnt/Packages/logwatch-*.rpm
# 得要安装数个软件才能够顺利的安装好 logwatch 喔!当然,如果你有网络,直接安装就好了!
[[email protected] ~]# ll /etc/cron.daily/0logwatch
-rwxr-xr-x. 1 root root 434 Jun 10 2014 /etc/cron.daily/0logwatch
[[email protected] ~]# /etc/cron.daily/0logwatch
安装完毕以后,logwatch 就已经写入 cron 的运行当中了!详细的执行方式你可以参考上表中 0logwatch 文件内容来处理,未来则每天会送出一封 email 给 root 查阅就是了。因为我们刚刚安装,那可以来分析一下吗?很简单啦!你就直接执行 0logwatch 即可啊!如上表最后一个指令的示意。因为鸟哥的测试机目前的服务很少, 所以产生的信息量也不多,因此执行的速度很快。比较忙的系统信息量比较大,分析过程会花去一小段时间。如果顺利执行完毕,那请用 root 的身份去读一下 email 啰!
[[email protected] ~]# mail
Heirloom Mail version 12.5 7/5/10\. Type ? for help.
"/var/spool/mail/root": 5 messages 2 new 4 unread
>N 4 root Thu Jul 30 19:35 29/763 "testing at job"
N 5 [email protected] Thu Aug 20 17:55 97/3045 "Logwatch for study.centos.vbird (Linux)"
& 5
Message 5:
From [email protected] Thu Aug 20 17:55:23 2015
Return-Path: <[email protected]>
X-Original-To: root
Delivered-To: [email protected]
To: [email protected]
From: [email protected]
Subject: Logwatch for study.centos.vbird (Linux)
Auto-Submitted: auto-generated
Precedence: bulk
Content-Type: text/plain; charset="iso-8859-1"
Date: Thu, 20 Aug 2015 17:55:23 +0800 (CST)
Status: R
# logwatch 会先说明分析的时间与 logwatch 版本等等信息
################### Logwatch 7.4.0 (03/01/11) ####################
Processing Initiated: Thu Aug 20 17:55:23 2015
Date Range Processed: yesterday
( 2015-Aug-19 )
Period is day.
Detail Level of Output: 0
Type of Output/Format: mail / text
Logfiles for Host: study.centos.vbird
##################################################################
# 开始一项一项的数据进行分析!分析得很有道理啊!
--------------------- pam_unix Begin ------------------------
su-l:
Sessions Opened:
dmtsai -> root: 2 Time(s)
---------------------- pam_unix End -------------------------
--------------------- Postfix Begin ------------------------
894 Bytes accepted 894
894 Bytes delivered 894
======== ==================================================
2 Accepted 100.00%
-------- --------------------------------------------------
2 Total 100.00%
======== ==================================================
2 Removed from queue
2 Delivered
---------------------- Postfix End -------------------------
--------------------- SSHD Begin ------------------------
Users logging in through sshd:
dmtsai:
192.168.1.200: 2 times
Received disconnect:
11: disconnected by user : 1 Time(s)
---------------------- SSHD End -------------------------
--------------------- Sudo (secure-log) Begin ------------------------
dmtsai => root
--------------
/bin/su - 2 Time(s).
---------------------- Sudo (secure-log) End -------------------------
# 当然也得说明一下目前系统的磁盘使用状态喔!
--------------------- Disk Space Begin ------------------------
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 3.7G 6.3G 37% /
devtmpfs 1.4G 0 1.4G 0% /dev
/dev/vda2 1014M 141M 874M 14% /boot
/dev/vda4 1014M 33M 982M 4% /srv/myproject
/dev/mapper/centos-home 5.0G 642M 4.4G 13% /home
/dev/mapper/raidvg-raidlv 1.5G 33M 1.5G 3% /srv/raidlvm
---------------------- Disk Space End -------------------------
由于鸟哥的测试用主机尚未启动许多服务,所以分析的项目很少。若你的系统已经启动许多服务的话, 那么分析的项目理应会多很多才对。
18.5.2 鸟哥自己写的登录文件分析工具:
虽然已经有了类似 logwatch 的工具,但是鸟哥自己想要分析的数据毕竟与对方不同~所以啰,鸟哥就自己写了一支小程序 (shell script 的语法) 用来分析自己的登录文件,这支程序分析的登录文件主要由 journalctl 所产生,而且只会抓前一天的登录文件来分析而已~ 若比对 rsyslog.service 所产生的登录文件,则主要用到下面几个对应的文件名 (虽然真的没用到! ^_^):
- /var/log/secure
- /var/log/messages
- /var/log/maillog
当然啦,还不只这些啦,包括各个主要常见的服务,如 pop3, mail, ftp, su 等会使用到 pam 的服务, 都可以通过鸟哥写的这个小程序来分析与处理呢~整个数据还会输出一些系统信息。如果你想要使用这个程序的话, 欢迎下载:
安装的方法也很简单,你只要将上述的文件在根目录下面解压缩,自然就会将 cron 调度与相对应的文件放到正确的目录去。 基本上鸟哥会用到的目录有 /etc/cron.d 以及 /root/bin/logfile 而已!鸟哥已经写了一个 crontab 在文件中,设置每日 00:10 去分析一次系统登录文件。 不过请注意,这次鸟哥使用的登录文件真的是来自于 journalctl ,所以 CentOS 6 以前的版本千万不要使用喔!现在假设我将下载的文件放在跟目录,所以:
[[email protected] ~]# tar -zxvf /logfile_centos7.tar.gz -C /
[[email protected] ~]# cat /etc/cron.d/vbirdlogfile
10 0 * * * root /bin/bash /root/bin/logfile/logfile.sh &> /dev/null
[[email protected] ~]# sh /root/bin/logfile/logfile.sh
# 开始尝试分析系统的登录文件,依据你的登录文件大小,分析的时间不固定!
[[email protected] ~]# mail
# 自己找到刚刚输出的结果,该结果的输出有点像下面这样:
Heirloom Mail version 12.5 7/5/10\. Type ? for help.
"/var/spool/mail/root": 9 messages 4 new 7 unread
N 8 root Thu Aug 20 19:26 60/2653 "study.centos.vbird logfile analysis results"
>N 9 root Thu Aug 20 19:37 59/2612 "study.centos.vbird logfile analysis results"
& 9
# 先看看你的硬件与操作系统的相关情况,尤其是 partition 的使用量更需要随时注意!
=============== system summary =================================
Linux kernel : Linux version 3.10.0-229.el7.x86_64 ([email protected])
CPU informatin: 2 Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz
CPU speed : 2299.996 MHz
hostname is : study.centos.vbird
Network IP : 192.168.1.100
Check time : 2015/August/20 19:37:25 ( Thursday )
Summary date : Aug 20
Up times : 3 days, 59 min,
Filesystem summary:
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 10G 3.7G 6.3G 37% /
devtmpfs devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs tmpfs 1.4G 48K 1.4G 1% /dev/shm
tmpfs tmpfs 1.4G 8.7M 1.4G 1% /run
tmpfs tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/vda2 xfs 1014M 141M 874M 14% /boot
/dev/vda4 xfs 1014M 33M 982M 4% /srv/myproject
/dev/mapper/centos-home xfs 5.0G 642M 4.4G 13% /home
/dev/mapper/raidvg-raidlv xfs 1.5G 33M 1.5G 3% /srv/raidlvm
/dev/sr0 iso9660 7.1G 7.1G 0 100% /mnt
# 这个程序会将针对 internet 与内部监听的端口分开来显示!
================= Ports 的相关分析信息 =======================
主机启用的 port 与相关的 process owner:
对外部接口开放的 ports (PID|owner|command)
tcp 21|(root)|/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
tcp 22|(root)|/usr/sbin/sshd -D
tcp 25|(root)|/usr/libexec/postfix/master -w
tcp 222|(root)|/usr/sbin/sshd -f /etc/ssh/sshd2_config -D
tcp 514|(root)|/usr/sbin/rsyslogd -n
tcp 555|(root)|/usr/sbin/vsftpd /etc/vsftpd/vsftpd2.conf
# 以下针对有启动的服务个别进行分析!
================= SSH 的登录文件信息汇整 =======================
今日没有使用 SSH 的纪录
================= Postfix 的登录文件信息汇整 ===================
使用者信箱受信次数:
目前鸟哥都是通过这支程序去分析自己管理的主机,然后再据以了解系统状况,如果有特殊状况则实时进行系统处理! 而且鸟哥都是将上述的 email 调整成自己可以在 Internet 上面读到的邮件,这样我每天都可以收到正确的登录文件分析信息哩!