文章摘要
文章探讨了ISO 27001标准对日志保护的要求,强调日志必须防止篡改和未经授权的访问。作者指出,攻击者一旦获得root权限,通常会篡改日志以掩盖行踪,因此日志的不可变性至关重要。作者在研究OpenBSD内核代码时发现了SFAPPEND和SFIMMUTABLE标志,认为这些标志可能为日志保护提供解决方案。
文章总结
文章总结
标题: 当 Root 遇到不可变性:OpenBSD chflags 与日志篡改
发布时间: 2025年7月15日
主要内容:
ISO 27001 对不可变日志的需求:
- ISO 27001 标准要求日志信息及其设施必须防止篡改和未经授权的访问,但并未明确说明如何实现。文章指出,不可变日志在安全事件调查中至关重要,尤其是当攻击者获得 root 权限时,不可变日志能够确保日志的完整性。
OpenBSD 的默认日志配置:
- OpenBSD 的默认日志配置简单有效,系统日志按类别分别存储在不同的文件中,如
/var/log/messages、/var/log/authlog等。日志每小时通过newsyslog自动轮换,但这也为攻击者提供了篡改日志的机会。
- OpenBSD 的默认日志配置简单有效,系统日志按类别分别存储在不同的文件中,如
chflags 命令与系统级不可变性:
- OpenBSD 的
chflags命令允许设置文件属性,特别是sappnd(仅追加)和schg(不可变)标志。这些标志可以防止日志文件被修改或删除,即使 root 用户也无法轻易更改这些标志,除非系统处于不安全模式。
- OpenBSD 的
完整的不可变日志实现:
- 文章详细介绍了如何通过禁用
newsyslog的自动轮换、创建日志归档目录、设置sappnd标志保护活动日志文件,以及编写/etc/rc.securelevel脚本来自动管理日志轮换和不可变标志的步骤。这种设置确保了日志在系统正常运行期间无法被篡改,满足了 ISO 27001 的要求。
- 文章详细介绍了如何通过禁用
总结:
- 通过利用 OpenBSD 的内置安全特性,特别是
chflags命令,可以实现文件系统级别的日志保护,无需额外的软件或网络依赖。这种方法不仅满足了 ISO 27001 的要求,还增强了系统的安全性。
- 通过利用 OpenBSD 的内置安全特性,特别是
图片标记: 无
参考: 文章最后感谢了 BSDNow 播客,并提到 FreeBSD 可能使用 ZFS 特性提供更酷的解决方案。
评论总结
使用不可变属性保护文件
- 评论1:作者提到在Linux上使用
chattr +i命令将文件设置为不可变,以防止程序覆盖文件,例如/etc/resolv.conf。
引用: "I do use 'chattr +i' on a file... to a file that otherwise would have been overwritten."
中文: "我使用'chattr +i'命令将文件设置为不可变,以防止程序覆盖文件。"
- 评论1:作者提到在Linux上使用
不可变日志的局限性
- 评论2:质疑即使系统达到正常安全级别,攻击者仍可以通过编辑
/etc/rc.securelevel并重启来绕过不可变日志的保护。
引用: "What stops the attacker from just editing /etc/rc.securelevel and then doing a normal reboot?"
中文: "攻击者只需编辑/etc/rc.securelevel并正常重启,就能绕过不可变日志的保护。" - 评论6:指出即使有不可变标志,拥有root权限的攻击者仍可以通过破坏整个系统来掩盖痕迹。
引用: "Even with immutable flags there are various ways an attacker with root access could... cover their tracks by trashing the whole system."
中文: "即使有不可变标志,拥有root权限的攻击者仍可以通过破坏整个系统来掩盖痕迹。"
- 评论2:质疑即使系统达到正常安全级别,攻击者仍可以通过编辑
日志应存储在外部服务器
- 评论4:建议将日志存储在外部日志服务器上,并对其进行适当的防火墙保护,以防止被攻击者利用。
引用: "If you want immutable logs, you log to an external log server... That log server is properly firewalled/hardened."
中文: "如果你想要不可变的日志,应将日志存储在外部日志服务器上,并对其进行适当的防火墙保护。" - 评论7:强调防止日志篡改的实际解决方案是将日志转移到不同的安全域,如无法访问的日志服务器。
引用: "The actual answer for log tampering is 'get them off the box in to a different security domain'."
中文: "防止日志篡改的实际解决方案是将日志转移到不同的安全域。"
- 评论4:建议将日志存储在外部日志服务器上,并对其进行适当的防火墙保护,以防止被攻击者利用。
macOS的不可变属性
- 评论8:提到macOS长期以来一直有
chflags属性,即使在系统完整性保护之前,更改或删除系统不可变/仅追加标志需要进入单用户模式。
引用: "macOS has always had these chflags attributes... Changing or removing the system-immutable/append-only flags required booting into single user mode."
中文: "macOS长期以来一直有chflags属性,更改或删除系统不可变/仅追加标志需要进入单用户模式。"
- 评论8:提到macOS长期以来一直有
总结:评论中讨论了使用不可变属性保护文件的实践,但也指出其局限性,特别是在面对拥有root权限的攻击者时。多数评论认为,将日志存储在外部服务器是更有效的解决方案,以防止日志被篡改。此外,macOS的不可变属性也被提及,展示了其在系统保护中的应用。