Apache访问日志\x80w\x01\x03\x01

Joh*_*Kim 4 centos apache-2.2

我收到以下错误请求,状态代码为 200 (OK) 到以下路径:

[06/Feb/2013:07:41:38 +1100] "\x80w\x01\x03\x01" 200 550 "-" "-"
[05/Feb/2013:10:52:22 +1100] "\x80g\x01\x03\x01" 200 550 "-" "-"
Run Code Online (Sandbox Code Playgroud)

我现在收到垃圾邮件滥用。我的服务器被入侵了吗?

Ser*_*sov 14

日志中的这些字节序列看起来像 SSL 版本 2 客户端 hello 数据包的开头,是由某些 HTTPS 客户端连接到您的 Web 服务器期望纯 HTTP 而不是 HTTPS 的端口产生的。您的 Web 服务器尝试将 SSL 握手的开始解释为 HTTP 请求方法。

所以你在这里有两个问题:

  1. 有人试图将 HTTPS 与您的 Web 服务器期望使用 HTTP 的端口进行通信。这可能是您的服务器配置错误(例如,您添加了一个Listen 443指令,但没有正确启用 HTTPS),或者只是在非标准端口上尝试 HTTPS 的哑机器人的端口扫描结果。或者这可能是由客户端错误配置引起的(例如https://example.com:80/可能会导致此类行为)。
  2. 您的服务器出于某种原因以状态代码 200 回复使用虚假方法的请求。虽然 Apache 本身不应该处理此类未知方法,但 PHP 默认接受所有内容并将请求传递给脚本。再加上一些重写规则,这些规则导致对不存在的文件的请求被传递到index.php(通常用于获取“干净的 URL”)和不检查$_SERVER['REQUEST_METHOD']这一点的脚本可能会导致您在此处看到的行为。

如果发送这些请求的客户端由您控制,那么您会遇到第三个问题——这些客户端使用的是过时且不安全的 SSL v2 协议(他们宣传支持 SSL 3.1 版,实际上是 TLS 1.0,但会接受 SSL v2来自服务器的响应,因此由于缺少 SSL v2 中的握手完整性保护,它们很容易受到协议降级攻击)。