【问题标题】:Apache Webserver security and optimization tipsApache Webserver 安全和优化技巧
【发布时间】:2008-10-05 00:19:23
【问题描述】:

我即将管理和运行我的第一个 Internet 连接的 Apache 网络服务器,我想知道是否有任何系统管理员和开发人员愿意分享他们关于运行 Apache 的安全和优化技巧的一些知识网络服务器。

也许您可以分享您在安装 Apache 网络服务器(在 Linux 机器上)后立即执行的前五(或十)项事情。

非常感谢任何帮助。

【问题讨论】:

    标签: apache security optimization webserver


    【解决方案1】:

    基本

    1. 请务必安装最新的稳定版本。运行旧版本或不稳定版本的 Apache 可能会使您的系统面临安全漏洞或未经测试的解决方案
    2. 确保只处理预期的请求。您应该考虑必须访问 Apache 公开的网络资源以及如何
    3. 避免以 root 身份运行 Apache。这是必须的。
    4. 处理您的日志。原木趋于变得越来越大;考虑设置 logrotate 或定期清理日志。
    5. 使用监控系统监控 Apache 运行状况。我喜欢将 munin 和 monit 结合起来,既易于设置又易于维护。 Nagios 和其他人值得一看。
    6. 如果 Apache 服务于 Web 应用程序(即 PHP、Perl、Rails)请确保请求由正确的模块以正确的顺序处理
    7. 写一个漂亮的 404 和 500 消息。您的访问者迟早会发现错误。
    8. 停止并重新启动 Apache,因此您可以确保喊叫和启动过程都正常运行。
    9. 使用 mod_security

    安全

    1. 保护 Apache 免受 DOS 攻击。
    2. 只加载真正需要的模块。
    3. 监控您的日志以确定是否发生了奇怪的事情。

    性能

    1. 如果您从源代码编译 Apache,请务必使用 MPM(多处理模块)。
    2. 只加载真正需要的模块。
    3. 检查 MaxClients 设置,这样您的服务器就不会产生太多的子节点而开始交换。
    4. 使用 mod_deflate 模块,它提供了 DEFLATE 输出过滤器,允许您的服务器的输出在通过网络发送到客户端之前进行压缩。

    【讨论】:

    • 在安全部分,您​​提供了三个很好的提示。但是,您有详细说明这些主题的链接吗?
    • 我对数字 6 很好奇。“正确的顺序”是什么意思?刚看到这个帖子的年龄。我正在失去它。
    【解决方案2】:
    • 确保 Apache 进程没有以 root 身份运行。
    • 确保使用最新的稳定版本
    • 如果盒子是 直接连接到互联网 确保你已经考虑了所有 其他服务,例如 ssh。
    • 仔细检查您的本地防火墙规则,将其收紧。 (参见 iptables)
    • 不要打开您不理解或不打算使用的选项
    • 考虑订阅 Apache 安全邮件列表,以便您立即了解任何关键补丁

    【讨论】:

      【解决方案3】:
      1. Chroot 网络服务器
      2. 禁用您不需要的任何模块
      3. 您需要的是mod_security
      4. 为您的 webroot 设置 file integrity checker
      5. 保护同一服务器上的所有其他内容并关闭所有未使用的内容
      6. 使用nmapMetasploit 等工具对您的服务器运行测试

      【讨论】:

        【解决方案4】:

        我将“在机器上安装 Apache 之后”解释为“准备新的服务器安装以供生产使用”,因为当然这一切都将在开发服务器上完成并提交给 SCM 或内置到自动化安装。

        您为优化所做的一切都必须基于实际测量结果。尽可能真实地使用您打算运行的实际应用程序设置测试环境。需要考虑的几点是:

        • 不要将 MaxClients 设置得太高。您可能会占用大量 RAM,特别是对于其中嵌入了大型应用程序(例如 mod_perl、PHP 等)的 prefork 服务器。使用过多的内存会适得其反。客户最好等待服务成功,而不是服务错误。
        • 仔细考虑是否开启了 Keepalives。这些可以根据您的环境加速和减速。如果您选择启用它们,则应根据实际用例考虑您的 keepalive 超时时间。
        • 如果您在生产中使用 HTTPS,请在启用 HTTPS 的情况下进行性能测试
        • 在不经常更改的对象上适当设置“Last-modified”和“Expires”标头(以最大化客户端缓存)。在各种浏览器中测试客户端缓存。
        • 确保您的应用程序正确使用 HTTPS,而不是导致浏览器生成安全警告(这是您在测试期间需要使用 HTTPS 的另一个好理由)

        【讨论】:

          【解决方案5】:

          如果您运行的是标准 LAMP(Linux、Apache、MySQL、PHP/PEARL/PYTHON)环境:将 MySQL 放在 Apache 以外的另一台机器上。只有少数并发进程会慢一点(由于网络延迟),但如果有很多并发进程会快得多。

          【讨论】:

            【解决方案6】:

            确保您已将其配置为检测 DOS(拒绝服务)攻击。

            【讨论】:

              猜你喜欢
              • 2010-11-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-04-30
              • 2012-08-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多