Apache Web 服务器安全和优化技巧
-
05-07-2019 - |
题
我即将管理和运行我的第一个连接互联网的 Apache Web 服务器,我想知道是否有系统管理员和开发人员愿意分享一些有关运行 Apache Web 服务器的安全性和优化技巧的知识。
也许您可以分享您在安装 Apache Web 服务器(在 Linux 机器上)后立即执行的前五项(或十项)操作。
非常感谢任何帮助。
解决方案
基本
- 请务必安装最新的稳定版。运行旧的或不稳定的Apache版本可能会使您的系统面临安全漏洞或未经测试的解决方案
- 确保仅实际处理了预期的请求。您应该考虑谁必须访问Apache公开的Web资源和如何。
- 避免以root身份运行Apache 。这是必须的。
- 处理日志。日志往往越来越大;考虑设置logrotate或定期清理日志。
- 使用监控系统监控Apache运行状况。我喜欢将munin和monit结合起来,既易于塞通又能维持。 Nagios和其他人值得一看。
- 如果Apache正在提供Web应用程序(即PHP,Perl,Rails)请确保正确的模块按正确的顺序处理请求。
- 撰写精彩的404和500邮件。您的访客迟早会发现错误。
- 停止并重新启动Apache ,这样您就可以确定shoutdown和启动过程都是完美无缺的。
- 使用 mod_security 醇>
- 保护Apache免受DOS攻击。
- 仅加载真正需要的模块。
- 监控您的日志以确定是否发生了奇怪的事情。 醇>
- 如果您是从源代码编译Apache,请务必使用MPM(多处理模块)。
- 仅加载真正需要的模块。
- 检查MaxClients设置,以便您的服务器不会产生这么多孩子,它开始交换。
- 使用mod_deflate模块,它提供DEFLATE输出过滤器,允许服务器的输出在通过网络发送到客户端之前进行压缩。 醇>
安全
效果
其他提示
- 确保 Apache 进程没有以 root 身份运行。
- 确保使用最新的稳定版本
- 如果盒子是 直接连接到互联网 确保您已经考虑了所有 其他服务,如 SSH。
- 仔细检查您的本地防火墙规则,将其收紧。(参见 iptables)
- 不要打开您不理解或不打算使用的选项
- 考虑订阅 Apache 安全邮件列表,这样您就可以立即了解任何关键补丁
- Chroot 网络服务器
- 禁用您不需要的任何模块
- 您需要的是 mod_security
- 为您的webroot设置文件完整性检查程序
- 保护同一服务器上的所有其他内容并关闭所有未使用的内容
- 使用 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(拒绝服务)攻击。
不隶属于 StackOverflow