我应该如何构建网络服务器的用户/组/权限?

我应该如何构建网络服务器的用户/组/权限?

我应该如何在运行 FTP + Nginx 的专用服务器上以最安全的方式设置权限?我希望 FTP 能够读取/写入文件,并且我希望 Nginx 能够读取/写入相同的文件。我是否应该在 ProFTPd 中设置用户掩码以作为 nginx 用户写入文件?

假设目录的权限为 700,文件的权限为 600,则需要假设它们归 nginx 用户和组所有?

任何信息均感激不尽

答案1

如果您的 Web 服务器可以写入您的所有文件,那么该网站就不一定安全;任何针对 nginx、PHP(或 Rails 或任何堆栈等)或您可能正在使用的 Web 应用程序的(已知或未知)漏洞都意味着攻击者可以写入所有内容。

最安全的方法是让所有文件归 Web 服务器(以及 PHP 等)运行用户以外的用户所有,并且只使那些应用程序运行所必需的内容可写,例如用户上传目录。

例如,在我的 Web 服务器上,nginx 以用户 nginx 的身份运行,php-fpm 也以用户 nginx 的身份运行,并且除上传目录外,所有文件均归我自己的用户帐户所有,上传目录归 nginx 所有,以便我的 Web 应用程序的文件上传功能可以正常工作。

每当我使用 SFTP 时,我都会使用自己的用户帐户登录,然后su以 root 身份更改此类上传目录(例如 WordPress/wp-content/uploads目录)的所有权。大多数 Web 应用程序在安装过程中,当文件或目录需要可写时都会打印警告。

相关内容