受有关 MySQL 服务器安全最佳实践的问题的启发,我一直在浏览此列表(做了一些小改动)以正确保护我的服务器数据库服务器:
http://www.greensql.net/publications/mysql-security-best-practices
在第 10 步,系统提示我使用 chroot 更改 mysql 用户的根目录,但提供的细节很少,我不知道从哪里开始。有谁知道有什么好的资源可以指导我正确创建 Ubuntu 10.10 的 chrooted 环境吗?
答案1
在 chroot 中,为了使 MySQL 能够工作,您基本上必须重新创建一个单独的 Linux 发行版。
我将数据库(MySQL 和 PostreSQL)放入 OpenVZ 容器中 - 它是一种 chroot,但功能更多。它提供了 chroot 不提供的其他功能:资源控制、网络隔离等。主要优点是它为我做所有事情 - 我只是选择模板对于容器,运行vzctl create 101 --ostemplate ubuntu-10.10-x86_64
并且我已经准备好一个容器(一个工作的 chroot++)。
为了将容器投入生产,我必须设置本地或公共 IP 地址并增加默认资源限制。
要获得 OpenVZ,必须安装并重新启动到 OpenVZ 修补的内核,该内核在许多主要的 Linux 发行版中都有提供,但不幸的是OpenVZ 已不再作为 Ubuntu 官方软件包。它在 Debian 中受支持,并且将出现在 Debian 6.0 中。
答案2
我猜想那本指南的作者在他的大纲中曾把“Chroot jail”作为一个要点,但后来当他意识到让 MySQL 在 chroot jail 中正常工作是不是琐碎的。
基本上,chroot 监禁任何守护进程都需要设置一个环境,在该环境中,守护进程将在监禁中找到所需的所有文件系统资源,这些资源可能包括 /etc/{passwd,group}、/usr/{bin,lib}/、/var/{log,run,lib}/ 等。每个守护进程都有不同的特定需求,因此遗憾的是,没有通用的 chrooting 指南。
如果你真的想把 MySQL chroot 关起来,我发现了一个Debian/Ubuntu 特定配方至少有一位评论者声称它适用于 Debian Lenny 和 MySQL 5 等最新版本。