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

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

非常感谢任何帮助。

有帮助吗?

解决方案

基本

  1. 请务必安装最新的稳定版。运行旧的或不稳定的Apache版本可能会使您的系统面临安全漏洞或未经测试的解决方案
  2. 确保仅实际处理了预期的请求。您应该考虑必须访问Apache公开的Web资源和如何
  3. 避免以root身份运行Apache 。这是必须的。
  4. 处理日志。日志往往越来越大;考虑设置logrotate或定期清理日志。
  5. 使用监控系统监控Apache运行状况。我喜欢将munin和monit结合起来,既易于塞通又能维持。 Nagios和其他人值得一看。
  6. 如果Apache正在提供Web应用程序(即PHP,Perl,Rails)请确保正确的模块按正确的顺序处理请求
  7. 撰写精彩的404和500邮件。您的访客迟早会发现错误。
  8. 停止并重新启动Apache ,这样您就可以确定shoutdown和启动过程都是完美无缺的。
  9. 使用 mod_security
  10. 安全

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

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

其他提示

  • 确保 Apache 进程没有以 root 身份运行。
  • 确保使用最新的稳定版本
  • 如果盒子是 直接连接到互联网 确保您已经考虑了所有 其他服务,如 SSH。
  • 仔细检查您的本地防火墙规则,将其收紧。(参见 iptables)
  • 不要打开您不理解或不打算使用的选项
  • 考虑订阅 Apache 安全邮件列表,这样您就可以立即了解任何关键补丁
  1. Chroot 网络服务器
  2. 禁用您不需要的任何模块
  3. 您需要的是 mod_security
  4. 为您的webroot设置文件完整性检查程序
  5. 保护同一服务器上的所有其他内容并关闭所有未使用的内容
  6. 使用 nmap Metasploit

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

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

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

如果您正在运行标准LAMP(Linux,Apache,MySQL,PHP / PEARL / PYTHON)环境:将MySQL放在除Apache之外的其他计算机上。只有少数并发进程(由于网络延迟)会稍慢一些,但是对于许多并发进程来说会更快。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top