我希望每次有人在 Debian Linux 上读取我的私钥内容时立即收到警报。我该怎么做?
我的服务器磁盘上存储了一个 RSA 私钥,位于以下位置:
/etc/ssl/private/super-secret.key
它只能由 root 读取,但我仍然希望记录每次此密钥被人员或进程读取的日志,并存储该读取事件的上下文,以用于警报和审计目的
当从磁盘读取非常敏感的文件时,如何设置立即警报?
答案1
这可以通过使用以下两个工具来实现:
- 审计监视文件(更确切地说,告诉内核监视文件的 inode)并将所有读取事件记录到
/var/log/audit/audit.log
- 瓦祖赫(或 ossec)监控
audit.log
文件并在适当的时候发送电子邮件警报
先决条件
首先,安装 auditd。
sudo apt-get install auditd
下一个,安装 wazuh。如果你以前从未这样做过,而且只有一台服务器,你可能想要一体化安装。
sudo apt-get install wazuh-manager
审计配置
为了监视文件/etc/ssl/private/super-secret.key
,请添加一个 auditd 规则来监视 ( -w
) 文件的读取访问权限 ( -p r
) - 并为该规则指定一个任意的“键”名称 ( -k audit-wazuh-private-key-r
),以便我们稍后可以对其进行匹配。
cat > /etc/audit/rules.d/watch_private_keys.rules <<'EOF'
# monitor reads of our private keys for wazuh
-w /etc/ssl/private/super-secret.key -p r -k audit-wazuh-private-key-r
EOF
重新启动 auditd 以应用规则
systemctl restart auditd
auditctl -l
wazuh 配置
将以下几行添加到您的 wazuh 主配置文件(/var/ossec/etc/ossec.conf
)以启用对 auditd 日志文件的监控
<localfile>
<location>/var/log/audit/audit.log</location>
<log_format>audit</log_format>
</localfile>
将我们上述规则的“键”名称添加到 wazuh 监控的 auditd 键列表中
grep 'audit-wazuh-private-key-r:read' /var/ossec/etc/lists/audit-keys || echo 'audit-wazuh-private-key-r:read' >> /var/ossec/etc/lists/audit-keys
将以下几行添加到您的 wazuh 本地规则文件 ( /var/ossec/etc/rules/local_rules.xml
) 中,以告诉 wazuh 此事件是级别 12 =“高度重要事件”,并且它应该触发电子邮件警报
<rule id="100002" level="12">
<if_sid>80700</if_sid>
<match>audit-wazuh-private-key-r</match>
<options>alert_by_email</options>
<description>Audit: Watch - Private Key Read</description>
</rule>
重启 wazuh
systemctl restart wazuh
现在,任何尝试读取/etc/ssl/private/super-secret.key
文件内容的行为都会向您发送电子邮件警报。