超越基础
MariaDB / MySQL 安全的第一回合涵盖了基础内容:强密码、最小权限用户、启用 TLS、配置防火墙。第二回合深入高级加固领域 — 这些技术很少有 DBA 会实施,但在面对有决心的攻击者时却能发挥关键作用。
init_file:静默脚本
init_file 变量允许指定一个在服务器启动时自动执行的 SQL 文件。它可以锁定默认账户、撤销过多的权限、删除测试数据库并启用审计。即使攻击者在入侵期间修改了数据库,重启也会恢复安全配置。
LUKS:文件系统加密
LUKS 对整个文件系统进行加密,包括日志、临时文件和配置。LUKS 密钥绝不能存储在同一磁盘上 — 应使用 TPM、USB 令牌或外部密钥管理服务。
systemd:defaults-file 和 PrivateMounts
systemd 单元文件可以通过以下方式进行加固:--defaults-file(防止恶意配置文件)、PrivateMounts=yes(命名空间隔离)、ProtectHome=yes、ProtectSystem=strict、NoNewPrivileges=yes 和 PrivateTmp=yes。
chattr:不可变性
+i 属性阻止文件被修改,即使是 root 用户也不行。拥有 root 权限的攻击者在不先移除该属性的情况下无法修改 MariaDB 配置 — 而移除操作会留下审计痕迹。
SELinux:自定义策略
自定义 SELinux 策略将 MariaDB 限制为对配置文件的只读访问。即使 MariaDB 进程被入侵,SELinux 也会在内核层面阻止配置修改。
分层防御
| 层级 | 防护 | 针对 |
|---|---|---|
| init_file | 自动恢复 | 运行时配置更改 |
| LUKS | 静态加密 | 物理磁盘被盗 |
| systemd 命名空间 | 进程隔离 | 权限提升 |
| chattr +i | 配置不可变性 | 已被入侵的 root |
| SELinux | 强制访问控制 | MariaDB 进程被利用 |
总结
MariaDB 的高级加固需要时间和专业知识。每一层都使攻击变得更困难、更缓慢、更容易被检测。安全是一个光谱 — 目标是让攻击的代价足够高,使攻击者转向更容易的目标。
本文最初发表于 Medium。
评论 (0)
暂无评论。
发表评论