5.1. 如何以非特权用户身份运行 Caudium;如何保护 Caudium 的安全

Web 服务器通常是公开访问的,代表您的公司、团体或实体,因此您可能希望加强此服务的安全性。

正如我已经提到的,Caudium 对于公开访问具有良好的安全性,这主要归功于其脚本语言编写。然而,Caudium 默认以 root 用户身份运行。如果未经授权的用户获得对 Caudium 进程的访问权限,他可能会获得 root 权限。因此,许多 Web 服务器以具有最低权限的其他用户身份运行。这样做可能需要一些工作,因为您必须更改 Caudium 需要访问的所有文件的所有者,所以我将提供逐步说明,介绍如何更改这些权限

  1. 找到一个合适的用户名。此用户名应为具有最低权限的普通用户。许多发行版已经为此设置了专用帐户。常用名称包括 "www""www-data""httpd""nobody" (在 Debian GNU/Linux 上,Caudium 默认以 www-data:www-data 身份运行)。我们不推荐使用 "nobody";引用 Theo de Raadt 的话:

    用户 "nobody" 历史上做了太多的事情。如果您可以入侵用户 "nobody",您可能会造成巨大的损害。

  2. 更改 Caudium 需要写入的文件的所有者。这些文件包括

    在 Caudium 源代码安装中,以下命令应该可以完成这项工作

    
    # chown -R  www-data.www-data logs/ var/ 
    argument_cache/ bgcache/ configurations/ server/*.pem server
           

    这是结果

    
    $ ls -l 
    total 32
    drwxr-sr-x    6 www-data www-data     4096 Feb 13 23:17 argument_cache
    drwxr-sr-x    2 www-data www-data     4096 Feb 19 09:27 bgcache
    drwxr-sr-x    2 www-data www-data     4096 Mar  4 22:28 configurations
    drwxr-sr-x    4 root     staff        4096 Feb 13 23:16 local
    drwxr-sr-x    7 www-data www-data     4096 Mar  3 11:50 logs
    drwxr-sr-x    2 root     staff        4096 Feb 13 23:16 readme
    drwxr-sr-x   19 www-data www-data     4096 Feb 19 20:13 server
    drwxr-sr-x    2 www-data www-data     4096 Mar  3 19:28 var
    
    $ id www-data
    uid=33(www-data) gid=33(www-data) groups=33(www-data)
           

    如果允许用户登录服务器,您可能还需要更改 logs 目录的权限。

    如果您有适用于您系统的 Caudium 特定发行版(例如 Debian GNU/Linux),请手动检查。

  3. 不要忘记更改您创建的任何脚本/目录的权限,Caudium 需要在您的公共文件系统中写入这些脚本/目录。

  4. 登录 CIF.,进入主全局变量选项卡,然后在更改 uid 和 gid中输入您选择的 uid:gid 数据。我们在我们的示例中输入了33:33。您也可以输入登录名和组名www-data:www-data您还可以启用永久更改 uid 和 gid

选项,但请务必先阅读文档。

  1. 我现在将谈论如果您对安全性要求非常严格,可以采取的一般安全措施。

    不允许用户执行属于服务器一部分的脚本。

    由于 Caudium 是单进程服务器,因此可以使用用户脚本停止、重启、访问等。这包括 Pike 脚本、Pike 标签和 Caudium 的 PHP 模块。

    Note

    如果您确实想让用户运行脚本,您可以始终使用 CGI,或者更好的 uniscript(在这种情况下,它对用户是透明的),以便使用 fork(2) 系统调用在单独的进程中运行脚本。这将降低 Caudium 的性能,但安全是有代价的,这取决于您决定付出多少代价。

  2. Uniscript 是一个类似 CGI 的包装器。它会像执行 CGI 脚本一样执行程序,但与 CGI 不同,它不要求您将这些程序放在特定的目录下,例如 /cgi-bin/。例如,每个用户都可以在自己的目录中拥有自己的 CGI 脚本。此外,Caudium 可以使用所有者的 uid 执行它们。

  3. 不要使用任何您不需要的东西。删除虚拟服务器中任何您不需要的模块。

  4. 物理限制对 CIF. 的访问。如果可能,请勿从 Internet 访问它。很少有人知道这一点,但现在可以通过中间人攻击以明文形式查看 SSL 连接。dsniff 软件包含所有工具和对此的解释。

    关闭任何特定于模块的调试选项。这些选项是为开发人员准备的,他们在调试输出时没有考虑到安全性。
     

    实际上,这是通过混淆来提高安全性,并不会真正增加服务器的安全性。

     
    --Grendel 

  5. 将 Caudium 的日志文件输出到单独的分区。/var是一个不错的选择。

  6. 检查 Caudium 网站以获取补丁。

  7. 如果您的工作依赖于 Web 服务器的安全性,请检查 Caudium 源代码。