Jes*_*erB 11 security ubuntu php shared-hosting apache-2.2
我正在设置一个 Web 服务器,它将托管许多不同的网站作为 Apache VirtualHosts,每个网站都可以运行脚本(主要是 PHP,可能还有其他)。
我的问题是如何将这些 VirtualHosts 与彼此以及系统的其余部分隔离开来?我不希望网站 X 读取网站 Y 的配置或任何服务器的“私有”文件。
目前,我已经按照此处所述(http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec)设置了带有 FastCGI、PHP 和 SUExec 的 VirtualHosts -easy-way.html ),但 SUExec 仅阻止用户编辑/执行除他们自己之外的文件 - 用户仍然可以读取敏感信息,例如配置文件。
我曾考虑删除服务器上所有文件的 UNIX 全局读取权限,因为这将解决上述问题,但我不确定是否可以安全地执行此操作而不会中断服务器功能。
我也研究过使用 chroot,但似乎这只能在每个服务器的基础上完成,而不能在每个虚拟主机的基础上完成。
我正在寻找任何将我的 VirtualHosts 与系统其余部分隔离的建议。
PS 我正在运行 Ubuntu 12.04 服务器
我的回答:我几乎按照我当前的配置结束,但是为所有虚拟主机做一个 chroot jail,例如在 chroot jail/var/www,然后将所有用户的数据放在子文件夹中,每个子文件夹都具有 group/others r/w/x 权限禁用。此选项是可取的,特别是因为无需对源代码进行任何修改即可实现。
我选择了@Chris 的答案,因为它写得很透彻,而且还考虑了 FTP 和 SELinux
小智 5
这可以通过启用 Apache 中的 mod_users 模块来完成。
您需要在 apache 配置中设置 UserDir。我建议您在单独的配置文件中执行此操作并将其包含在内。将包含包含在
<IfModule mod_users.c>
Include conf/extra/userdir.conf
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我可以为您提供整个教程,但这应该可以帮助您开始配置 Apache: http: //www.techytalk.info/enable-userdir-apache-module-ubuntu-debian-based-linux-distributions/
提示如果您正在运行 SELinux(并且您应该),则必须授予 Apache 对用户主目录的读取权限。您可以通过设置来做到这一点:
sudo setsebool -P httpd_enable_homedirs=On
Run Code Online (Sandbox Code Playgroud)
它还需要用户目录 public_html 目录的文件权限和父目录(直至 root)的 rx 权限。
显然,您需要为用户设置 chroot,例如在 vsftpd 中。安装:
apt-get vsftpd
Run Code Online (Sandbox Code Playgroud)
要配置 chroot,请使用 vi 或 nano 打开 /etc/vsftpd/vsftpd.conf。查找并取消注释或添加:chroot_local_user=yes
您可以通过 FTP 获得我推荐的 sftp 相同的行为,打开 /etc/ssh/sshd_config 并添加 Match 块和这一行:
Subsystem sftp internal-sftp
Match Group web_users
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Match
Run Code Online (Sandbox Code Playgroud)
这将 chroot web_users 组中的任何用户。此外,您还需要通过将其设置为 /sbin/nologin 来拒绝对 shell 的访问:
useradd -G "web_users" -s /sbin/nologin new_user
Run Code Online (Sandbox Code Playgroud)
如果这是一个公共生产服务器,我还强烈建议您对操作系统、OpenSSH、Apache、PHP、vsftpd 进行一些强化,并应用一些严格的 iptables 和 TCP 包装器。我建议您也保留 SELinux。
| 归档时间: |
|
| 查看次数: |
18527 次 |
| 最近记录: |