中间盒——配置错误的服务器会引发破坏性的DDoS攻击

去年8月,学术研究人员发现了一种强大的新方法可以使网站瘫痪:由超过10万台配置错误的服务器组成一支舰队,可以将垃圾数据流放大到匪夷所思的规模。在许多情况下,这样的攻击可能会导致无限的路由循环,从而造成自身不断延续的流量泛滥。内容分发网络Akamai表示,攻击者正在利用这些服务器来攻击银行、旅游、游戏、媒体和网络托管行业的网站。

这些服务器被称为“中间盒”,由大型机构部署,旨在屏蔽那些推送色情、赌博和盗版下载内容的网站。这些服务器没有按照传输控制协议(TCP)规定的那样,在建立连接之前进行三方握手——包括客户端发送的SYN数据包、服务器的SYN+ACK响应、客户端的确认ACK数据包。

这种握手有助于防止基于TCP的应用程序被滥用为放大器,因为ACK确认必须来自游戏公司或其他目标,而不是攻击者欺骗目标的IP地址。但考虑到需要处理非对称路由,在这种情况下,中间盒可以监控从客户端传递的数据包,但不包括受到审查或屏蔽的最终目的地,许多这样的服务器在设计上就没有考虑这种要求。

为了最大限度地提高破坏力和节约资源,DDoS攻击者往往通过放大载体来加强攻击火力。放大的原理是欺骗目标的IP地址,并在配置错误的服务器上回弹相对少量的数据,用于解析域名、同步计算机时钟或加速数据库缓存。由于服务器自动发送的响应比请求大几十倍、几百倍乃至几千倍,这使得被欺骗的目标不堪重负。

研究人员表示,他们发现的中间盒里至少有10万个超过了DNS服务器的放大系数(约54倍)和网络时间协议服务器的放大系数(约556倍)。研究人员还表示,他们发现了数百个服务器对于流量的放大倍数比使用memcached的错误配置服务器还高。memcached是一个用于加快网站速度的数据库缓存系统,可以使流量增幅达到惊人的51,000倍。

稿件来源:https://arstechnica.com/information-technology/2022/03/unending-data-floods-and-complete-resource-exhaustion-ddoses-get-meaner/

### DOSIC 与 TCP/IP 协议的区别及联系 #### 定义与背景 DOSIC 并不是一个标准的计算机网络术语,可能是用户输入错误或者是某种特定场景下的缩写。如果假设其意为“DoSIC”,则可能涉及拒绝服务攻击(Denial of Service, DoS)或者分布式拒绝服务攻击(Distributed Denial of Service, DDoS)。而 TCP/IP 是一种广泛使用的网络通信协议簇,用于实现跨网络的信息交换。 TCP/IP 协议不仅限于 TCP 和 IP 两个协议,还包含了 FTP、SMTP、UDP 等一系列协议[^1]。这些协议共同构成了一个完整的网络通信体系结构。 #### 功能对比 - **TCP/IP 的功能** TCP/IP 提供了一个分层架构来处理数据在网络中的传输过程。具体来说,它通过应用层、传输层、网络层和链路层四个层次完成端到端的数据传递[^3]。每一层都有明确的功能划分,例如 IP 负责寻址和路由选择,而 TCP 则负责可靠的数据流传输。 - **DOSIC 的含义** 如果将其理解为 DoS 或者 DDoS 攻击,则是一种恶意行为模式,旨在使目标机器或网络资源不可用给合法用户提供服务。这种攻击通常利用大量请求淹没服务器带宽或耗尽计算资源,从而导致正常流量无法被处理。 #### 技术层面分析 从技术角度来看,两者存在显著差异: 1. **目的不同** - TCP/IP 设计初衷是为了促进全球范围内的互联互通并保障高效稳定的数据交互; - DoS/DDoS 类型的行为则是为了破坏正常的网络运作状态,属于网络安全威胁范畴之一。 2. **机制设计上的对立关系** 正常情况下,基于 TCP/IP 构建的应用程序和服务会遵循既定规则进行操作,比如三次握手建立连接等流程。然而,在遭受 DoS 攻击时,可能会出现伪造源地址发送 SYN 数据包却永不回应 ACK 的情况,造成受害方持续等待直至超时释放半开连接,最终消耗掉有限的服务能力[^4]。 3. **防护措施关联性** 针对上述提到的安全隐患,可以采用多种方法加强针对潜在 DoS/DDoS 威胁的防御力度,其中包括但不限于部署防火墙过滤异常流量、实施速率限制策略减少单一会话占用过多资源的可能性等等。值得注意的是,所有这些保护手段都需要依托健全可靠的底层通讯基础设施——即良好配置运行良好的 TCP/IP 实现环境作为前提条件才能发挥最大效用。 ```python import socket def simulate_syn_flood(target_ip, target_port): try: while True: with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((target_ip, target_port)) s.send(b'SYN') except Exception as e: print(f"Error occurred: {e}") # Note: This is a demonstration and should not be used maliciously. ``` 以上代码片段展示了一个简单的模拟 SYN Flood 攻击逻辑(仅供学习研究用途,请勿非法使用)。可以看出,此类活动正是试图滥用 TCP 握手过程中未完全确认的状态特性来进行干扰。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值