Hacker News 中文摘要

RSS订阅

当Root遇见不可变:OpenBSD Chflags与日志篡改的较量 -- When Root Meets Immutable: OpenBSD Chflags vs. Log Tampering

文章摘要

文章探讨了ISO 27001标准对日志保护的要求,强调日志必须防止篡改和未经授权的访问。作者指出,攻击者一旦获得root权限,通常会篡改日志以掩盖行踪,因此日志的不可变性至关重要。作者在研究OpenBSD内核代码时发现了SFAPPEND和SFIMMUTABLE标志,认为这些标志可能为日志保护提供解决方案。

文章总结

文章总结

标题: 当 Root 遇到不可变性:OpenBSD chflags 与日志篡改

发布时间: 2025年7月15日

主要内容:

  1. ISO 27001 对不可变日志的需求:

    • ISO 27001 标准要求日志信息及其设施必须防止篡改和未经授权的访问,但并未明确说明如何实现。文章指出,不可变日志在安全事件调查中至关重要,尤其是当攻击者获得 root 权限时,不可变日志能够确保日志的完整性。
  2. OpenBSD 的默认日志配置:

    • OpenBSD 的默认日志配置简单有效,系统日志按类别分别存储在不同的文件中,如 /var/log/messages/var/log/authlog 等。日志每小时通过 newsyslog 自动轮换,但这也为攻击者提供了篡改日志的机会。
  3. chflags 命令与系统级不可变性:

    • OpenBSD 的 chflags 命令允许设置文件属性,特别是 sappnd(仅追加)和 schg(不可变)标志。这些标志可以防止日志文件被修改或删除,即使 root 用户也无法轻易更改这些标志,除非系统处于不安全模式。
  4. 完整的不可变日志实现:

    • 文章详细介绍了如何通过禁用 newsyslog 的自动轮换、创建日志归档目录、设置 sappnd 标志保护活动日志文件,以及编写 /etc/rc.securelevel 脚本来自动管理日志轮换和不可变标志的步骤。这种设置确保了日志在系统正常运行期间无法被篡改,满足了 ISO 27001 的要求。
  5. 总结:

    • 通过利用 OpenBSD 的内置安全特性,特别是 chflags 命令,可以实现文件系统级别的日志保护,无需额外的软件或网络依赖。这种方法不仅满足了 ISO 27001 的要求,还增强了系统的安全性。

图片标记: 无

参考: 文章最后感谢了 BSDNow 播客,并提到 FreeBSD 可能使用 ZFS 特性提供更酷的解决方案。

评论总结

  1. 使用不可变属性保护文件

    • 评论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'命令将文件设置为不可变,以防止程序覆盖文件。"
  2. 不可变日志的局限性

    • 评论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权限的攻击者仍可以通过破坏整个系统来掩盖痕迹。"
  3. 日志应存储在外部服务器

    • 评论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属性,更改或删除系统不可变/仅追加标志需要进入单用户模式。"

总结:评论中讨论了使用不可变属性保护文件的实践,但也指出其局限性,特别是在面对拥有root权限的攻击者时。多数评论认为,将日志存储在外部服务器是更有效的解决方案,以防止日志被篡改。此外,macOS的不可变属性也被提及,展示了其在系统保护中的应用。