AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 473466
Accepted
Kzqai
Kzqai
Asked: 2013-01-30 06:08:12 +0800 CST2013-01-30 06:08:12 +0800 CST 2013-01-30 06:08:12 +0800 CST

网络服务器上 null 的 408 请求超时数量增加

  • 772

在我的日志监视记录中,这些记录一直在稳步增长:

  408 Request Timeout
      null: 694 Time(s)

在我的网络服务器上。

/var/log/apache2/access.log以下是访问日志中的一些类似贡献请求的内容:

ip - - date requestsfor"-"? httpcode bytes referrer useragent
75.149.117.146 - - [28/Jan/2013:17:49:47 -0500] "-" 408 0 "-" "-"
65.55.215.247 - - [28/Jan/2013:17:57:40 -0500] "-" 408 0 "-" "-"
205.157.206.75 - - [28/Jan/2013:18:00:21 -0500] "-" 408 0 "-" "-"

正常访问请求示例当然有更多相关信息,例如:

ip - - date request-for httpcode bytes referrer useragent
66.251.23.171 - - [28/Jan/2013:17:45:41 -0500] "GET /images/al/al-mb0608tn.jpg HTTP/1.1" 200 4085 "http://example.com/brands.php?F=S&BrandCode=AL" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"

在这里查看我的访问日志的更大样本(有一些正常的 get 请求,其余的都是 408)

我在 ips 上做了反向 IP 查找,它们似乎来自美国和加拿大的不同位置。我想这可能只是意味着涉及代理?有一大块来自:

96.42.74.117 - - [18/Feb/2013:02:55:58 -0500] "-" 408 0 "-" "-"

经常重复。

我犹豫要不要下结论说这是一次攻击而不是错误,但是记录的探测数量大约在同一时间一直在稳步增加,例如logwatch也说

 A total of 125 sites probed the server
    107.22.9.89
    108.132.76.100
    108.172.60.59
    108.226.133.142
    12.166.56.82
    12.54.94.24

....不断地列出对服务器使用检测到的探针的各种ips。列为“探测”服务器的 ips 与访问日志为 null 的 ips 有一些重叠,因此这可能表明存在攻击,但由于服务器必须为请求提供服务,因此很难判断是否合法DOS 请求超时攻击超时,如果这就是这里发生的情况。

我该如何调试这个问题,或者如果是攻击,如何处理这个攻击?

apache-2.2
  • 4 4 个回答
  • 9627 Views

4 个回答

  • Voted
  1. Best Answer
    Daniel t.
    2013-02-20T08:13:18+08:002013-02-20T08:13:18+08:00

    根据我所做的一些研究,这些是导致408消息的一些可能性。您可以测试每一个以确定与您的案例相关的一个。

    1) 非常低的 ApacheTIMEOUT值——您的 Web 服务器可能在客户端有机会发送请求之前结束会话。

    访问日志中的 408 错误代码太多

    2) browser predictive optimization- 您可以使用不同的浏览器轻松测试它。只需这样做tail -f /var/log/apache2/access.log,在使用相关关键字将您的网站显示在第一个搜索页面上时,将鼠标悬停在指向您网站的链接上,检查是否出现网站预览......所有这些都无需单击打开您网站的链接.

    http://forum.linode.com/viewtopic.php?f=10&t=8048

    3) denial of service attack- ddos​​ 预热,例如slow loris可以打开太多与服务器的连接,而不会发送一个字节来占用所有 Apache 进程。

    http://blog.spiderlabs.com/2011/07/advanced-topic-of-the-week-mitigating-slow-http-dos-attacks.html

    以上链接的引述 -

    “诀窍是打开与服务器的连接但不发送单个字节。打开连接并等待攻击者几乎不需要任何资源,但它会永久绑定一个 Apache 进程以耐心等待请求。Apache 会一直等到超时到期,然后关闭连接。从 Apache 1.3.31 开始,请求行超时记录到访问日志(状态代码为 408)。请求行超时消息出现在错误日志中,并带有级别信息。Apache 2不会将此类消息记录到错误日志中,但正在努力添加与 1.x 分支中存在的相同功能。”

    • 7
  2. ClearCrescendo
    2015-08-11T16:25:27+08:002015-08-11T16:25:27+08:00

    大多数 408 代码服务器响应似乎是由于客户端超时而不是向前看。我排除了上述案例、我的服务器和引用的文章中的拒绝服务,因为点击次数很少。我已经尝试过,但无法通过 OS X 下的 Safari、Chrome 或 Firefox 中的前瞻性重现任何 408 错误。我在大多数月份也没有在本地(非公共)服务器上看到它们,如果它们出现是正常的浏览器行为。可能是浏览器通过打开连接并且从不将它们用于请求来向前看,但我没有看到这种行为有足够的普遍性来解释这些公共服务器上的 408 数量。

    我在一个包含 47 个 IP 的列表上进行了 DNS 主机查找,该列表收到了 408 个响应,但日志中没有来自一个使用频率较低的公共服务器的已识别资源、代理或请求大小。我忽略了另外 67 个 IP,它们仅在最后一个元组上有所不同,并在每组中用第一个元组表示它们。所以这是 47 个不同的客户端网络/ISP。Apache 的TimeOut 默认是60 秒。在 47 个中,有 20 个生成了机器名称。在这些机器中,有 10 台 (50%) 在中国大陆,5 台在美国(25% 和所有俄亥俄州、俄克拉荷马州和新罕布什尔州),还有 5 台在巴西、英国、意大利和台湾 (ROC)。我还怀疑没有产生机器名称的 27 个 IP 中有很大一部分也在中国,但无法证明这一点。

    在被忽略的 67 个 IP 中,有 63 个是百度蜘蛛:baiduspider-*.crawl.baidu.com仅适用于谷歌)。

    如果是现代浏览器的行为导致了它们,我预计美国的比例会更高。我登录的服务器在湾区。相反,我认为这主要是网络拥塞导致连接设置时间过长,并允许在 Apache 断开连接或超时之前发送和接收完整请求。特别是由于需求增长、跨境带宽不足和中国国家防火墙基础设施导致的极度拥堵。它也可能是故意伪造的连接重置,但没有理由为此期望。其余的是连接不良或其他地方设备情况不佳的家庭用户。

    我认为问题主要是客户端连接问题,但您可能希望有一个和解的、非图形的 408 错误页面。尽管根据出站响应日志中显示的 0 大小来判断,Apache 并未使用错误页面。

    • 2
  3. Kohjah Breese
    2015-11-04T04:29:36+08:002015-11-04T04:29:36+08:00

    就我而言,Apache 正在超载。答案是关闭KeepAlive并增加 apache.conf 中的 MaxClients。

    • 0
  4. DoctorFox
    2015-11-07T17:55:17+08:002015-11-07T17:55:17+08:00

    当我修改我的 FastCGI 服务器的 Apache 配置时,我遇到了这个问题。


    将-idle-timeout值从 60 增加到 900 让我睡不着觉,因为我无法将 408 错误追溯到这个小变化。

    很高兴我最终通过将其恢复为 60 来修复它。

    • 0

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve