目 录CONTENT

文章目录

配置RSYSLOG日志服务

简中仙
2020-02-21 / 0 评论 / 0 点赞 / 97 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-07-05,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

一、rsyslog简介

Rsyslog的全称是 rocket-fast system for log ,可用于接受来自各种来源的输入,转换 它们,并将结果输出到不同的目的地。

它提供了高性能、强大的安全功能和模块化设计。虽然rsyslog最初是一个常规的系统日志,但它已经发展成为一种瑞士军刀式的日志记录,当应用有限处理时, RSYSLOG每秒可以向本地目的地发送超过一百万条消息。即使使用远程目的地和更 精细的处理,性能通常被认为是“惊人的”。

rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器, rsyslog进程可以从网络中收集其它主机上的日志数据,这些主机会将日志配置为发 送到另外的远程服务器。rsyslog的另外一个用法,就是可以配置为客户端,用来过 滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog 服务器上。

官网地址:https://www.rsyslog.com/

在 CentOS 6.x 中,日志服务已经由 rsyslogd 取代了原先的 syslogd。Red Hat 公司 认为 syslogd 已经不能满足工作中的需求,rsyslogd 相比 syslogd 具有一些新的特点:

  • 基于TCP网络协议传输日志信息。
  • 更安全的网络传输方式。
  • 有日志信息的即时分析框架。
  • 后台数据库。
  • 在配置文件中可以写简单的逻辑判断。
  • 与syslog配置文件相兼容。

在centos7中,默认的日志系统是rsyslog,rsyslogd 日志服务更加先进,功能更多。但是,不论是该服务的使用,还是日志文件的格式,其实都是和 syslogd 服务相兼容的,所以学习起来基本和 syslogd 服务一 致。

默认安装的 ryslog 软件包提供的守护进程是 rsyslog,它是一项系统的基础服务。应该设置为开机运行,由systemd启动的。

# systemctl enable rsyslog
# systemctl start rsyslog
# ps aux | grep "rsyslog" | grep -v "grep"
root     18351  0.0  0.0 723116 23716 ?        Ssl  Jan06   7:35 /usr/sbin/rsyslogd -n

二、rsyslog 配置

守护进程rsyslog在启动时会读取其配置文件。管理隐患可以通过编辑/etc/rsyslog.conf、/etc/rsyslog.d/*.conf和/etc/sysconfig/rsyslog来配置rsyslog的行为。/etc/sysconfig/rsyslog文件用于配置守护进程的运行参数,/etc/rsyslog.conf是rsyslog的主配置文件。

rsyslog的配置文件/etc/rsyslog.conf的结构如下:

  • 全局命令(Global dirctives):设置全局参数、如主消息尺寸、加载扩展模块等
  • 模版(Templates):指定记录的消息格式,也用于动态文件名称生成
  • 输出通道(Output chananels):对用户期望的消息输出进行预定义。
  • 规则(Rules)【selector +action】:指定消息规则。在规则中可以引用之前的定义模版和输出通道

规则配置每一行的格式如下:

facility.priority action
设备.级别 			动作

设备字段说明

字段说明
authpam产生的日志
authprivssh,ftp等登录信息的验证信息
cron时间任务相关
ftpFTP守护进程的信息
kern内核
lpr打印
mail邮件
mark(syslog)rsyslog服务内部的信息,时间标识
news新闻组
user用户程序产生的相关信息
uucpunix to unix copy, unix主机之间相关的通讯
local 1~7自定义的日志设备

级别字段说明

字段说明
ebug有调式信息的,日志信息最多
info一般信息的日志,最常用
notice最具有重要性的普通条件的信息
warning警告级别
err错误级别,阻止某个功能或者模块不能正常工作的信息
crit严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert需要立刻修改的信息
emerg内核崩溃等严重信息
none什么都不记录

动作字段说明

字段说明
filename指定绝对路径的日志文件名来记录日志信息
:omusrmsg:users发送信息到指定的用户,users可以是用逗号分隔符的用户类别,*表示所有用户
device将信息发送到指定设备中,如/dev/console
named-pipe将日志记录到命令管道,用于日志调试非常方便
@hostname将信息发送可解析远程主机hostname或IP,该主机必须正在运行rsyslogd,并可以识别rsyslog的配置文件,使用upd:514端口传送日志信息
@@hostname将信息发送可解析远程主机hostname或IP,该主机必须正在运行rsyslogd,并可以识别rsyslog的配置文件,使用tcp:514端口传送日志信息

rsyslog.conf的说明如下所示:(关键配置)

# cat /etc/rsyslog.conf
# rsyslog configuration file

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html

#### MODULES ####

# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock 								# 提供本地系统日志支持(如通过logger命令)
$ModLoad imjournal 								# 提供对systemd journal的访问
#$ModLoad imklog 								# 提供内核日志支持(相当于systemed的systemd-journald.service)
#$ModLoad immark  								# 提供-MARK-消息功能

# 加载UPD模块,允许使用UDP的514端口接收采用UDP协议转发的日志
#$ModLoad imudp
#$UDPServerRun 514

# 加栽TCP摸块,允许使用TCP的514编口接收采用TCP协议转发的日志
#$ModLoad imtcp
#$InputTCPServerRun 514


#### GLOBAL DIRECTIVES ####

# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog

# Use default timestamp format					# 使用默认日志的时间戳格式
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# 文件同步功能。默认没有开启,是注释的
#$ActionFileEnableSync on

# Include all config files in /etc/rsyslog.d/	# 包含/etc/rsyslog.d/目录下的配置文件
$IncludeConfig /etc/rsyslog.d/*.conf

# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on

# File to store the position in the journal
$IMJournalStateFile imjournal.state


#### RULES ####

# 将所有的内核消息记录到控制台
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# 将info或更高级别的消息送到/var/log/messages,除了/mail/news/authpriv/cron之外
# 其中*是通配符,代表任何设备:none表示不对任何级别的消息进行记录
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# 将authpirv设备的任何级别的信息记录到/var/log/secure中
authpriv.*                                              /var/log/secure

# 将mail设备中的任何级别信息记录到/var/log/mailog文件中
mail.*                                                  -/var/log/maillog


# 将cron设备的任何级别的信息记录到/var/log/cron文件中
cron.*                                                  /var/log/cron

# 将任何设备的emerg级别或者更高的消息发送给所有正在系统上用户
*.emerg                                                 :omusrmsg:*

# 将uucp和news设备的crint级别或者更高级别消息记录到/var/log/spooler文件中
uucp,news.crit                                          /var/log/spooler

# 将和本地系统启动相关的信息记录到/var/log/boot.log文件中
local7.*                                                /var/log/boot.log


# ### begin forwarding rule ###
# 定义转发规到
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList   # run asynchronously
#$ActionResumeRetryCount -1    # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###

其实系统已经非常完善地定义了这个配置文件的内容,系统中重要的日志也已经记录 得非常完备。如果是外来的服务,如 apache、Samba 等服务,那么这些服务的配 置文件中也详细定义了日志的记录格式和记录方法。所以,日志的配置文件基本上不 需要我们修改,我们要做的仅仅是查看和分析系统记录好的日志而已。

三、常见日志格式及文件

日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录 信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。这 些信息有些非常敏感,所以在 Linux 中这些日志文件只有 root 用户可以读取。 那么,系统日志文件保存在什么地方呢?还记得 /var/ 目录吗?它是用来保存系统动 态数据的目录,那么 /var/log/ 目录就是系统日志文件的保存位置。

日志文件说明
/var/log/cron记录与系统定时任务相关的日志
/var/log/cups/记录打印信息的日志
/var/log/dmesg记录了系统在开机时内核自检的信总。也可以使用dmesg命令直接查看内核自检信息
/var/log/btmp记录错误登陆的日志。这个文件是二进制文件,不能直接用vi查看,而要使用lastb命令查看。命令如下:lastb root
/var/log/lastlog记录系统中所有用户最后一次的登录时间的日志。这个文件也是二进制文件不能直接用Vi查看。而要使用lastlog命令查看
/var/log/mailog记录邮件信息的日志
/var/log/messages它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为root,以及用户自定义安装软件的日志,也会在这里列出。
/var/log/secure记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp永久记录所有用户的登陆、注销信息,同时记录系统的后动、重启、关机事件。同样,这个文件也是二进制文件不能直接用vi查看,而要使用w,who,users命令查看

除系统默认的日志之外,采用 RPM 包方式安装的系统服务也会默认把日志记录在 /var/log/ 目录中(源码包安装的服务日志存放在源码包指定的目录中)。不过这些 日志不是由 rsyslogd 服务来记录和管理的,而是各个服务使用自己的日志管理文档 来记录自身的日志。以下介绍的日志目录在你的 Linux 上不一定存在,只有安装了相应的服务,日志才会出现

日志文件说明
/var/log/httpd/RPM包安装的apache取务的默认日志目录
/var/log/mail/RPM包安装的邮件服务的额外日志因录
/var/log/samba/RPM包安装的Samba服务的日志目录
/var/log/sssd/守护进程安全服务目录

四、Linux日志文件的格式分析

只要是由日志服务 rsyslogd 记录的日志文件,它们的格式就都是一样的。所以我们只要了解了日志文件的格式,就可以很轻松地看懂日志文件。

日志文件的格式包含以下 4 列:

  • 事件产生的时间。

  • 产生事件的服务器的主机名。

  • 产生事件的服务名或程序名。

  • 事件的具体信息。

我们查看一下 /var/log/secure 日志,这个日志中主要记录的是用户验证和授权方面的信息,更加容易理解。命令如下:

# vi /var/log/secure
# 3月9日 15:55:46 本地主机 sshd服务产生消息:接收从111.21.99.227主机的34352端口发起的ssh连接
Mar  9 15:55:46 localhost sshd[30834]: Invalid user vshnu from 111.21.99.227 port 34352
# 3月9日 15:55:46 本地主机 sshd服务产生消息:无效用户
Mar  9 15:55:46 localhost sshd[30834]: input_userauth_request: invalid user vshnu [preauth]
Mar  9 15:55:46 localhost sshd[30834]: pam_unix(sshd:auth): check pass; user unknown
Mar  9 15:55:46 localhost sshd[30834]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=111.21.99.227
# 3月9日 15:55:48 本地主机 sshd服务产生消息:来自111.2199.227端口34352 ssh2的无效用户vshnu的密码失败
Mar  9 15:55:48 localhost sshd[30834]: Failed password for invalid user vshnu from 111.21.99.227 port 34352 ssh2
Mar  9 15:55:48 localhost sshd[30834]: Received disconnect from 111.21.99.227 port 34352:11: Bye Bye [preauth]
Mar  9 15:55:48 localhost sshd[30834]: Disconnected from 111.21.99.227 port 34352 [preauth]

我截取了一段日志的内容,注释了其中的三句日志,剩余的日志大家可以看懂了吗?这就是典型的ssh密码暴力破解的日志,其实分析日志既是重要的系统维护工作,也是一项非常枯燥和烦琐的工作。如果我们的服务器出现了一些问题,比如系统不正常重启或关机、用户非正常登录、服务无法正常使用等,则都应该先查询日志。实际上,只要感觉到服务器不是很正常就应该查看日志,甚至在服务器没有什么问题时也要养成定时查看系统日志的习惯

0

评论区