5

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

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

非常感谢任何帮助。

4

6 回答 6

9

基本的

  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,因此您可以确保喊叫和启动过程都正常工作。
  9. 使用mod_security

安全

  1. 保护 Apache 免受 DOS 攻击。
  2. 仅加载真正需要的模块。
  3. 监控你的日志,看看是否发生了奇怪的事情。

表现

  1. 如果您从源代码编译 Apache,请务必使用 MPM(多处理模块)。
  2. 仅加载真正需要的模块。
  3. 检查 MaxClients 设置,这样您的服务器就不会产生太多它开始交换的子节点。
  4. 使用 mod_deflate 模块,它提供了 DEFLATE 输出过滤器,允许您的服务器的输出在通过网络发送到客户端之前被压缩。
于 2008-10-05T00:32:36.123 回答
3
  • 确保 Apache 进程没有以 root 身份运行。
  • 确保使用最新的稳定版本
  • 如果盒子直接连接到互联网,请确保您考虑过所有其他服务,例如 ssh。
  • 仔细检查您的本地防火墙规则,将其收紧。(见 iptables)
  • 不要打开您不理解或不打算使用的选项
  • 考虑订阅 Apache 安全邮件列表,以便您立即了解任何关键补丁
于 2008-10-05T00:21:11.170 回答
3
  1. chroot网络服务器
  2. 禁用您不需要的任何模块
  3. 您需要的是mod_security
  4. 为您的 webroot设置文件完整性检查器
  5. 保护同一台服务器上的所有其他内容并关闭任何未使用的内容
  6. 使用nmapMetasploit等工具对您的服务器运行测试
于 2008-10-05T02:48:23.103 回答
1

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

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

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

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

于 2008-10-05T00:25:08.010 回答
0

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

于 2008-10-05T00:31:14.567 回答