我在 CentOS 6.5 Linux 上有一个相当简单的 apache 2.4.7 配置和一个活动的 Web 服务器。没有 PHP 或 CGI,只有一些静态页面和到不同服务器层的代理通行证。
我正在做一些安全探测,并故意以 URL 的形式发送无效数据,其中的用户名不存在。我预计会收到 405 错误。
HTTP/1.1 405 方法不允许 日期:2015 年 2 月 27 日星期五 21:28:51 GMT 服务器:Apache-Coyote/1.1 X 框架选项:SAMEORIGIN 允许:获取、删除、发布、放置 X 框架选项:SAMEORIGIN
这就是我 90-95% 的时间得到的结果。但大约 20-30 次尝试中有 1 次会得到 200 返回码,并且页面为空白。
200 2015 年 2 月 27 日:21:02:50 HTTP/1.1 200 好 日期:2015 年 2 月 27 日星期五 21:28:50 GMT 服务器:阿帕奇 X 框架选项:SAMEORIGIN 内容长度:1
如果这是一个简单的配置问题,我预计每个调用要么失败要么工作,而不是 3-5% 失败。
我只在 SSL 端口上看到这一点,http 端口也已配置(尽管不向公众开放),并且没有显示相同的问题。我可以通过 http 发送数百个调用而不会出现错误,但在 https 上每 50 个调用至少会收到一到两个调用。
我已经尝试过但不成功的一些测试是:
日志仅报告发送了 405 或 200 的事实,但 url 没有明显差异。或者有什么错误。
通过尝试调用本地环回来消除任何入站防火墙问题,同样的问题。
通过直接调用代理连接来消除出站负载均衡器的问题。我对此测试的推理是,该层中没有任何内容可以处理 ~username 调用,并且它可能会被通配符 proxypass 忽略并传递到下一层。下一个服务器层响应完美。即使在测试爆炸中进行数百次调用也没有错误。
在配置完全相同的开发环境中进行了相同的测试(AWS 映像相同,因此差异仅在于 IP 地址)没有错误,因此生产量可能会出现问题,但不是很有帮助。服务器目前平均每秒约 5-10 次点击,短时间访问次数最多可达 25 次。CPU 负载为 0.00 至 0.02,可用内存超过 2G 或 7G,并且没有磁盘问题。
我不想在这里发布完整的配置文件,但它与 VirtualHost 阅读的相关部分非常普通。 (URL 已更改,以保护无辜者并防止 stackexchange 认为它们是链接)
听 443 SSLCipherSuite ***已编辑*** SSLHonorCipherOrder 上 SSLSessionCache“shmcb:/opt/httpd/logs/ssl_scache(512000)” SSLSessionCache超时 300 SSL协议 全部 -SSLv2 -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 SSL 压缩关闭 SSL 引擎开启 SSL 证书文件 ***已编辑*** SSLCertificateKeyFile ***已编辑*** SSLCertificateChainFile ***已编辑*** BrowserMatch“MSIE [2-5]”\ nokeepalive ssl-不干净-关闭 \ downgrade-1.0 强制响应-1.0 CustomLog“/opt/httpd/logs/ssl_request_log”\ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 订单拒绝、允许 允许所有 SSLProxyEngine 开启 代理通行证/条款! 代理通行证/静态! 代理通行证/图像! ProxyPass /terms_ccm ! ProxyPass /pay/ https://pay.ACME.COM/ payment/ ProxyPassReverse / payment / https://pay.ACME.COM/ payment/ ProxyPass / http://mbg.ACME.COM/mobgate/ ProxyPassReverse http://mbg.ACME.com/mobgate/