Apache Webserver安全和优化技巧

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

也许你可以在安装Apache web服务器之后(在Linux机器上)分享你的前五(或十)个你立即做的事情列表。

任何帮助非常感谢。

基本

  1. 一定要安装最新的稳定版本 。 运行旧的或不稳定版本的Apache可能会使系统暴露于安全漏洞或未经测试的解决方案
  2. 确保只有预期的请求被实际处理 。 您应该考虑必须访问Apache公开的Web资源以及如何访问
  3. 避免以root身份运行Apache 。 这是必须的。
  4. 处理你的日志 。 原木往往越来越大, 考虑设置logrotate或定期清理您的日志。
  5. 使用监控系统监控Apache的健康状况 。 我喜欢结合慕尼黑和monit,既容易setuo和维护。 Nagios和其他人值得一看。
  6. 如果Apache正在为Web应用程序(即PHP,Perl,Rails) 提供服务,请确保这些请求由正确的模块以正确的顺序处理
  7. 写一个不错的404和500消息 。 你的访问者迟早会遇到一个错误。
  8. 停止并重新启动Apache ,所以你可以确保shoutdown和启动程序正在工作无懈可击。
  9. 使用mod_security

安全

  1. 保护Apache对DOS。
  2. 仅加载真正需要的模块。
  3. 监视你的日志,找出是否有什么奇怪的事情发生。

性能

  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之后”解释为“为生产使用准备一个新的服务器安装”,因为这当然都是在开发服务器上完成的,并且承诺供应链管理或者内置到自动安装中。

你所做的一切优化必须根据实际的测量来完成。 尽可能真实地建立一个你想要运行的实际应用程序的测试环境。 有几点要考虑的是:

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

如果你正在运行一个标准的LAMP(Linux,Apache,MySQL,PHP / PEARL / PYTHON)环境:把MySQL放在另一台不是Apache的机器上。 只有少数几个并发进程(由于网络延迟)会稍微慢一些,但是对于许多并发进程,速度会更快。

确保你已经配置它来检测DOS(拒绝服务)攻击。