5.6. Bugzilla 安全性

Warning

配置不当的 MySQL 和 Bugzilla 安装过去曾导致攻击者完全访问系统。即使对于隐藏在防火墙后面的 Bugzilla 机器,也请认真对待这些指南。所有计算机入侵者中有 80% 是内部人员,而不是匿名破解者。

Note

由于 Bugzilla 运行在如此多的不同平台上,因此这些说明必然有些模糊。如果您对这些方向有改进意见,请向 Bugzilla 提交错误报告。

Warning

这并非旨在成为关于本节中提到的工具的每个可能安全问题的完整列表。没有什么可以替代阅读您系统上运行的任何软件的作者编写的信息。

5.6.1. TCP/IP 端口

TCP/IP 定义了大约 65,000 个端口用于通信。在这些端口中,Bugzilla 只需要 1 个... 如果您需要使用需要电子邮件的功能,例如错误移动或来自 contrib 的电子邮件界面,则需要 2 个。您应该审核您的服务器,并确保您没有监听任何您不需要监听的端口。您可能还希望使用某种防火墙软件来确保流量只能在您指定的端口上接收。

5.6.2. MySQL

MySQL 默认情况下附带许多应更改的设置。默认情况下,它允许任何人从 localhost 连接而无需密码并具有完全管理功能。它还默认为没有 root 密码(这与系统 root 不是同一回事)。此外,许多安装默认以系统 root 身份运行 mysqld

  1. 请确保您运行的是 MySQL 至少 3.22.32 版本,因为早期版本存在明显的安全漏洞。

  2. 请查阅系统附带的文档,以获取有关使 mysqld 以非特权用户身份运行的信息。

  3. 您还应该确保禁用匿名用户帐户并为 root 用户设置密码。这可以使用以下命令完成

    bash$ mysql mysql
    mysql> DELETE FROM user WHERE user = '';
    mysql> UPDATE user SET password = password('new_password') WHERE user = 'root';
    mysql> FLUSH PRIVILEGES;
              

    从现在开始,您将需要使用 mysql -u root -p 并输入new_password在提示时使用 mysql 客户端。

  4. 如果您在与 httpd 服务器相同的机器上运行 MySQL,则应考虑通过将以下内容添加到您的/etc/my.conf:

    [myslqd]
    # Prevent network access to MySQL.
    skip-networking
              
  5. 来禁用 MySQL 中的网络功能。您还可以考虑在 chroot jail 中运行 MySQL,甚至运行所有 Bugzilla;但是,有关执行此操作的说明超出了本文档的范围。

5.6.3. 守护进程帐户

许多守护进程,例如 Apache 的 httpd 和 MySQL 的 mysqld,默认以 "root""nobody" 身份运行。以 "root" 身份运行会引入明显的安全问题,但是以 "nobody" 身份运行所有内容所引入的问题可能不那么明显。基本上,如果您以 "nobody" 身份运行每个守护进程,并且其中一个被破坏,则所有守护进程都会被破坏。因此,建议您为每个守护进程创建一个用户帐户。

Note

您将需要在webservergroup中将localconfig设置为您为 Web 服务器创建的组,以便以该组身份运行。这将允许 ./checksetup.pl 更好地调整 Bugzilla 安装上的文件权限,从而无需使任何内容都可全局写入。

5.6.4. Web 服务器访问控制

Bugzilla 目录区域中放置了许多不应从 Web 访问的文件。由于 Bugzilla 当前的布局方式,应访问和不应访问的文件列表相当复杂。目前正在开发一种新的安装方法,该方法应通过允许将不应从 Web 访问的文件放置在 Webroot 之外的目录中来解决此问题。有关更多信息,请参见 bug 44659

Tip

Bugzilla 附带生成.htaccess文件的功能,这些文件指示 Apache 哪些文件应该以及不应该可访问。

您应该进行测试以确保上述文件无法从 Internet 访问,尤其是您的localconfig包含数据库密码的文件。要进行测试,只需将 Web 浏览器指向该文件即可;例如,要测试 mozilla.org 的安装,我们将尝试访问 http://bugzilla.mozilla.org/localconfig。您应该收到 403 Forbidden 错误。

Caution

不遵循本节中的说明(包括测试)可能会导致敏感信息在全球范围内可访问。