我正在设置一个带有共享 webhhosts 的 Debian 盒子。这些用户没有 ssh 权限,只有 ftp 权限。允许用户使用 PHP,我suphp
为此进行了设置,以便 php 进程在他们自己的用户帐户下运行,等等。
我有点担心系统文件的安全,尤其是/etc
文件夹。我注意到该目录中的大多数文件都具有以下权限:
drwxr-xr-x 2 root root 4096 Mar 4 20:00 pam.d
-rw-r--r-- 1 root root 1358 Mar 5 00:48 passwd
-rw------- 1 root root 1358 Mar 5 00:48 passwd-
drwxr-xr-x 2 root root 4096 Feb 18 14:22 pear
drwxr-xr-x 4 root root 4096 Apr 29 2010 perl
drwxr-xr-x 6 root root 4096 Feb 18 14:22 php5
drwxr-xr-x 2 root root 4096 Mar 4 17:42 phpmyadmin
debian 标准赋予文件的读取权限是否/etc
真的需要?我可以为这些文件提供的最佳掩码是什么?其中是否有任何文件/etc
应该是世界可读的?
答案1
默认权限很好,而且是必需的。例如,如果您没有使 passwd 保持可读状态,则许多与用户相关的功能将停止工作。 /etc/shadow 等文件不应该(也不是)全世界可读。
相信操作系统能够正确执行此操作,除非您知道很好操作系统是错误的。
答案2
几乎所有配置文件都需要是全世界可读的,否则您如何期望您的应用程序读取它们?
如果您真的那么偏执,您可以为每个应用程序创建一个组,将所需的用户放入其中,并更改组所有者和相关配置文件的权限。但我认为这弊大于利。
我能想到的唯一没有世界可读权限的重要文件是 /etc/shadow,如其他评论中所述。
如果你想要一个安全的 Debian 盒子,我建议保护 Debian 指南它有点旧,但它提供了一个很好的概述。
还有硬化包这会创建一些有趣的依赖项并禁止安装已知的易受攻击的软件包。
答案3
一切都很好除了目录phpmyadmin
。请务必小心保护文件,以免 mysql 密码泄露。
答案4
让我们退后一步:如果这些用户只需要访问他们的主目录,大多数 FTP 服务器都有一些配置设置仅有的允许访问该目录,而不是其他目录(最常见的是使用 chroot)。
例如,在 ProFTPd 中,它是 DefaultRoot 指令:
<VirtualHost myhost.example.com>
DefaultRoot ~
</VirtualHost>