[步骤] Linux SCAP (Security Content Automation Protocol) 的生成 (Linux 开源安全报道的生成)

正文:

步骤一:安装 openscap 和相关组件

如果是 RHEL:

# yum install openscap openscap-scanner

如果是 SLE:

# zypper install openscap openscap-utils scap-security-guide

步骤二:下载最新的 SUSE 官方 OVAL 文件

2.1 进入存放下载的官方 OVAL 文件的目录

# cd /root

(补充:这里以把官方的 OVAL 文件下载到 /root 目录为例)

2.2 下载最新的官方 OVAL 文件

如果是 RHEL:

# wget -O - https://access.redhat.com/security/data/oval/v2/RHEL9/rhel-9.oval.xml.bz2

(补充:这里以下载 RHEL 9 官方的 OVAL 文件为例)

如果是 SLES:

# wget https://ftp.suse.com/pub/projects/security/oval/suse.linux.enterprise.15-patch.xml.bz2

(补充:这里以下载 SLE 15 官方的 OVAL 文件为例)

2.2 解压下载下来的 OVAL 文件

如果是 RHEL:

# bzip2 -d rhel-9.oval.xml.bz2

(补充:这里以解压 rhel-9.oval.xml.bz2 文件为例)

如果是 SLES:

# bzip2 -d suse.linux.enterprise.15-patch.xml.bz2

(补充:这里以解压 suse.linux.enterprise.15-patch.xml.bz2 文件为例)

步骤三:使用 SUSE 官方的 OVAL 文件生成 SCAP (Security Content Automation Protocol) 报告

如果是 RHEL:

# oscap oval eval  --report /root/rhel9.5_report20240101.html /root/rhel-9.oval.xml

(补充:这里以用刚刚下载的官方的 OVAL 文件生成名为 rhel9.5_report20240101.html 的 SCAP (Security Content Automation Protocol) 报告文件,并放在 /root 目录下为例)

如果是 SLES:

# oscap oval eval --report /root/sles15.5_report_20240101.html /root/suse.linux.enterprise.15-patch.xml

(补充:这里以用刚刚下载的官方的 OVAL 文件生成名为 sles15.5_report_20240101.html 的 SCAP (Security Content Automation Protocol) 报告文件,并放在 /root 目录下为例)

参考文献:

https://documentation.suse.com/compliance/all/html/SLES-openscap/index.html

[STEP] Linux Audit Log join /var/log/message

Main Content:

Step One: Modify /audit/plugins.d/syslog.conf file

# vim /audit/plugins.d/syslog.conf

Modify part content as follow:

Modify part content as follow:
......
active = no
......

Step Two: Restart auditd Service

# service auditd restart

Reference:

https://access.redhat.com/solutions/637863

[步骤] Linux Kdump 的开启 (用于收集内核崩溃时的信息) (CentOS 7 & Rocky Linux 8 & RHEL 7 & RHEL 8 版)

步骤一:开启 Kdump

1.1 确保 crash 和 kernel-debuginfo 两个软件包已安装

# rpm -qa | grep crash || yum install crash ; rpm -qa | grep kernel-debug || yum install kernel-debug

1.2 设置内核崩溃信息的存放位置

# vim /etc/kdump.conf

修改以下内容:

......
path /var/crash
......


补充:
1) 默认的存放位置是 /var/crash
2) 把这里修改成想要存放内核崩溃信息的目录
3) 为了保险起见存放内核崩溃信息的位置最好有大于内存大小的剩余空间

1.3 重新启动 kdump 服务并设置为开机自启

# systemctl restart kdump ; systemctl enable kdump

1.4 确保 kdump 服务已经开启

# systemctl status kdump

(补充:当显示输出结果里包含 operational 或者 Active: active (exited) 时,则说明 Kdump 已经启用)

步骤二:设置收集内核崩溃信息的触发条件

2.1 当内核崩溃时自动收集内核崩溃信息

2.1.1 修改 /etc/sysctl.conf 文件
# vim /etc/sysctl.conf

添加以下内容:

......
kernel.hung_task_panic=1
2.1.2 让修改的 /etc/sysctl.conf 文件生效
# sysctl -p /etc/sysctl.conf
2.1.3 当内核崩溃时,系统会自动收集内核崩溃信息并重启

(步骤略)


注意:
1) 只有 task hang 住,或者处理器线程 soft lock 时才会自动产生 dump
2) 此过程系统会自动重启

2.2 当内核崩溃时使用魔术键收集内核崩溃信息

2.2.1 修改 /etc/sysctl.conf 文件
# vim /etc/sysctl.conf

添加以下内容:

......
kernel.sysrq = 1
2.2.2 让修改的 /etc/sysctl.conf 文件生效
# sysctl -p /etc/sysctl.conf
2.2.3 当内核崩溃时,使用魔术键收集内核崩溃信息并让系统自动重启

同时先后按下以下三个按键:

ALT + PRINTSCREEN + C


注意:
1) 此过程会让系统自动重启
2) 只是系统死机并不代表有 kernel panic

2.3 当内核崩溃时使用硬件发送 NMI 收集内核崩溃信息

2.3.1 修改 /etc/sysctl.conf 文件
# vim /etc/sysctl.conf

添加以下内容:

......
kernel.unknown_nmi_panic = 1
kernel.panic_on_unrecovered_nmi = 1
kernel.panic_on_io_nmi = 1
2.3.2 让修改的 /etc/sysctl.conf 文件生效
# sysctl -p /etc/sysctl.conf
2.3.3 当内核崩溃时,联系硬件技术支持使用硬件发送 NMI 收集内核崩溃信息

(步骤略)

步骤三:手动触发内核崩溃测试 Kdmup

# echo c > /proc/sysrq-trigger

(注意:此操作会造成系统重启)

参考文献:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/system_design_guide/installing-and-configuring-kdump_system-design-guide
https://access.redhat.com/solutions/916043
https://access.redhat.com/solutions/3698411
https://access.redhat.com/solutions/6038
https://access.redhat.com/solutions/23069

[步骤] Linux journal 日志的永久存储

正文:

步骤一:理解 journal 日志存储机制

默认情况下,journal 的日志存储在 /run/log/journal,而 /run 目录只是一个临时目录。

将 Storage 参数设置为 persistent 后,journal 的日志将存储在 /var/log/journal,/var/log 则是一个永久的目录。

步骤二:将 journal 日志设置为永久存储

2.1 修改 /etc/systemd/journald.conf 文件

# vi /etc/systemd/journald.conf

将部分内容修改如下:

[Journal]
......
Storage=persistent
......

2.2 重启 systemd-journald 服务

# systemctl restart systemd-journald.service

参考文献:

https://linuxconfig.org/introduction-to-the-systemd-journal