第18章 认识与分析登录档

第18章 认识与分析登录档

18.1 什么是登录档

  什么是登录档呢?简单地说,就是记录系统活动信息的几个文件,例如:何时、何地(来源IP)、何人(什么服务名称)、做了什么动作(讯息登录啰)。换句话说就是:记录系统在什么时候由哪个程序做了什么样的行为时,发生了何种的事件等等。

18.1.1 CentOS 7登录档简易说明

  • 登录档的重要性

    • 解决系统方面的错误
    • 解决网络服务的问题
    • 过往事件记录簿
  • 常见的登录档档名

    • /var/log/boot.log
    • /var/log/cron
    • /var/log/dmesg:记录系统在开机的时候核心侦测过程所产生的各项信息。
    • /var/log/lastlog
    • /var/log/maillog或/var/log/mail/*
    • /var/log/messages
    • /var/log/secure
    • /var/log/wtmp,/var/log/faillog
    • /var/log/httpd,/var/log/samba/
  • 登录档所需相关服务(daemon)与程序
    针对登录文件所需的功能,我们需要的服务与程序有:

    • systemd-journald.service
    • rsyslog.service
    • logrotate
  • CentOS 7.x使用systemd提供的journalctl日志管理

18.1.2 登录档内容的一般格式

  一般来说,系统产生的讯息经过记录下来的数据中,每条讯息均会记录底下的几个重要数据:

  • 事件发生的日期与时间
  • 发生此事件的主机名
  • 启动此事件的服务名称(如systemd,crond等)或指令与函数式名称(如su,login..)
  • 该信息的实际数据内容

  记得一个好的系统管理员,要常常去“巡视”登录档的内容喔!尤其是发生底下几种情况时:

  • 当你觉得系统似乎不太正常时
  • 某个daemon老是无法正常启动时
  • 某个使用者老是无法登入时
  • 某个daemon执行过程老是不顺畅时

18.2 rsyslog.service: 记录登录文件的服务

  上一小节提到说Linux的登录档主要是由rsyslog.service在负责,那么你的Linux是否有启动rsyslog呢?而且是否有设定开机时启动呢?呵呵!检查一下先:
ps aux | grep rsyslog
systemctl status rsyslog.service

18.2.1 rsyslog.service的配置文件:/etc/rsyslog.conf

  基本上,rsyslogd针对各种服务与讯息记录在某些文件的配置文件就是/etc/rsyslog.conf,这个文件规定了(1)什么服务(2)的什么等级讯息(3)需要被记录在哪里(装置或文件)这三个咚咚,所以设定的语法会是这样:

服务名称[.=!]讯息等级    讯息记录的文件名或装置或主机
# 底下以mail这个服务产生的info等级为例:
mail.info    /var/log/maillog_info
# 这一行说明:mail服务产生的大于等于info等级的讯息,都记录到
# /var/log/maillog_info文件中的意思

我们将上面的数据简单的分为三部分来说明:

  • 服务名称
  • 讯息等级:
    • 7-debug
    • 6-info
    • 5-notice
    • 4-warning(warn)
    • 3-err
    • 2-crit
    • 1-alert
      特别留意一下在讯息等级之前还有[.=!]的链接符号喔!他代表的意思是这样的:
    • . : 代表“比后面还要严重的等级(含该等级)都被记录下来”的意思
    • .=: 代表所需要的等级就是后面接的等级而已
    • .!: 代表不等于,亦即是除了该等级外的其他等级都记录

18.2.2 登录档的安全性设置

  基本上,我们可以透过一个隐藏的属性来设定你的登录档,成为“只可以增加数据,但是不能被删除”的状态,那么或许可以达到些许的保护!
chattr +a /var/log/admin.log
lsattr /var/log/admin.log

18.2.3 登录档服务器的设定

  我们的CentOS 7.x预设的rsyslogd本身就已经具有这个登录文件服务器的功能了,只是默认并没有启动该功能而已。既然是登录档服务器,那么我们的Linux主机当然会启动一个埠口来监听了,那个预设的埠口就是UDP或TCP的port514喔!
  服务器会启动监听的埠口,客户端则将登录档再转出一份送到服务器去。而既然是登录档“服务器”,所以当然有服务器与客户端啰!这两者的设定分别是这样的:

1. Server端:修改rsyslogd的启动配置文件,在/etc/rsyslog.conf内!
vim /etc/rsyslog.conf
# 找到底下这几行
# Provides UDP syslog reception
# $ModLoad imudp
# $UDPServerRun 514

# Provides TCP syslog reception
# $ModLoad imtcp
# $InputTCPServerRun 514 
# 上面的是UDP埠口,底下的是TCP埠口!建议使用TCP啰!所以修改底下两行即可!
$ModLoad imtcp
$InputTCPServerRun 514

2. 重新启动与观察rsyslogd喔!
systemctl restart rsyslog.service
netstat -ltnp | grep syslog

  至于client端的设定就简单多了!只要指定某个信息传送到这部主机即可!举例来说,我们的登录档服务器IP为:192.168.1.100,而client端希望所有的数据都送给主机,所以,可以在/etc/rsyslog.conf里面新增这样的一行:

vim /etc/rsyslog.conf
*.* @@192.168.1.100
#*.* @192.168.1.100  # 若用UDP传输,设定要变这样!

再重新启动rsyslog.service后,立刻就搞定了!systemctl restart rsyslog.service

18.3 登录档的轮替(logrotate)

  rsyslogd利用的是daemon的方式来启动的,当有需求的时候立刻就会被执行的,但是logrotate却是在规定的时间到了之后才来进行登录的轮替,所以这个logrotate程序当然就是挂在cron底下进行的呦!

18.3.1 logrotate的配置文件

  • /etc/logrotate.conf
  • /etc/logrotate.d/
    那个logrotat.conf才是主要的参数文件,至于logrotate.d是一个目录,该目录的所有文件都会被主动的读入/etc/logrotate.conf当中来进行!

  logrotate的主要功能就是将旧的登录文件移动成旧档,并且重新建立一个新的空的文件来记录。

18.4 systemd-journald.service简介

18.4.1 使用journalctl观察登录信息

journalctl [-nrpf] [--since TIME] [--until TIME] _optional
选项与参数:
预设会透出全部的log内容,从旧的输出到最新的讯息
-n: 秀出最近的几行的意思
-r: 反向输出,从最新的输出到最旧的数据
-p: 秀出后面所接的讯息重要性排序
-f: 类似tail -f的功能,持续显示journal日志的内容 
--since --until: 设定开始与结束的时间,让在该期间的数据输出而已
_SYSTEMD_UNIT=unit.service: 只输出unit.service的信息而已
_COMM=bash: 只输出与bash有关的信息
_PID=pid: 只输出PID号码的信息
_UID=uid: 只输出UID为uid的信息
SYSLOG_FACILITY=[0-23]: 使用syslog.h规范的服务相对序号来呼叫出正确的数据!

18.4.2 logger指令的应用

logger [-p 服务名称.等级] "讯息"
选项与参数:
服务名称.等级: 这个项目请参考rsyslogd的本章后续小节的介绍

18.5 分析登录档

18.5.1 CentOS预设提供的logwatch

  在我们的安装方式里面,预设并没有安装logwatch就是了!所以我们先来安装一下logwatch这套软件再说。假设你已经将CentOS 7.1的安装光盘挂载在/mnt当中了,那使用底下的方式来处理即可:
yum install /mnt/Packages/perl-5.*.rpm
  安装完毕以后,logwatch就已经写入cron的运作当中了!未来每天会送出一封email给root查阅就是了!因为我们刚刚安装,那可以来分析一下吗?很简单啦!你就直接执行0logwatch即可啊!

18.5.2 鸟哥自己写的登录档分析工具

  如果你想要使用这个程序的话,欢迎下载:

posted @ 2023-07-31 10:58  Evan-whc  阅读(6)  评论(0编辑  收藏  举报