降低风险和恢复操作
大约 55 分钟
降低风险和恢复操作
来源:官方文档 原始多页入口:降低风险和恢复操作 内容规模:约 69,725 字符,69 个章节标题,164 个命令/代码块,19 条提示框
阅读提要
- 副标题:备份数据、日志监控和管理安全更新
- 摘要:使用 Relax-and-Recover (ReaR)工具在失败后备份和恢复系统。通过日志文件和审计框架监控系统事件并进行故障排除。管理并安装安全更新,以维护系统稳定性和合规性。
- 主要章节:备份数据、日志监控和管理安全更新;对红帽文档提供反馈;第 1 章 恢复系统;第 2 章 使用日志文件对问题进行故障排除;第 3 章 在 web 控制台中查看和过滤日志;第 4 章 使用 RHEL 系统角色配置 systemd 日志;第 5 章 配置远程日志记录解决方案;第 6 章 使用 RHEL 系统角色配置日志记录;第 7 章 审计系统;第 8 章 管理及监控安全更新
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
备份数据、日志监控和管理安全更新
- 要点:摘要
对红帽文档提供反馈
- 要点:我们致力于为您提供高质量的文档,您的反馈将对我们有很大帮助。为帮助我们改进,您可以通过 Red Hat Jira 跟踪系统提交建议或报告错误。
- 要点:流程
- 列表:登录到 Jira 网站。 如果您还没有帐户,请创建一个。
- 列表:单击顶部导航栏中的 Create。
- 列表:在 Summary 字段中输入描述性标题。
- 列表:在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 列表:点窗口底部的 Create。
第 1 章 恢复系统
- 要点:要备份和恢复系统,Red Hat Enterprise Linux 提供了 Relax-and-Recover (ReaR)工具。
- 要点:您可以使用 ReaR 作为灾难恢复解决方案,也可以用于系统迁移。
- 列表:生成系统备份和可引导镜像,并使用镜像从现有备份中恢复系统。
- 列表:复制原始存储布局。
- 列表:恢复用户和系统文件。
- 列表:将系统恢复到不同的硬件。
1.1. 配置 ReaR 并手动创建备份
- 要点:要创建救援系统,首先要为 Relax-and-Recover (ReaR)工具安装软件包,调整 ReaR 设置,并手动生成系统备份。这会为潜在的灾难恢复操作准备您的系统。
- 要点:先决条件
- 列表:根据您的备份恢复计划所需的配置已就绪。 注意 以下步骤在示例配置中使用 NETFS 备份方法。这个方法使用 ReaR 完全集成并内置,并在 BACKUP_URL 配置设置指定的位置生成备份。默认情况下,它使用 system tar 工具创建名为 backup.tar.gz 的备份存档。
- 列表:您使用 Intel 64 或 AMD64 (x86-64)硬件架构,或 IBM POWER little-endian (ppc64le)架构。 如果您使用 IBM Z 架构,请参阅在 64 位 IBM Z 架构中使用 ReaR 救援镜像。 在 64 位 ARM 架构中,ReaR 作为技术预览提供。 重要 红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些预览可让用户早期访问将来的产品功能,让用户在开发过程中测试并提供反馈意见。
- 列表:安装 ReaR 工具: # dnf install rear
- 列表:在您选择的编辑器中修改 ReaR 配置文件,例如: # vi /etc/rear/local.conf 在 /etc/rear/local.conf 中添加备份设置详情。例如,在使用 NETFS 备份方法时添加以下行: BACKUP=NETFS OUTPUT=ISO BACKUP_URL=<data-backup-location> OUTPUT_URL=<rescue-image-location> 将 <data-backup-location > 替换为 tar 数据备份的位置,将 < rescue-image-location > 替换为救援系统 ISO 镜像的位置。例如: BACKUP=NETFS OUTPUT=ISO …
- 列表:在 /etc/rear/local.conf 中添加备份设置详情。例如,在使用 NETFS 备份方法时添加以下行: BACKUP=NETFS OUTPUT=ISO BACKUP_URL=<data-backup-location> OUTPUT_URL=<rescue-image-location> 将 <data-backup-location > 替换为 tar 数据备份的位置,将 < rescue-image-location > 替换为救援系统 ISO 镜像的位置。例如: BACKUP=NETFS OUTPUT=ISO # Backup is stored on an external drive BACKUP_URL=f…
- 列表:要将 ReaR 配置为在创建新归档时保留之前的备份归档,还需要将以下行添加到配置文件中: NETFS_KEEP_OLD_BACKUP_COPY=y
- 命令/配置摘录:
# dnf install rear
# vi /etc/rear/local.conf- 注意:注意 以下步骤在示例配置中使用 NETFS 备份方法。这个方法使用 ReaR 完全集成并内置,并在 BACKUP_URL 配置设置指定的位置生成备份。默认情况下,它使用 system tar 工具创建名为 backup.tar.gz 的备份存档。
- 注意:重要 红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些预览可让用户早期访问将来的产品功能,让用户在开发过程中测试并提供反馈意见。
1.2. 在 64 位 IBM Z 构架上使用 ReaR 救援镜像
- 要点:要快速恢复在 IBM Z 架构中运行的系统,您可以使用 Relax-and-Recover (ReaR)救援镜像。
- 要点:ReaR 在 64 位 IBM Z 构架中提供基本功能,在 RHEL 10 中被完全支持。您只能在 z/VM 环境中在 IBM Z 上创建 ReaR 救援镜像。不支持备份和恢复逻辑分区(LPAR)。
- 列表:您已安装了 rear 软件包。
- 列表:安装 ReaR: # dnf install rear
- 列表:在 /etc/rear/local.conf 文件中添加以下变量,以配置 ReaR 以在 64 位 IBM Z 架构上生成救援镜像: 要配置 IPL 输出方法,请在配置中添加'OUTPUT=IPL' 行。 要配置备份方法和目的地,请添加 BACKUP 和 BACKUP_URL 变量。例如: BACKUP=NETFS BACKUP_URL=nfs://<nfsserver_name>/<share_path> 重要 目前 64 位 IBM Z 架构不支持本地备份存储。 可选:您还可以配置 OUTPUT_URL 变量来保存内核和 initrd 文件。默认情况下,OUTPUT_URL 与 BACKUP_URL 保持一致。
- 列表:要配置 IPL 输出方法,请在配置中添加'OUTPUT=IPL' 行。
- 列表:要配置备份方法和目的地,请添加 BACKUP 和 BACKUP_URL 变量。例如: BACKUP=NETFS BACKUP_URL=nfs://<nfsserver_name>/<share_path> 重要 目前 64 位 IBM Z 架构不支持本地备份存储。
- 列表:可选:您还可以配置 OUTPUT_URL 变量来保存内核和 initrd 文件。默认情况下,OUTPUT_URL 与 BACKUP_URL 保持一致。
- 命令/配置摘录:
# dnf install rear
BACKUP=NETFS BACKUP_URL=nfs://<nfsserver_name>/<share_path>- 注意:重要 目前 64 位 IBM Z 架构不支持本地备份存储。
- 注意:警告 救援过程会重新格式化所有连接到系统的 DASD(直接附加的存储设备)。如果系统存储设备中存在任何有价值的数据,则不要尝试系统恢复。这还包括用于引导到救援环境的 zipl 引导装载程序、ReaR 内核和 initrd 的设备。确保保留一份副本。
1.3. 使用 ReaR 恢复您的系统
- 要点:要在当前硬件失败后在新硬件上恢复 RHEL 系统,请使用 Relax-and-Recover (ReaR)工具。
- 要点:先决条件
- 列表:您已配置了 ReaR 并创建了备份。具体步骤请参阅配置 ReaR 并手动创建备份。
- 列表:在恢复后,您有一组要运行该系统的工作硬件。
- 列表:您计划恢复系统的硬盘不包含任何关键数据。 重要 使用 ReaR 在硬盘中恢复系统会清除当前存储在磁盘上的所有数据。
- 列表:在新硬件上引导救援系统。例如,您可以将救援系统的 ISO 镜像刻录到 DVD,并从 DVD 启动。
- 列表:在 Relax-and-Recover 引导菜单中,选择引导到恢复环境的选项。
- 列表:在 RESCUE 提示中,运行 rear restore 命令。 救援系统重新创建分区布局和文件系统。
- 注意:重要 使用 ReaR 在硬盘中恢复系统会清除当前存储在磁盘上的所有数据。
1.4. 修改 ReaR 备份的内容
- 要点:当使用 Relax-and-Recover (ReaR)工具创建救援系统和数据备份时,某些文件和存储组件不会包含在备份中。要调整备份中排除的数据和设备,请修改 ReaR 配置。
- 要点:在创建救援镜像时,ReaR 会创建 /var/lib/rear/layout/disklayout.conf 布局文件,并将该文件嵌入到救援镜像中。
- 列表:您已在系统中配置了 ReaR。具体步骤请参阅配置 ReaR 并手动创建备份。
- 列表:生成当前的布局文件。 # rear savelayout
- 列表:打开布局文件,以检查其配置。例如: # vi /var/lib/rear/layout/disklayout.conf
- 列表:要从备份中排除特定的文件或存储设备,您可以在创建救援镜像时将 ReaR 配置为忽略它们。 打开 ReaR 本地配置文件以进行编辑。例如: # vi /etc/rear/local.conf 调整将排除在布局文件中哪些存储设备。您可以在 /etc/rear/local.conf 文件中使用各种 排除 变量,包括: AUTOEXCLUDE_DISKS AUTOEXCLUDE_MULTIPATH AUTOEXCLUDE_PATH EXCLUDE_RECREATE 有关这些变量的功能和语法以及布局文件的详情,请查看 ReaR 用户指南中的布局配置章节。本指南与 rear 软件包安装,位于 /usr/share/doc/rear/user-…
- 列表:打开 ReaR 本地配置文件以进行编辑。例如: # vi /etc/rear/local.conf
- 列表:调整将排除在布局文件中哪些存储设备。您可以在 /etc/rear/local.conf 文件中使用各种 排除 变量,包括: AUTOEXCLUDE_DISKS AUTOEXCLUDE_MULTIPATH AUTOEXCLUDE_PATH EXCLUDE_RECREATE 有关这些变量的功能和语法以及布局文件的详情,请查看 ReaR 用户指南中的布局配置章节。本指南与 rear 软件包安装,位于 /usr/share/doc/rear/user-guide/relax-and-recover-user-guide.html。
- 命令/配置摘录:
# rear savelayout
# vi /var/lib/rear/layout/disklayout.conf- 注意:注意 当您以这种方式排除单个挂载的文件系统中的所有文件和目录时,ReaR 会在恢复过程中重新创建文件系统,但它为空。您可以将它用于包含临时数据的文件系统,不需要保留,或用于使用独立于 ReaR 的方法备份的数据。
第 2 章 使用日志文件对问题进行故障排除
- 要点:使用日志文件对系统进行故障排除和监控。日志文件包含有关系统、内核、服务和应用程序的信息,使用内置 syslog 协议有效记录。
2.1. 使用日志文件进行基本故障排除
- 要点:通过检查日志条目和传统日志文件来调查系统问题。按时间、服务和优先级过滤日志可帮助您快速缩小根本原因。
- 要点:先决条件
- 列表:已登陆到该系统。
- 列表:查看当前引导中的日志消息: $ journalctl -b
- 列表:根据具体时间范围过滤日志消息: $ journalctl --since "2025-07-01 08:00:00" --until "2025-07-01 12:00:00"
- 列表:仅显示错误和优先级信息: $ journalctl -p err -b
- 列表:根据特定服务过滤信息: $ journalctl -u <service_name>.service -b
- 列表:为不通过日志的服务检查传统日志文件: # cat /var/log/messages 有些服务将日志存储在 /var/log/ 下的子目录中。例如,httpd 服务使用 /var/log/httpd/。
- 命令/配置摘录:
$ journalctl -b
$ journalctl --since "2025-07-01 08:00:00" --until "2025-07-01 12:00:00"2.2. 处理 syslog 消息的服务
- 要点:rsyslogd 和 journald 系统服务处理 syslog 信息。这些服务捕获、处理和存储安全相关的系统事件。
- 要点:以下服务处理 syslog 信息:
- 列表:内核
- 列表:引导过程的早期阶段
- 列表:在守护进程启动并运行时,守护进程的标准和错误输出
- 列表:Syslog
2.3. 存储 syslog 消息的子目录
- 要点:找到系统日志服务存储记录 syslog 信息的位置。大多数日志文件保存在 /var/log/ 目录中,通常根据应用将逻辑整理到子目录中。
- 要点:/var/log 目录中的以下子目录存储 syslog 信息:
2.4. 查看日志的命令
- 要点:您可以使用 Journal 查看和管理日志文件,其是 systemd 的一个组件。它解决了与传统日志记录相关的问题,其与系统的其余部分紧密集成,并支持各种日志记录技术以及对日志文件的访问管理。
- 要点:您可以使用 journalctl 命令查看系统日志中的消息,例如:
- 命令/配置摘录:
$ journalctl -b | grep kvm May 15 11:31:41 localhost.localdomain kernel: kvm-clock: Using msrs 4b564d01 and 4b564d00 May 15 11:31:41 localhost.localdomain kernel: kvm-clock: cpu 0, msr 76401001, primary cpu clock2.4.1. 查看系统信息
- 该章节主要为下一级主题的入口。
2.4.2. 查看有关特定服务的信息
- 该章节主要为下一级主题的入口。
2.4.3. 查看与特定引导相关的日志
- 该章节主要为下一级主题的入口。
2.5. 其他资源
- 列表:配置远程日志记录解决方案
第 3 章 在 web 控制台中查看和过滤日志
- 要点:Red Hat Enterprise Linux web 控制台提供了一个图形界面来访问、查看和过滤日志。您可以使用最常用的功能,而无需记住相应的命令和选项。
3.1. 查看 web 控制台中的日志
- 要点:您可以使用 RHEL web 控制台的专用 Logs 部分快速访问并检查系统日志。此图形界面有助于集中主机上各种系统功能的日志监控,并为 journalctl 实用程序提供 UI。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Logs。
- 列表:点击列表中的选定日志条目条目,打开日志条目详情。
- 列表:单击 Toggle 过滤器 以展开菜单后,您可以使用 暂停 按钮暂停新日志条目。恢复新日志条目后,Web 控制台会加载在使用 Pause 按钮后报告 的所有日志条目。
- 列表:您可以根据时间、优先级或标识符过滤日志。如需更多信息,请参阅 web 控制台中的检查和过滤日志。
3.2. 在 web 控制台中过滤日志
- 要点:您可以根据时间范围、优先级或特定标识符在 RHEL web 控制台中直接过滤系统日志。这个功能可帮助管理员只专注于目标故障排除的关键消息。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Logs。
- 列表:单击 Toggle 过滤器。
- 列表:要更改默认日志过滤,请使用 Time,Priority, 和 Identifier 下拉菜单。
- 列表:可选: 默认情况下,Web 控制台会显示最新的日志条目。要根据特定时间范围过滤,请单击 Expand 按钮。
3.3. 在 web 控制台中过滤日志的文本搜索选项
- 要点:使用 RHEL web 控制台中提供的文本搜索语法和选项,您可以有效地过滤日志。这可在大量系统日志中搜索特定错误或关键字时实现高精度。
- 要点:文本搜索选项功能为过滤日志提供了各种选项。您可以使用三个下拉菜单中的预定义选项,或者自己输入整个搜索。
- 列表:时间 :此下拉菜单包含搜索的不同时间范围的预定义搜索。
- 列表:Priority:此下拉菜单提供了不同优先级级别的选项。它对应于 journalctl --priority 选项。默认优先级值为 Error 及以上。每次在不指定其它优先级时,会设置它。
- 列表:Identifier:在这个下拉菜单中,您可以选择要过滤的标识符。对应于 journalctl --identifier 选项。
- 列表:在搜索字段中输入 identifier:systemd since:2020-10-22 JOB_TYPE=start,restart。
- 列表:检查结果。
- 列表:在搜索字段中输入 service:cockpit boot:-1 error|fail。
3.4. 使用文本搜索框过滤 web 控制台中的日志
- 要点:您可以在 web 控制台中使用文本搜索框,根据不同的参数过滤日志。搜索合并了过滤下拉菜单、限定符、日志字段和自由格式字符串搜索的使用。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Logs。
- 列表:使用下拉菜单指定您想要过滤的三个主要的限定符 - 时间范围、优先级和标识符。 优先级 限定符必须具有值。如果没有指定值,它会自动过滤 Error 及以上 优先级。您设置的选项反映在文本搜索框中。
- 列表:指定您要过滤的日志字段。 您可以添加几个日志字段。
- 列表:您可以使用自由格式的字符串搜索任何其他内容。搜索框也接受正则表达式。
3.5. 过滤日志的选项
- 要点:查看在 RHEL web 控制台中过滤系统日志的各种选项。选项包括时间范围、优先级、标识符和自定义的文本搜索字段。
- 要点:您可以使用 journalctl 选项在 web 控制台中过滤日志。其中一些选项作为 web 控制台界面中下拉菜单的一部分提供。
- 表格样本(共 7 行):
- 选项名称 | 使用 | 注
- priority | 按消息优先级过滤输出。取单个数字或文本日志级别。日志级别是常见的 syslog 日志级别。如果指定了单一日志级别,则会显示具有此日志级别的所有消息或较低及更重要的日志级别。 | 包括在优先级下拉菜单中。
- identifier | 显示指定 syslog 标识符 SYSLOG_IDENTIFIER 的信息。可多次指定。 | 包括在 Identifier 下拉菜单中。
- follow | 仅显示最新的日志条目,并在新条目附加到日志中时持续打印新条目。 | 没有包含在下拉菜单中。
第 4 章 使用 RHEL 系统角色配置 systemd 日志
- 要点:使用 journald RHEL 系统角色,您可以自动化 systemd 日志,并使用 Red Hat Ansible Automation Platform 配置持久性日志记录。
4.1. 使用 journald RHEL 系统角色配置持久性日志记录
- 要点:默认情况下,systemd 日志只将日志存储在 /run/log/journal 中的小环缓冲区中,它不是持久的。重启系统也会移除日志数据库日志。您可以使用 journald RHEL 系统角色在多个系统上配置持久性日志记录。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Configure journald hosts: managed-node-01.example.com tasks: - name: Configure persistent logging ansible.builtin.include_role: name: redhat.rhel_system_roles.journald vars: journald_persistent: true journald_max_disk_size: <size> journald_per_user: true …
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 列表:运行 playbook: $ ansible-playbook ~/playbook.yml
- 命令/配置摘录:
--- - name: Configure journald hosts: managed-node-01.example.com tasks: - name: Configure persistent logging ansible.builtin.include_role: name: redhat.rhel_system_roles.journald vars: journald_persistent: true journald_max_disk_size: <size> journald_per_user: true journald_sync_interval: <interval>
$ ansible-playbook --syntax-check ~/playbook.yml第 5 章 配置远程日志记录解决方案
- 要点:确保在日志记录服务器上集中记录您环境中各种机器的日志。您可以配置 Rsyslog 应用程序,将满足客户端系统特定条件的日志转发到服务器。
- 要点:根据您的要求选择传输协议:
5.1. Rsyslog 日志记录服务
- 要点:Rsyslog 日志记录服务在 /etc/rsyslog.conf 文件中定义规则。规则根据 urgency 和 topic 分类信息,确定操作 Rsyslog 执行。
- 要点:Rsyslog 应用程序与 systemd-journald 服务相结合,在 Red Hat Enterprise Linux 中提供了本地和远程记录支持。rsyslogd 守护进程会持续读取 systemd-journald 服务从 Journal 接收的 syslog 消息。然后,它会过滤并处理这些事件,将它们记录到日志文件中,或者将它们转发到其他服务。
5.2. 安装 Rsyslog 文档
- 要点:在本地安装 rsyslog-doc 文档软件包。这提供了对 Rsyslog 应用程序的广泛文档的快速离线访问,并补充在线资源。
- 要点:Rsyslog 应用程序有广泛的在线文档,包括在 Rsyslog 官方文档 中,但您也可以在您的系统上安装 rsyslog-doc 文档软件包。
- 列表:您已在系统中激活了 AppStream 软件仓库。
- 列表:您有权使用 sudo 安装新软件包。
- 列表:安装 rsyslog-doc 软件包: # dnf install rsyslog-doc
- 列表:在您选择的浏览器中打开 /usr/share/doc/rsyslog/html/index.html 文件,例如: $ firefox /usr/share/doc/rsyslog/html/index.html &
- 命令/配置摘录:
# dnf install rsyslog-doc
$ firefox /usr/share/doc/rsyslog/html/index.html &5.3. 通过 TCP 配置服务器进行远程记录
- 要点:将您的 Rsyslog 服务器配置为通过可靠的 TCP 协议接收远程日志。此设置有助于确保通过网络从客户端系统传输日志时实现高可用性。
- 要点:使用 Rsyslog 应用程序,您可以维护一个集中的日志系统,该系统可通过网络将日志消息转发到服务器。为了避免服务器不可用时消息丢失,您可以为转发操作配置操作队列。这样,无法发送的消息将存储在本地,直到服务器再次可访问为止。请注意,此类队列无法针对使用 UDP 协议的连接进行配置。
- 列表:rsyslog 已安装在服务器系统上。
- 列表:您以 root 身份登录到服务器中。
- 列表:使用 semanage 命令,为可选步骤安装 policycoreutils-python-utils 软件包。
- 列表:firewalld 服务在运行。
- 列表:可选: 要为 rsyslog 流量使用不同的端口,请将 syslogd_port_t SELinux 类型添加到端口。例如,启用端口 30514 : # semanage port -a -t syslogd_port_t -p tcp 30514
- 列表:可选: 要为 rsyslog 流量使用不同的端口,请将 firewalld 配置为允许该端口上传入的 rsyslog 流量。例如,允许端口 30514 上的 TCP 流量: # firewall-cmd --zone=<zone_name> --permanent --add-port=30514/tcp success # firewall-cmd --reload
- 命令/配置摘录:
# semanage port -a -t syslogd_port_t -p tcp 30514
# firewall-cmd --zone=<zone_name> --permanent --add-port=30514/tcp success # firewall-cmd --reload5.4. 通过 TCP 配置远程日志记录到服务器
- 要点:您可以配置系统,以通过 TCP 协议将日志消息转发到服务器。omfwd 插件通过 UDP 或 TCP 提供转发。默认协议是 UDP。因为插件内置在内,所以不必加载它。
- 要点:先决条件
- 列表:rsyslog 软件包安装在应该向服务器报告的客户端系统上。
- 列表:您已为远程日志记录配置了服务器。
- 列表:在 SELinux 中允许指定的端口并在防火墙中打开。
- 列表:系统包含 policycoreutils-python-utils 软件包,它为 SELinux 配置中添加非标准端口提供 semanage 命令。
- 列表:在 /etc/rsyslog.d/ 目录中创建一个名为 的新文件,如 10-remotelog.conf,并插入以下内容: . action(type="omfwd" queue.type="linkedlist" queue.filename="example_fwd" action.resumeRetryCount="-1" queue.saveOnShutdown="on" target="example.com" port="30514" protocol="tcp" ) 其中: queue.type="linkedlist" 设置启用 LinkedList 内存中队列, queue.filename 设置…
- 列表:queue.type="linkedlist" 设置启用 LinkedList 内存中队列,
- 命令/配置摘录:
*.* action(type="omfwd" queue.type="linkedlist" queue.filename="example_fwd" action.resumeRetryCount="-1" queue.saveOnShutdown="on" target="example.com" port="30514" protocol="tcp" )
# systemctl restart rsyslog- 注意:注意 rsyslog 按照一般顺序处理配置文件 /etc/rsyslog.d/。
5.5. 配置 TLS 加密的远程日志记录
- 要点:使用 TLS 加密远程日志记录通信,以保护数据传输。在服务器和客户端上配置 TLS 有助于防止敏感日志被网络拦截器。
- 要点:默认情况下,Rsyslog 以纯文本形式发送远程日志信息。要通过 TLS 使用加密传输,请同时配置服务器和客户端。服务器收集和分析由一个或多个客户端系统发送的日志。
- 列表:有对客户端和服务器系统的 root 访问权限。
- 列表:以下软件包安装在服务器和客户端系统上: rsyslog 软件包。 对于 ossl 网络流驱动程序,是 rsyslog-openssl 软件包。 对于 gtls 网络流驱动程序,是 rsyslog-gnutls 软件包。 对于使用 certtool 命令生成证书,是 gnutls-utils 软件包。
- 列表:rsyslog 软件包。
- 列表:对于 ossl 网络流驱动程序,是 rsyslog-openssl 软件包。
- 列表:对于 gtls 网络流驱动程序,是 rsyslog-gnutls 软件包。
- 列表:对于使用 certtool 命令生成证书,是 gnutls-utils 软件包。
- 命令/配置摘录:
# Set certificate files global( DefaultNetstreamDriverCAFile="/etc/pki/ca-trust/source/anchors/ca-cert.pem" DefaultNetstreamDriverCertFile="/etc/pki/ca-trust/source/anchors/server-cert.pem" DefaultNetstreamDriverKeyFile="/etc/pki/ca-trust/source/anchors/server-key.pem" ) # TCP listener module( load="imtcp" PermittedPeer=["client1.example.com", "client2.example.com"] StreamDriver.AuthMode="x509/name" StreamDriver.Mode="1" StreamDriver.Name="ossl" ) # Start up listener at port 514 input( type="imtcp" port="514" )
input( type="imtcp" Port="50515" StreamDriver.Name="<driver>" streamdriver.CAFile="/etc/rsyslog.d/<ca1>.pem" streamdriver.CertFile="/etc/rsyslog.d/<server1_cert>.pem" streamdriver.KeyFile="/etc/rsyslog.d/<server1_key>.pem" )- 注意:注意 如果您的单独系统具有更高的安全性,例如没有连接到任何网络的系统,请将其用作证书颁发机构(CA)。
- 注意:注意 如果您更喜欢 GnuTLS 驱动程序,请使用 StreamDriver.Name="gtls" 配置选项。有关比 x509/name 严格性低的验证模式的更多信息,请参阅使用 rsyslog-doc 软件包安装的文档。
5.6. 配置服务器以通过 UDP 接收远程日志信息
- 要点:配置 Rsyslog 服务器,以通过高速 UDP 协议接收远程日志。在日志丢失可以接受时 UDP 适合,提供比 TCP 快的传输。
- 要点:要通过 UDP 使用远程日志记录,请同时配置服务器和客户端。接收服务器收集并分析一个或多个客户端系统发送的日志。默认情况下,rsyslog 使用端口 514 上的 UDP 从远程系统接收日志信息。
- 列表:rsyslog 已安装在服务器系统上。
- 列表:您以 root 身份登录到服务器中。
- 列表:已为使用 semanage 命令的可选步骤安装了 policycoreutils-python-utils 软件包。
- 列表:firewalld 服务在运行。
- 列表:可选:要将不同的端口用于 rsyslog 流量,而不是默认端口 514 : 将 syslogd_port_t SELinux 类型添加到 SELinux 策略配置中,使用您要 rsyslog 的端口号替换 portno : # semanage port -a -t syslogd_port_t -p udp portno 配置 firewalld 以允许传入的 rsyslog 流量,使用您要 rsyslog 使用的端口替换 portno,区替换 zone: # firewall-cmd --zone=zone --permanent --add-port=portno/udp success # firewall-cmd --r…
- 列表:将 syslogd_port_t SELinux 类型添加到 SELinux 策略配置中,使用您要 rsyslog 的端口号替换 portno : # semanage port -a -t syslogd_port_t -p udp portno
- 命令/配置摘录:
# semanage port -a -t syslogd_port_t -p udp portno
# firewall-cmd --zone=zone --permanent --add-port=portno/udp success # firewall-cmd --reload5.7. 通过 UDP 配置远程日志记录到服务器
- 要点:配置客户端系统,以使用 UDP 协议将其日志发送到远程服务器。当速度至关重要且日志消息丢失时,首选 UDP。
- 要点:omfwd 插件通过 UDP 或 TCP 提供转发。默认协议是 UDP。因为插件内置在内,所以不必加载它。
- 列表:rsyslog 软件包安装在应该向服务器报告的客户端系统上。
- 列表:您已为远程日志记录配置了服务器,如配置服务器 以通过 UDP 接收远程日志信息。
- 列表:在 /etc/rsyslog.d/ 目录中创建一个新的 .conf 文件,如 10-remotelogcli.conf,并插入以下内容: . action(type="omfwd" queue.type="linkedlist" queue.filename="example_fwd" action.resumeRetryCount="-1" queue.saveOnShutdown="on" target="example.com" port="portno" protocol="udp" ) 其中: queue.type="linkedlist" 设置启用一个 LinkedList 内存中队列。 queue.f…
- 列表:queue.type="linkedlist" 设置启用一个 LinkedList 内存中队列。
- 列表:queue.filename 设置定义磁盘存储。备份文件使用之前全局 workDirectory 指令指定的工作目录中的 example_fwd 前缀创建。
- 列表:action.resumeRetryCount -1 设置可防止 rsyslog 在重试时丢弃消息(如果服务器没有响应)。
- 命令/配置摘录:
*.* action(type="omfwd" queue.type="linkedlist" queue.filename="example_fwd" action.resumeRetryCount="-1" queue.saveOnShutdown="on" target="example.com" port="portno" protocol="udp" )
# systemctl restart rsyslog- 注意:注意 rsyslog 按照一般顺序处理配置文件 /etc/rsyslog.d/。
5.8. Rsyslog 中的负载均衡帮助程序
- 要点:在 Rsyslog 中配置负载平衡帮助程序,以在多个远程日志记录服务器之间分发日志数据。这提高了系统的恢复能力,并阻止任何单一服务器变得困难。
- 要点:当在集群中使用时,您可以通过修改 RebindInterval 设置来提高 Rsyslog 负载均衡。这个选项指定当前连接中断的时间间隔,并被重新建立。此设置适用于 TCP、UDP 和 RELP 流量。负载平衡器将信息作为新连接,并将消息转发到另一个物理目标系统。
- 命令/配置摘录:
action(type="omfwd" protocol="tcp" RebindInterval="250" target="example.com" port="514" …) action(type="omfwd" protocol="udp" RebindInterval="250" target="example.com" port="514" …) action(type="omrelp" RebindInterval="250" target="example.com" port="6514" …)5.9. 配置可靠的远程日志记录
- 要点:使用可靠的事件日志记录协议(RELP)配置可靠的远程日志记录。这有助于保证日志消息到达中央服务器,防止在网络中断期间数据丢失。
- 要点:使用 RELP,您可以降低消息丢失的风险通过 TCP 发送和接收 syslog 信息。RELP 可靠地交付事件信息,这在无法接受消息丢失的环境中非常有用。要使用 RELP,请在服务器上配置 imrelp 输入模块来接收日志和客户端上的 omrelp 输出模块来发送日志。
- 列表:您已在服务器和客户端系统中安装了 rsyslog、librelp 和 rsyslog-relp 软件包。
- 列表:在 SELinux 中允许指定的端口并在防火墙中打开。
- 列表:配置客户端系统以可靠远程记录: 在客户端系统上,在 /etc/rsyslog.d/ 目录中创建一个新的 .conf 文件,例如 relpclient.conf,并插入以下内容: module(load="omrelp") . action(type="omrelp" target="target_IP" port="target_port") 其中: target_IP 是日志记录服务器的 IP 地址。 target_port 是日志记录服务器的端口。 保存对 /etc/rsyslog.d/relpclient.conf 文件的更改。 重新启动 rsyslog 服务。 # systemctl restart rsysl…
- 列表:在客户端系统上,在 /etc/rsyslog.d/ 目录中创建一个新的 .conf 文件,例如 relpclient.conf,并插入以下内容: module(load="omrelp") . action(type="omrelp" target="target_IP" port="target_port") 其中: target_IP 是日志记录服务器的 IP 地址。 target_port 是日志记录服务器的端口。
- 列表:target_IP 是日志记录服务器的 IP 地址。
- 列表:target_port 是日志记录服务器的端口。
- 命令/配置摘录:
module(load="omrelp") *.* action(type="omrelp" target="_target_IP_" port="_target_port_")
# systemctl restart rsyslog5.10. 支持的 Rsyslog 模块
- 要点:使用特定模块扩展 Rsyslog 功能。这些模块提供额外的输入、输出或配置指令。加载模块后,这些指令将变为可用。使用这些模块自定义 Rsyslog 进程和处理日志消息的方式。
- 要点:您可以输入以下命令列出您系统中安装的输入和输出模块:
- 命令/配置摘录:
# ls /usr/lib64/rsyslog/{i,o}m*5.11. 配置 Netconsole 以将内核信息记录到远程主机
- 要点:配置 netconsole 服务,以将内核消息转发到远程主机。这有助于捕获关键内核事件,特别是当本地系统日志记录功能失败时。
- 要点:当无法登录到磁盘或使用串行控制台时,您可以使用 netconsole 内核模块通过网络记录内核信息。消息发送到远程 rsyslog 服务。
- 列表:远程主机上安装了系统日志服务,如 Rsyslog。
- 列表:远程系统日志服务被配置为接收来自此主机的日志条目。
- 列表:安装 netconsole-service 软件包: # dnf install netconsole-service
- 列表:编辑 /etc/sysconfig/netconsole 文件,并将 SYSLOGADDR 参数设为远程主机的 IP 地址: # SYSLOGADDR=192.0.2.1
- 列表:启用并启动 netconsole 服务: # systemctl enable --now netconsole
- 列表:在远程系统日志服务器上显示 /var/log/messages 文件。
- 命令/配置摘录:
# dnf install netconsole-service
# SYSLOGADDR=192.0.2.15.12. 其他资源
- 列表:在不使用 journald 或最小化 journald 的情况下配置系统日志记录(红帽知识库)
- 列表:RHEL 默认日志设置对性能的负面影响及其缓解措施(红帽知识库)
第 6 章 使用 RHEL 系统角色配置日志记录
- 要点:您可以使用 logging RHEL 系统角色,以自动的方式将本地和远程主机配置为日志记录服务器,以便从许多客户端系统收集日志。
- 要点:日志记录解决方案提供多种读取日志和多个日志记录输出的方法。
- 列表:本地文件
- 列表:systemd/journal
- 列表:网络上的另一个日志记录系统
- 列表:日志存储在 /var/log/ 目录中的本地文件中
- 列表:日志发送到 Elasticsearch 引擎
- 列表:日志被转发到另一个日志系统
6.1. 使用 logging RHEL 系统角色过滤本地日志消息
- 要点:您可以使用 日志记录 RHEL 系统角色的基于属性的过滤器根据各种条件过滤本地日志消息,如消息内容、工具或严重性。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Deploy the logging solution hosts: managed-node-01.example.com tasks: - name: Filter logs based on a specific value they contain ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: logging_inputs: - name: files_input type: basics l…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 列表:运行 playbook: $ ansible-playbook ~/playbook.yml
- 命令/配置摘录:
--- - name: Deploy the logging solution hosts: managed-node-01.example.com tasks: - name: Filter logs based on a specific value they contain ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: logging_inputs: - name: files_input type: basics logging_outputs: - name: files_output0 type: files property: msg property_op: contains property_value: error path: /var/log/errors.log - name: files_output1 type: files property: msg property_op: "!contains" property_value: error path: /var/log/others.log logging_flows: - name: flow0 inputs: [files_input] outputs: [files_output0, files_output1]
$ ansible-playbook --syntax-check ~/playbook.yml6.2. 使用 logging RHEL 系统角色应用远程日志解决方案
- 要点:您可以使用 logging RHEL 系统角色在多个系统中配置集中式日志管理。服务器从 remote_rsyslog 和 remote_files 配置接收远程输入,并将日志输出到以远程主机名命名的目录中的本地文件中。
- 要点:因此,您可以涵盖您需要的用例,例如:
- 列表:集中式日志管理:从单一存储点收集、访问和管理多台机器的日志消息简化了日常监控和故障排除任务。此外,此用例还减少了登录各个计算机来检查日志消息的需要。
- 列表:增强了安全性:在一个中央位置存储日志消息可增加它们处于安全且防止篡改的环境中的几率。这样的环境可以更轻松地检测和更有效地响应安全事件,并满足审计要求。
- 列表:提高了日志分析的效率:协调来自多个系统的日志消息对于快速故障排除跨多个机器或服务的复杂问题非常重要。这样,您可以快速分析并交叉引用来自不同源的事件。
- 列表:在服务器或客户端系统的 SELinux 策略中定义端口,并为这些端口打开防火墙。默认 SELinux 策略包括端口 601、514、6514、10514 和 20514。要使用其他端口,请参阅 修改客户端和服务器系统上的 SELinux 策略。
- 列表:您已准备好控制节点和受管节点。
- 列表:您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
- 命令/配置摘录:
--- - name: Deploy the logging solution hosts: managed-node-01.example.com tasks: - name: Configure the server to receive remote input ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: logging_inputs: - name: remote_udp_input type: remote udp_ports: [ 601 ] - name: remote_tcp_input type: remote tcp_ports: [ 601 ] logging_outputs: - name: remote_files_output type: remote_files logging_flows: - name: flow_0 inputs: [remote_udp_input, remote_tcp_input] outputs: [remote_files_output] - name: Deploy the logging solution hosts: managed-node-02.example.com tasks: - name: Configure the server to output…
$ ansible-playbook --syntax-check ~/playbook.yml6.3. 使用带有 TLS 的 logging RHEL 系统角色
- 要点:您可以使用 logging RHEL 系统角色配置日志消息的安全传输。一个或多个客户端从 systemd-journal 服务获取日志,并使用 TLS 将它们传送到远程服务器。
- 要点:当通过不太可信的或公共网络(如互联网)发送敏感数据时,通常使用远程日志记录解决方案中的 TLS 来传输日志。另外,通过在 TLS 中使用证书,您可以确保客户端将日志转发到正确的可信服务器。这可以防止诸如"中间人"的攻击。
6.3.1. 配置带有 TLS 的客户端日志
- 要点:您可以使用 logging RHEL 系统角色来在 RHEL 客户端上配置日志,并使用 TLS 加密将日志传送到远程日志系统。
- 要点:该角色创建私钥和证书。接下来,它对 Ansible 清单中的 clients 组中的所有主机配置 TLS。TLS 对信息的传输进行加密,确保日志在网络安全传输。
- 列表:您已准备好控制节点和受管节点。
- 列表:您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:受管节点已在 IdM 域中注册。
- 列表:如果日志记录服务器在启用了 FIPS 模式的情况下运行 RHEL 9.2 或更高版本,客户端必须支持扩展 Master Secret (EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅红帽知识库解决方案 强制执行 TLS 扩展"Extended Master Secret" 。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Configure remote logging solution by using TLS for secure transfer of logs hosts: managed-node-01.example.com tasks: - name: Deploying files input and forwards output with certs ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: logg…
- 命令/配置摘录:
--- - name: Configure remote logging solution by using TLS for secure transfer of logs hosts: managed-node-01.example.com tasks: - name: Deploying files input and forwards output with certs ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: logging_certificates: - name: logging_cert dns: ['www.example.com'] ca: ipa principal: "logging/{{ inventory_hostname }}@IDM.EXAMPLE.COM" logging_pki_files: - ca_cert: /local/path/to/ca_cert.pem cert: /local/path/to/logging_cert.pem private_key: /local/path/to/logging_cert.pem logging_inputs: - name: input_name type: files input_log_path: /var/log/containers/*.lo…
$ ansible-playbook --syntax-check ~/playbook.yml- 注意:注意 您不必在 playbook 中调用 certificate RHEL 系统角色来创建证书。当设置了 logging_certificates 变量时,logging RHEL 系统角色会自动调用它。 要让 CA 能够为创建的证书签名,受管节点必须在 IdM 域中注册。
- 注意:注意 如果您使用 logging_certificates 在受管节点上创建文件,请不要使用 ca_cert_src,cert_src 和 private_key_src,它们用于复制不是由 logging_certificates 创建的文件。
6.3.2. 配置带有 TLS 的服务器日志
- 要点:您可以使用 logging RHEL 系统角色来在 RHEL 服务器上配置日志,并使用 TLS 加密将它们设置为从远程日志系统接收日志。
- 要点:该角色创建私钥和证书。接下来,它对 Ansible 清单中 server 组中的所有主机配置 TLS。
- 列表:您已准备好控制节点和受管节点。
- 列表:您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:受管节点已在 IdM 域中注册。
- 列表:如果日志记录服务器在启用了 FIPS 模式的情况下运行 RHEL 9.2 或更高版本,客户端必须支持扩展 Master Secret (EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅红帽知识库解决方案 强制执行 TLS 扩展"Extended Master Secret" 。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Configure remote logging solution by using TLS for secure transfer of logs hosts: managed-node-01.example.com tasks: - name: Deploying remote input and remote_files output with certs ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: …
- 命令/配置摘录:
--- - name: Configure remote logging solution by using TLS for secure transfer of logs hosts: managed-node-01.example.com tasks: - name: Deploying remote input and remote_files output with certs ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: logging_certificates: - name: logging_cert dns: ['www.example.com'] ca: ipa principal: "logging/{{ inventory_hostname }}@IDM.EXAMPLE.COM" logging_pki_files: - ca_cert: /local/path/to/ca_cert.pem cert: /local/path/to/logging_cert.pem private_key: /local/path/to/logging_cert.pem logging_inputs: - name: input_name type: remote tcp_ports: [514] tls: true permi…
$ ansible-playbook --syntax-check ~/playbook.yml- 注意:注意 您不必在 playbook 中调用 certificate RHEL 系统角色来创建证书。logging RHEL 系统角色自动调用它。 要让 CA 能够为创建的证书签名,受管节点必须在 IdM 域中注册。
- 注意:注意 如果您使用 logging_certificates 在受管节点上创建文件,请不要使用 ca_cert_src,cert_src 和 private_key_src,它们用于复制不是由 logging_certificates 创建的文件。
6.4. 使用带有 RELP 的 logging RHEL 系统角色
- 要点:您可以使用 logging RHEL 系统角色在 RELP 客户端和 RELP 服务器之间配置可靠的事件日志记录协议(RELP)。
- 要点:RELP 是通过 TCP 网络进行数据和消息日志记录的网络协议。它确保了事件消息的可靠传递,您可以在不容许任何消息丢失的环境中使用它。
6.4.1. 使用 RELP 配置客户端日志
- 要点:您可以使用 logging RHEL 系统角色进行配置,来将本地存储的日志消息传输到带有 RELP 的远程日志系统。
- 要点:RELP 配置使用传输层安全(TLS)来加密消息传输,保证日志在网络上安全传输。
- 列表:您已准备好控制节点和受管节点。
- 列表:您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Configure client-side of the remote logging solution by using RELP hosts: managed-node-01.example.com tasks: - name: Deploy basic input and RELP output ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: logging_inputs: - name: basic…
- 列表:如果设置了 {ca_cert_src,cert_src,private_key_src} 三元组,则默认位置 /etc/pki/tls/certs 和 /etc/pki/tls/private 被用作受管节点上的目的地,以便从控制节点传输文件。在这种情况下,文件名与 triplet 中的原始名称相同
- 列表:如果设置了 {ca_cert,cert,private_key} 三元组,则文件在日志配置前应位于默认路径上。
- 命令/配置摘录:
--- - name: Configure client-side of the remote logging solution by using RELP hosts: managed-node-01.example.com tasks: - name: Deploy basic input and RELP output ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: logging_inputs: - name: basic_input type: basics logging_outputs: - name: relp_client type: relp target: logging.server.com port: 20514 tls: true ca_cert: /etc/pki/tls/certs/ca.pem cert: /etc/pki/tls/certs/client-cert.pem private_key: /etc/pki/tls/private/client-key.pem pki_authmode: name permitted_servers: - '*.server.example.com' logging_flows: - name: example_flow inputs: [basic_i…
$ ansible-playbook --syntax-check ~/playbook.yml6.4.2. 配置带有 RELP 的服务器日志
- 要点:您可以使用 logging RHEL 系统角色配置服务器,来从带有 RELP 的远程日志系统接收日志消息。
- 要点:RELP 配置使用 TLS 加密消息传输,以保证在网络上安全地传输日志。
- 列表:您已准备好控制节点和受管节点。
- 列表:您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Configure server-side of the remote logging solution by using RELP hosts: managed-node-01.example.com tasks: - name: Deploying remote input and remote_files output ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: logging_inputs: -…
- 列表:如果设置了 {ca_cert_src,cert_src,private_key_src} 三元组,则默认位置 /etc/pki/tls/certs 和 /etc/pki/tls/private 被用作受管节点上的目的地,以便从控制节点传输文件。在这种情况下,文件名与 triplet 中的原始名称相同
- 列表:如果设置了 {ca_cert,cert,private_key} 三元组,则文件在日志配置前应位于默认路径上。
- 命令/配置摘录:
--- - name: Configure server-side of the remote logging solution by using RELP hosts: managed-node-01.example.com tasks: - name: Deploying remote input and remote_files output ansible.builtin.include_role: name: redhat.rhel_system_roles.logging vars: logging_inputs: - name: relp_server type: relp port: 20514 tls: true ca_cert: /etc/pki/tls/certs/ca.pem cert: /etc/pki/tls/certs/server-cert.pem private_key: /etc/pki/tls/private/server-key.pem pki_authmode: name permitted_clients: - '*client.example.com' logging_outputs: - name: remote_files_output type: remote_files logging_flows: - name: example_flow inputs: [relp_serve…
$ ansible-playbook --syntax-check ~/playbook.yml第 7 章 审计系统
- 要点:审核您的系统以记录与安全相关的事件,识别潜在的入侵,并验证是否与安全策略相符。Linux 审计系统是此安全流程的核心。
- 要点:审计系统不会为您的系统提供额外的安全性。相反,它可以检测系统中的安全策略违反情况。您可以通过其他安全措施(如 SELinux)进一步防止这些违反情况。
7.1. Linux 审计
- 要点:借助 Linux 审计,您可以跟踪系统的与安全相关的信息。通过遵循预配置的规则,审计会生成日志条目,以尽可能多地记录系统上事件的信息。此信息对于确定安全策略的 violator 至关重要。
- 要点:例如,审计可以在其日志文件中记录以下信息:
- 列表:事件的日期、时间、类型和结果
- 列表:主题和对象的敏感度标签
- 列表:事件与触发事件的用户身份的关联
- 列表:所有对审计配置的修改,并尝试访问审计日志文件
- 列表:所有身份验证机制的使用,如 SSH 和 Kerberos 等
- 列表:对任何可信数据库的更改,如 /etc/passwd
- 注意:注意 审计会根据收集的信息量影响系统性能。
7.2. 审计系统架构
- 要点:审计系统通过使用用户空间应用程序和内核端系统调用处理记录安全相关的事件。
- 要点:审计系统由以下主要部分组成:
- 列表:审计守护进程
- 列表:内核审计组件
- 列表:审计日志文件
- 列表:auditctl 工具与内核审计组件交互。它管理规则。它还控制事件生成过程的设置和参数。
- 列表:其余的审计工具使用审计日志文件作为输入。它们根据您的要求生成输出。例如,aureport 工具生成所有记录的事件的报告。
7.3. 安全环境的审计设置
- 要点:配置特定的审计规则和设置,如 STIG 提供的设置,以创建安全审计环境。这有助于确保全面记录与安全相关的事件。
- 要点:默认的 auditd 配置应该适合于大多数环境。但是,如果您的环境必须满足严格的安全策略,您可以在 /etc/audit/auditd.conf 文件中更改审计守护进程配置的以下设置:
7.4. 启动和控制 auditd的命令
- 要点:启动、停止和控制 auditd 服务,该服务管理系统审计记录。维护该服务对于持续安全监控和记录重要事件至关重要。
- 要点:配置了 auditd 后,启动服务以收集 审计信息,并将它存储在日志文件中。以 root 用户身份运行以下命令来启动 auditd :
- 命令/配置摘录:
# service auditd start
# systemctl enable auditd- 注意:注意 service 命令是与 auditd 守护进程正确交互的唯一方法。您必须使用 service 命令,以便正确记录 auid 值。您只将 systemctl 命令用于两个操作: enable 和 status。
7.5. 审计日志条目
- 要点:Audit 系统创建的日志条目为诊断分析和故障排除提供关键数据。
- 要点:默认情况下,审计系统将日志条目存储在 /var/log/audit/audit.log 文件中;如果启用了日志轮转,则轮转的 audit.log 文件也在存储同一个目录中。
- 列表:记录的时间戳和唯一 ID,格式为 audit (time_stamp:ID)。如果多个记录是作为同一审计事件的一部分生成的,则可以共享相同的时间戳和 ID。时间戳使用 Unix 时间格式 - 自 1970 年 1 月 1 日 00:00:00 UTC 起的秒数。
- 列表:内核或用户空间应用程序提供的各种特定于事件的 name=value 对。
- 命令/配置摘录:
# auditctl -w /etc/ssh/sshd_config -p warx -k sshd_config
$ cat /etc/ssh/sshd_config7.6. 使用 auditctl 定义的审计规则的示例
- 要点:使用 auditctl 实用程序定义审计规则,以控制日志中捕获哪些系统事件。这些示例演示了如何监控文件访问、系统调用和可执行文件。
- 要点:Linux 审计系统对一组规则进行操作,这些规则定义日志文件中捕获的内容。可以使用 auditctl 工具或在 /etc/audit/rules.d/ 目录中在命令行上设置审计规则。
- 列表:要定义一条规则,记录对 /etc/passwd 文件的所有写访问和每个属性的修改: # auditctl -w /etc/passwd -p wa -k passwd_changes
- 列表:要定义一条规则,记录对 /etc/selinux/ 目录中所有文件的写访问和每个属性的修改: # auditctl -w /etc/selinux/ -p wa -k selinux_changes
- 列表:要定义一条规则,当程序每次使用 adjtimex 或 settimeofday 系统调用时就创建一条日志,系统使用 64 位构架: # auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
- 列表:定义一条规则,在 ID 为 1000 或以上的系统用户每次删除或重命名文件时创建一条日志: # auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete 请注意,-F auid!=4294967295 选项用于排除未设置登录 UID 的用户。
- 列表:要定义一条规则,记录所有 /bin/id 程序的执行,请输入以下命令: # auditctl -a always,exit -F exe=/bin/id -F arch=b64 -S execve -k execution_bin_id
- 命令/配置摘录:
# auditctl -w /etc/passwd -p wa -k passwd_changes
# auditctl -w /etc/selinux/ -p wa -k selinux_changes7.7. 审计持久规则
- 要点:通过将规则添加到 /etc/audit/rules.d/ 目录来创建持久性审计规则。这有助于确保您的监控配置保持活跃且有效,即使在系统重启后也是如此。
- 要点:要定义重启后保留的审计规则,请直接将它们包含在 /etc/audit/rules.d/audit.rules 文件中,或使用 augenrules 程序。augenrules 程序从 /etc/audit/rules.d/ 目录中读取规则。
- 命令/配置摘录:
# auditctl -R /usr/share/audit/sample-rules/30-stig.rules
# augenrules --load /sbin/augenrules: No change No rules enabled 1 failure 1 pid 742 rate_limit 0 …7.8. 预先配置的审计规则文件符合标准
- 要点:使用预配置的规则文件作为基准,使您的审计系统与 PCI-DSS 或 STIG 等标准保持一致。这些示例演示了如何构建规则以满足特定合规性要求。
- 要点:要配置审计以符合特定认证标准(如 OSPP、PCI DSS 或 STIG)的审计,您可以使用 audit 软件包安装的预配置规则文件。示例规则位于 /usr/share/audit/sample-rules 目录中。
- 命令/配置摘录:
# cd /usr/share/audit/sample-rules/ # cp 10-base-config.rules 30-stig.rules 31-privileged.rules 99-finalize.rules /etc/audit/rules.d/ # augenrules --load- 注意:重要 sample-rules 目录中的 Audit 示例规则并不详尽,也不是最新的,因为安全标准是动态的,并可能会发生变化。提供这些规则仅为了演示如何构建和编写审计规则。它们不能确保立即符合最新的安全标准。要根据特定安全准则使您的系统符合最新的安全标准,请使用 基于 SCAP 的安全合规性工具。
7.9. 禁用 augenrules
- 要点:您可以关闭 augenrules 工具,它将审计切换为使用 /etc/audit/audit.rules 文件中定义的规则。这允许在特定环境中实现更简单的规则管理流程。
- 要点:先决条件
- 列表:有对系统的 root 访问权限。
- 列表:auditd 服务已经安装。
- 列表:将 /usr/lib/systemd/system/auditd.service 文件复制到 /etc/systemd/system/ 目录中: # cp -f /usr/lib/systemd/system/auditd.service /etc/systemd/system/
- 列表:在您选择的文本编辑器中编辑 /etc/systemd/system/auditd.service 文件,例如: # vi /etc/systemd/system/auditd.service
- 列表:注释掉包含 augenrules 的行,将包含 auditctl -R 命令的行取消注释: #ExecStartPost=-/sbin/augenrules --load ExecStartPost=-/sbin/auditctl -R /etc/audit/audit.rules
- 列表:重新载入 systemd 守护进程以获取 auditd.service 文件中的修改: # systemctl daemon-reload
- 命令/配置摘录:
# cp -f /usr/lib/systemd/system/auditd.service /etc/systemd/system/
# vi /etc/systemd/system/auditd.service7.10. 配置审计来监控软件更新
- 要点:配置 Audit,以使用专用规则文件监控软件更新和软件包安装。每当 DNF 或 RPM 等工具修改系统时,这个设置会生成事件。
- 要点:您可以使用预先配置的规则 44-installers.rules 将 Audit 配置为监控以下安装软件的工具:
- 列表:dnf [1]
- 列表:yum
- 列表:pip
- 列表:npm
- 列表:cpan
- 列表:gem
- 命令/配置摘录:
# cp /usr/share/audit/sample-rules/44-installers.rules /etc/audit/rules.d/
# augenrules --load- 注意:注意 预配置的规则文件不能用于 ppc64le 和 aarch64 架构的系统。
7.11. 使用审计监控用户登录时间
- 要点:使用 ausearch 和 aureport 工具监控和显示用户登录时间和会话活动。这概述了用户访问系统时,而无需自定义配置。
- 要点:先决条件
- 列表:auditd 服务根据 第 7.3 节 “安全环境的审计设置” 配置。
- 列表:在审计日志中搜索 USER_LOGIN 消息类型: # ausearch -m USER_LOGIN -ts '12/02/2020' '18:00:00' -sv no time->Mon Nov 22 07:33:22 2021 type=USER_LOGIN msg=audit(1637584402.416:92): pid=1939 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=login acct="(unknown)" exe="/usr/sbin/sshd" hostname=? ad…
- 列表:您可以使用 -ts 选项指定日期和时间。如果不使用这个选项,ausearch 将提供从当天开始的结果,如果您省略时间,ausearch 将提供从午夜开始的结果。
- 列表:您可以使用 -sv yes 选项来过滤成功的登录尝试,-sv no 用来过滤失败的登录尝试。
- 列表:将 ausearch 命令的原始输出传送给 aulast 工具,它以类似于 last 命令的输出格式显示输出。例如: # ausearch --raw | aulast --stdin root ssh 10.37.128.108 Mon Nov 22 07:33 - 07:33 (00:00) root ssh 10.37.128.108 Mon Nov 22 07:33 - 07:33 (00:00) root ssh 10.22.16.106 Mon Nov 22 07:40 - 07:40 (00:00) reboot system boot 4.18.0-348.6.el8 Mon Nov 22 07:33
- 列表:使用 aureport 命令及 --login -i 选项来显示登录事件列表。 # aureport --login -i Login Report ============================================ # date time auid host term exe success event ============================================ 1. 11/16/2021 13:11:30 root 10.40.192.190 ssh /usr/sbin/sshd yes 6920 2. 11/16/2021 13:11:31 root 10.40.192.1…
- 命令/配置摘录:
# ausearch -m USER_LOGIN -ts '12/02/2020' '18:00:00' -sv no time->Mon Nov 22 07:33:22 2021 type=USER_LOGIN msg=audit(1637584402.416:92): pid=1939 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=login acct="(unknown)" exe="/usr/sbin/sshd" hostname=? addr=10.37.128.108 terminal=ssh res=failed'
# ausearch --raw | aulast --stdin root ssh 10.37.128.108 Mon Nov 22 07:33 - 07:33 (00:00) root ssh 10.37.128.108 Mon Nov 22 07:33 - 07:33 (00:00) root ssh 10.22.16.106 Mon Nov 22 07:40 - 07:40 (00:00) reboot system boot 4.18.0-348.6.el8 Mon Nov 22 07:337.12. 其他资源
- 列表:容器中的 auditd 执行选项(红帽知识库)
- 列表:Linux Audit Documentation Project 页面(Github.com)
第 8 章 管理及监控安全更新
- 要点:安装安全更新,并显示更新的其他详细信息,以保护您的 Red Hat Enterprise Linux 系统免受新发现的威胁和漏洞。
8.1. 识别安全更新
- 要点:为了确保企业系统不受当前和未来的安全威胁,系统需要定期进行安全更新。红帽产品安全团队为您提供了安心部署和维护企业解决方案所需的指导。
8.1.1. 红帽安全公告
- 要点:红帽安全公告(RHSA)记录了有关在红帽产品和服务中修复的安全漏洞的信息。
- 要点:每个 RHSA 包括以下信息:
- 列表:重要性
- 列表:类型和状态
- 列表:受影响的产品
- 列表:修复问题的摘要
- 列表:问题相关的报告链接。请注意,不是所有的报告都是公开的。
- 列表:公共漏洞和暴露(Common Vulnerabilities and Exposures,简称 CVE)编号以及更多详情(如攻击复杂性)的链接。
8.1.2. 显示主机上未安装的安全更新
- 要点:显示主机系统中当前未安装的所有安全更新,以识别需要立即操作或安装的关键软件包。
- 要点:您可以使用 DNF 实用程序列出系统的所有可用安全更新。
- 列表:红帽订阅附加到主机。
- 列表:列出主机上尚未安装的所有可用安全更新: # dnf updateinfo list updates security … RHSA-2019:0997 Important/Sec. platform-python-3.6.8-2.el8_0.x86_64 RHSA-2019:0997 Important/Sec. python3-libs-3.6.8-2.el8_0.x86_64 RHSA-2019:0990 Moderate/Sec. systemd-239-13.el8_0.3.x86_64 …
- 命令/配置摘录:
# dnf updateinfo list updates security … RHSA-2019:0997 Important/Sec. platform-python-3.6.8-2.el8_0.x86_64 RHSA-2019:0997 Important/Sec. python3-libs-3.6.8-2.el8_0.x86_64 RHSA-2019:0990 Moderate/Sec. systemd-239-13.el8_0.3.x86_64 …8.1.3. 显示在主机上安装的安全更新
- 要点:显示主机上已安装的安全更新。这有助于您验证是否应用了所需的修复,并跟踪系统的当前安全状况。
- 要点:您可以使用 DNF 工具列出系统的已安装的安全更新。
- 列表:红帽订阅附加到主机。
- 列表:列出主机上安装的所有安全更新: # dnf updateinfo list security --installed … RHSA-2019:1234 Important/Sec. libssh2-1.8.0-7.module+el8+2833+c7d6d092 RHSA-2019:4567 Important/Sec. python3-libs-3.6.7.1.el8.x86_64 RHSA-2019:8901 Important/Sec. python3-libs-3.6.8-1.el8.x86_64 … 如果安装了多个软件包更新,dnf 将列出该软件包的所有公告。在上例中,自系统安装以来,已安装了 python3-libs …
- 命令/配置摘录:
# dnf updateinfo list security --installed … RHSA-2019:1234 Important/Sec. libssh2-1.8.0-7.module+el8+2833+c7d6d092 RHSA-2019:4567 Important/Sec. python3-libs-3.6.7.1.el8.x86_64 RHSA-2019:8901 Important/Sec. python3-libs-3.6.8-1.el8.x86_64 …8.1.4. 使用 DNF 显示特定的公告
- 要点:使用 DNF 工具来显示有关特定安全公告的详细信息。这有助于您了解相关的 bug、其严重性以及包括哪些软件包。
- 要点:先决条件
- 列表:红帽订阅附加到主机。
- 列表:您知道安全公告的 ID。
- 列表:公告提供的更新没有安装。
- 列表:显示特定的公告,例如: # dnf updateinfo info RHSA-2019:0997 ==================================================================== Important: python3 security update ==================================================================== Update ID: RHSA-2019:0997 Type: security Updated: 2019-05-07 05:41:52 Bugs: 1688543 - CVE-20…
- 命令/配置摘录:
# dnf updateinfo info RHSA-2019:0997 ==================================================================== Important: python3 security update ==================================================================== Update ID: RHSA-2019:0997 Type: security Updated: 2019-05-07 05:41:52 Bugs: 1688543 - CVE-2019-9636 python: Information Disclosure due to urlsplit improper NFKC normalization CVEs: CVE-2019-9636 Description: …8.2. 安装安全更新
- 要点:在 Red Hat Enterprise Linux 中,您可以安装特定的安全公告以及所有可用的安全更新。您还可以将系统配置为自动下载和安装安全更新。
8.2.1. 安装所有可用的安全更新
- 要点:使用 DNF 工具安装所有可用的红帽安全更新。这有助于修补所有已知的漏洞,并快速使系统完全合规。
- 要点:先决条件
- 列表:红帽订阅附加到主机。
- 列表:使用 DNF 工具安装安全更新: # dnf update --security 没有 --security 参数,dnf update 会安装所有更新,包括 bug 修复和增强。
- 列表:按 y 确认并启动安装: … Transaction Summary =========================================== Upgrade … Packages Total download size: … M Is this ok [y/d/N]: y
- 列表:可选:列出安装更新的软件包后需要手动重启系统的进程: # dnf needs-restarting 1107 : /usr/sbin/rsyslogd -n 1199 : -bash 上一命令只列出需要重启的进程,而不是服务。也就是说,您无法使用 systemctl 命令重启列出的进程。例如,当拥有它的用户注销时,输出中显示的 bash 进程会终止。
- 列表:验证没有剩余的安全更新: # dnf updateinfo list updates security 如果命令没有返回任何输出,则会安装所有可用的安全更新。
- 命令/配置摘录:
# dnf update --security
… Transaction Summary =========================================== Upgrade … Packages Total download size: … M Is this ok [y/d/N]: y8.2.2. 安装特定公告提供的安全更新
- 要点:使用 DNF 工具安装与特定公告 ID 关联的安全更新。这允许在没有更新所有软件包的情况下对关键漏洞进行补丁。
- 要点:在某些情况下,您应该只安装特定的更新。例如,如果一个特定服务可以在不需要调度停机时间的情况下更新,您可以只为该服务安装安全更新,之后再安装剩余的更新。
- 列表:红帽订阅附加到主机。
- 列表:您知道您要更新的安全公告的 ID。 如需更多信息,请参阅 识别安全公告更新 部分。
- 列表:安装特定的公告,例如: # dnf update --advisory=RHSA-2019:0997
- 列表:或者,使用 dnf upgrade-minimal 命令进行更新,以应用具有最小版本更改的特定公告,例如: # dnf upgrade-minimal --advisory=RHSA-2019:0997
- 列表:按 y 确认并启动安装: … Transaction Summary =========================================== Upgrade … Packages Total download size: … M Is this ok [y/d/N]: y
- 列表:可选:在安装更新的软件包后列出需要手动重启系统的进程: # dnf needs-restarting 1107 : /usr/sbin/rsyslogd -n 1199 : -bash 上一命令只列出需要重启的进程,而不是服务。也就是说,您无法使用 systemctl 命令重启列出的进程。例如,当拥有它的用户注销时,输出中显示的 bash 进程会终止。
- 命令/配置摘录:
# dnf update --advisory=RHSA-2019:0997
# dnf upgrade-minimal --advisory=RHSA-2019:09978.2.3. 自动安装安全更新
- 要点:配置 dnf-automatic 工具以自动下载和安装安全更新。自动化此任务有助于确保您的系统不会受到新发现的威胁,而无需手动干预。
- 要点:如需更多信息,请参阅您系统上的 dnf-automatic (8) 手册页。
- 列表:红帽订阅附加到主机。
- 列表:dnf-automatic 软件包已安装。
- 列表:在 /etc/dnf/automatic.conf 文件中,在 [commands] 部分,确保将 upgrade_type 选项被设置为 default 或 security : [commands] # What kind of upgrade to perform: # default = all available upgrades # security = only the security upgrades upgrade_type = security
- 列表:启用并启动 systemd 计时器单元: # systemctl enable --now dnf-automatic-install.timer
- 列表:验证计时器是否已启用: # systemctl status dnf-automatic-install.timer
- 命令/配置摘录:
[commands] # What kind of upgrade to perform: # default = all available upgrades # security = only the security upgrades upgrade_type = security
# systemctl enable --now dnf-automatic-install.timer完整目录
- 备份数据、日志监控和管理安全更新
- 对红帽文档提供反馈
- 第 1 章 恢复系统
- 1.1. 配置 ReaR 并手动创建备份
- 1.2. 在 64 位 IBM Z 构架上使用 ReaR 救援镜像
- 1.3. 使用 ReaR 恢复您的系统
- 1.4. 修改 ReaR 备份的内容
- 第 2 章 使用日志文件对问题进行故障排除
- 2.1. 使用日志文件进行基本故障排除
- 2.2. 处理 syslog 消息的服务
- 2.3. 存储 syslog 消息的子目录
- 2.4. 查看日志的命令
- 2.4.1. 查看系统信息
- 2.4.2. 查看有关特定服务的信息
- 2.4.3. 查看与特定引导相关的日志
- 2.5. 其他资源
- 第 3 章 在 web 控制台中查看和过滤日志
- 3.1. 查看 web 控制台中的日志
- 3.2. 在 web 控制台中过滤日志
- 3.3. 在 web 控制台中过滤日志的文本搜索选项
- 3.4. 使用文本搜索框过滤 web 控制台中的日志
- 3.5. 过滤日志的选项
- 第 4 章 使用 RHEL 系统角色配置 systemd 日志
- 4.1. 使用 journald RHEL 系统角色配置持久性日志记录
- 第 5 章 配置远程日志记录解决方案
- 5.1. Rsyslog 日志记录服务
- 5.2. 安装 Rsyslog 文档
- 5.3. 通过 TCP 配置服务器进行远程记录
- 5.4. 通过 TCP 配置远程日志记录到服务器
- 5.5. 配置 TLS 加密的远程日志记录
- 5.6. 配置服务器以通过 UDP 接收远程日志信息
- 5.7. 通过 UDP 配置远程日志记录到服务器
- 5.8. Rsyslog 中的负载均衡帮助程序
- 5.9. 配置可靠的远程日志记录
- 5.10. 支持的 Rsyslog 模块
- 5.11. 配置 Netconsole 以将内核信息记录到远程主机
- 5.12. 其他资源
- 第 6 章 使用 RHEL 系统角色配置日志记录
- 6.1. 使用 logging RHEL 系统角色过滤本地日志消息
- 6.2. 使用 logging RHEL 系统角色应用远程日志解决方案
- 6.3. 使用带有 TLS 的 logging RHEL 系统角色
- 6.3.1. 配置带有 TLS 的客户端日志
- 6.3.2. 配置带有 TLS 的服务器日志
- 6.4. 使用带有 RELP 的 logging RHEL 系统角色
- 6.4.1. 使用 RELP 配置客户端日志
- 6.4.2. 配置带有 RELP 的服务器日志
- 第 7 章 审计系统
- 7.1. Linux 审计
- 7.2. 审计系统架构
- 7.3. 安全环境的审计设置
- 7.4. 启动和控制 auditd的命令
- 7.5. 审计日志条目
- 7.6. 使用 auditctl 定义的审计规则的示例
- 7.7. 审计持久规则
- 7.8. 预先配置的审计规则文件符合标准
- 7.9. 禁用 augenrules
- 7.10. 配置审计来监控软件更新
- 7.11. 使用审计监控用户登录时间
- 7.12. 其他资源
- 第 8 章 管理及监控安全更新
- 8.1. 识别安全更新
- 8.1.1. 红帽安全公告
- 8.1.2. 显示主机上未安装的安全更新
- 8.1.3. 显示在主机上安装的安全更新
- 8.1.4. 使用 DNF 显示特定的公告
- 8.2. 安装安全更新
- 8.2.1. 安装所有可用的安全更新
- 8.2.2. 安装特定公告提供的安全更新
- 8.2.3. 自动安装安全更新
- 8.1. 识别安全更新
