假设每个用户都可以使用 SSH 访问,有哪些方法可以保证共享 LAMP 服务器的安全?
编辑:我主要考虑保护服务器免受用户本身和他们之间的影响。
假设每个用户都可以使用 SSH 访问,有哪些方法可以保证共享 LAMP 服务器的安全?
编辑:我主要考虑保护服务器免受用户本身和他们之间的影响。
这可能是不可能的,但您可以让攻击者更难成功。
加强你的防御:
安全强化系统(可能参考以下清单之一)
http://iase.disa.mil/stigs/checklist/(查找 UNIX 安全检查表)
https://benchmarks.cisecurity.org/en-us/?route=downloads.multiform
添加:
此处描述了上述工具的一个不错的比较: http ://www.lifelinux.com/selinux-vs-apparmor-vs-grsecurity-345.html
及时了解安全补丁。
获得可见性:
部署 HIDS(例如OSSEC)来帮助您检测用户何时表现不佳。
以上这些都需要不断的努力。那就是安全。
在我看来,首先要做的是将 ssh 端口更改为非标准端口并安装类似 fail2ban 的东西。
调整防火墙以阻止从外部访问未使用的端口也可能很有用(可能只允许 80、423、25 和 ssh ......这取决于)
除了其他答案:
由网络服务器执行的程序(cgi、php 等)的权限是一个问题:
如果它们以网络服务器的权限运行,恶意用户可以访问其他用户提供的文件。我在这里考虑带有数据库凭据的配置文件。
如果这些程序在个人用户的许可下运行,他们可以自己修改程序文件。这可能更容易利用应用程序中的安全问题,例如 .php 脚本在保存文件时可能无法正确验证文件名。并且用户需要对web目录有写权限,所以php程序在那里也有写权限。
SourceForge发布了一个 apache 模块和一个 fuse 文件系统,允许更细粒度的权限:
权限位在“rwx”(读/写/执行)集的标准三重奏中,但普通的“用户”(所有者)、“组”和“其他”类别被“项目成员”三重奏取代, “项目启动的 apache 访问”和“每个人”。
基本上没有什么可以真正使事情变得安全,因为诸如 wordpress 之类的东西总是以巨大的安全问题告终,以及 PHP 本身等。
唯一确定的方法(我认为)是在单独的虚拟机中运行每个站点。这(几乎)将一个站点与另一个站点完全隔离,但它当然有必须管理每个 VM 的开销、更多的内存使用、更多的 CPU 周期等。
哦,每个虚拟机都需要不断地修补所有软件。
这当然值得考虑,因为它比试图控制所有这些站点要安全得多。