如何在RHEL 7 - 第5部分中管理系统日志(配置,旋转和导入数据库)

为了保持RHEL 7系统的安全,您需要知道如何通过检查日志文件来监视在此类系统上发生的所有活动。从而,

为了让您的RHEL 7系统的安全性,你需要知道如何监视所有通过检查日志文件发生在这样的系统中的活动。 因此,您将能够检测任何异常或潜在的恶意活动,并执行系统故障排除或采取其他适当的措施。

Linux使用Rsyslog和Logrotate旋转日志文件

RHCE考试:使用Rsyslogd和Logrotate管理系统日志 - 第5部分

RHEL 7, rsyslogd守护进程负责系统日志和/etc/rsyslog.conf读取其配置(该文件指定的默认位置为所有系统日志),并从里面/etc/rsyslog.d文件(如有)。

Rsyslogd配置

的的快速检验rsyslog.conf将有助于启动。 该文件分为3个主要部分: 模块 (自rsyslog现在遵循模块化设计), 全局指令(用来设置rsyslogd守护进程的全局属性),和规则 正如你可能猜到的,这最后一部分指示什么被记录或显示(也称为选择器)和在哪里,并将是我们的焦点贯穿本文。

rsyslog.conf一个典型的行如下:

Rsyslogd配置

Rsyslogd配置

在上图中,我们可以看到,一个选择是由一对或多对基金:优先使用分号,在工厂描述消息的类型分开(参见4.1.1节在RFC 3164 ,查看可用设施完整的列表rsyslog),Priority表示其严重性,可以是以下自解释词之一:

  1. 调试
  2. 信息
  3. 注意
  4. 警告
  5. 暴击
  6. 警报
  7. 出现

虽然不是一个优先事项本身,关键字并不意味着在所有给定的设施没有优先级。

:一个优先表明,这种优先级的所有消息及以上的应记录。 因此,在本实施例的线以上指示rsyslogd守护程序登录的优先权信息或更高(无论该设施的),除了那些属于邮件 ,authPriv时 ,和cron服务(所有消息从该设施来没有消息将被考虑在内)到/ var / log / messages中

您还可以使用冒号对多个工具进行分组,以对所有工具应用相同的优先级。 因此,行:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

可以重写为

*.info;mail,authpriv,cron.none                /var/log/messages

换句话说,该设施邮件 ,authPriv时 ,和cron被分组和关键字none被施加到三个。

创建自定义日志文件

记录所有守护消息/var/log/howtoing.log,我们需要添加以下行无论是在rsyslog.conf或内部/etc/rsyslog.d一个单独的文件(易于管理):

daemon.*    /var/log/howtoing.log

让我们来重新启动守护进程(注意,服务名称不带有一个D结尾):

# systemctl restart rsyslog

并在重新启动两个随机守护程序之前和之后检查自定义日志的内容:

Linux创建自定义日志文件

创建自定义日志文件

作为一个自学练习,我建议您使用设施和优先级,并记录附加消息到现有日志文件或创建新的,如在前面的示例中。

使用Logrotate旋转日志

要防止日志文件从无休止地增长,logrotate工具用于旋转,压缩,删除和交替邮件日志,从而缓解的产生大量的日志文件系统的管理。

推荐阅读: 如何设置和管理日志循环在Linux中使用的logrotate

logrotate的每日运行作为cron作业(/etc/cron.daily/logrotate)/etc/logrotate.conf中 ,并从位于文件/etc/logrotate.d中读取它的配置,如果有的话。

rsyslog现在的情况下,即使你可以包括在主文件中的特定服务设置,从而为每一个单独的配置文件将帮助组织更好的设置。

让我们来看看一个典型的logrotate.conf:

Logrotate配置

Logrotate配置

在上面的例子中,logrotate的执行针对在/ var / LOH / wtmp文件执行以下操作尝试一个月只有一次旋转,但只有当该文件是大小至少为1 MB,然后创建权限集Branded新的日志文件到0664和所有权赋予root用户和组的utmp。 接下来,只保留一个归档日志,由rotate指令指定:

每月Logrotate日志

每月Logrotate日志

现在,让我们考虑另一个例子中/etc/logrotate.d/httpd发现:

旋转Apache日志文件

旋转Apache日志文件

你可以阅读更多关于它的手册(logrotate的设置人logrotate的人logrotate.conf )。 为了您的阅读方便,这两个文件与本文一起以PDF格式提供。

作为一名系统工程师,这将是非常由你来决定日志多久就会被储存和在什么样的格式,这取决于你是否有一个单独的分区/逻辑卷/ VAR。 否则,您真的要考虑删除旧日志以节省存储空间。 另一方面,根据您公司或客户的内部策略,您可能被迫保留几个日志,以便将来进行安全审核。

将日志保存到数据库中

当然,检查日志(即使使用的工具,如grep和正则表达式的帮助下)可以成为一个相当繁琐的任务。 出于这个原因,rsyslog现在让我们将它们导出到一个数据库(OTB支持的RDBMS包括MySQL和MariaDB的,PostgreSQL和甲骨文。

本教程的这一节假定您已经安装在同一RHEL 7框中MariaDB的服务器和客户端的日志被管理的,其中:

# yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
# systemctl enable mariadb && systemctl start mariadb

然后使用mysql_secure_installation实用程序设置为root用户和其他安全方面的考虑密码:

安全MySQL数据库

安全MySQL数据库

注意 :如果你不希望使用MariaDB的根用户插入消息记录到数据库中,可以配置其他用户帐户这样做。 在解释如何做到这一点超出了本教程的范围,但在详细解释MariaDB的知识基础。 在本教程中,我们将使用root帐户来简化操作。

接下来,从下载createDB.sql脚本GitHub上并将其导入到你的数据库服务器:

# mysql -u root -p < createDB.sql
将服务器日志保存到数据库

将服务器日志保存到数据库

最后,添加以下行/etc/rsyslog.conf:

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

重启rsyslog现在和数据库服务器:

# systemctl restart rsyslog 
# systemctl restart mariadb

使用SQL语法查询日志

现在执行一些任务将修改日志(例如停止和启动服务),然后登录到您的DB服务器,并使用标准的SQL命令来显示和搜索日志:

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;
查询数据库中的日志

查询数据库中的日志

概要

在本文中,我们已经解释了如何设置系统日志记录,如何旋转日志,以及如何将消息重定向到数据库以便于搜索。 我们希望,您为准备这些技能将有助于红帽认证工程师考试 ,并在您的日常职责,以及。

和往常一样,您的反馈是非常欢迎。 请随意使用以下表格与我们联系。