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 / 问题 / 423740
Accepted
Rob
Rob
Asked: 2012-09-03 18:20:10 +0800 CST2012-09-03 18:20:10 +0800 CST 2012-09-03 18:20:10 +0800 CST

如果服务器从未收到 RST 数据包,会发生什么情况?

  • 772

最近有人决定向我展示他想出的一种使用 SYN/TCP 的新拒绝服务方法的 POC。我以为这完全是胡说八道,但在向他解释了 SYN-SYN/ACK-RST 之后,他让我无语了。他告诉我“如果你用来欺骗发送 SYN/ACK 数据包的服务器无法接收 RST 数据包怎么办?”

我不知道。他声称服务器将继续尝试发送 SYN/ACK 数据包,并且数据包速率将继续增加。

有没有道理呢?任何人都可以详细说明吗?

显然,它的工作方式是这样的:

他把SYN包的IP欺骗到目标的IP。然后他将 SYN 数据包发送到一些随机服务器
他们都用他们的 SYN/ACK 数据包回复到目标 IP,当然
目标用 RST 响应,正如我们所知
但是他以某种方式阻止目标发送 RST 或保持随机服务器处理它
显然,服务器将继续尝试发送 SYN/ACK 数据包,从而产生某种“滚雪球”效应。

tcp
  • 2 2 个回答
  • 702 Views

2 个回答

  • Voted
  1. Best Answer
    sysadmin1138
    2012-09-03T18:43:07+08:002012-09-03T18:43:07+08:00

    如您所知,“尝试打开端口”数据包流应该像这样工作:

    1. 同步 ->
    2. <- 同步/确认
    3. 确认 ->

    “关闭端口”版本很简单:

    1. 同步 ->
    2. <- 重启

    如果远端不返回 RST 数据包,这是一种非常常见的防火墙配置:

    1. 同步 ->
    2. [时间流逝]
    3. 同步 ->
    4. [时间流逝]
    5. 同步 ->
    6. [时间流逝]

    我所说的“非常普遍”是指“非常普遍” 。所有 TCP 堆栈都必须处理这种情况,因为它很常见。

    你的人提出的变体:

    1. [欺骗源] SYN ->
    2. <- 同步/确认
    3. [时间流逝]
    4. <- 同步/确认
    5. [时间流逝]
    6. <- 同步/确认

    他巧妙发现的“攻击”是SYN Flood攻击,自 1990 年代初就为人所知。由于防火墙阻止了 RST 数据包,这些服务器不知道要关闭连接,因此它们确实会根据正常的 TCP 重试时间重新传输 SYN/ACK 数据包。但是,所有现代 TCP 堆栈都包含一些内置于其中的可配置的 SYN 泛洪攻击保护措施。

    这仍然是一种有点有效的攻击方法,尽管它造成的主要危害是通过用太多数据包压倒外围安全设备而无法跟踪。没有 SYN 的 SYN/ACK 应该非常便宜地丢弃在地板上,但如果它们的数量足够多,它可以压倒防火墙。

    • 8
  2. belteshazzar
    2012-09-04T10:08:27+08:002012-09-04T10:08:27+08:00

    Syn Cookies有效地阻止了这种攻击。服务器以 SYN/ACK 响应,然后忘记它。如果收到 ACK,它会根据 TCP 序列号重新初始化流。在 linux 上,它通过添加启用:

    net.ipv4.tcp_syncookies = 1

    到/etc/sysctl.conf

    但是当被10k+的机器锤的时候,我估计服务器还是会宕机的。

    • 0

相关问题

  • 使用 TOAD 客户端通信配置保活

  • ping 尝试中的“TTL 在传输中过期”是什么意思?

  • 在自写的 tcp 服务器上使用哪些端口

  • 将文本文件输出到 TCP 端口

  • 使用多个 NIC 增加带宽

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