第30章 UDP DDoS 攻击原理与缓解措施
UDP DDoS
UDP DDoS
介绍
针对 memcached 的放大攻击原理与 NTP 或 DNS 放大攻击等所有 DDoS 放大攻击类似。
攻击者通过向易受攻击的服务器发送伪造的请求,诱导其返回比初始请求大得多的数据,从而放大流量。这种放大攻击之所以可行,是因为 memcached 服务器支持以 UDP 协议运行。
UDP 是一种网络协议,允许发送数据前无需进行所谓的“握手”(即双方确认建立连接的通信过程)。
由于目标主机不会被询问是否愿意接收数据,攻击者可以利用这一特性,未经目标同意便向其发送海量数据。memcached 如何发起攻击?
攻击者首先向暴露的 memcached 服务器 SET 一个大的数据项。接着,攻击者伪造一个 GET 请求,将源 IP 地址设为目标受害者的 IP。接收到请求的易受攻击的 memcached 服务器会将包含大量数据的响应发送给目标。目标服务器或其周边基础设施无法处理从 memcached 服务器发来的海量数据,导致过载,进而使合法请求无法得到服务(拒绝服务)。
缓解措施
禁用 UDP
如果 memcached 服务器不需要 UDP 支持,请确保将其禁用。版本 1.5.6 及以后的版本默认已禁用 UDP。可在启动参数中添加 -U 0 来禁用 UDP。如果使用配置文件,配置可能如下所示:在 /etc/memcached.conf 中添加以下行即可禁用 UDP:
# 禁用 UDP 协议
-U 0
保存 /etc/memcached.conf 并重启服务(在 Ubuntu 上使用 service memcached restart)。你可以通过使用 netstat 命令来验证是否成功:
$ sudo netstat -plunt
活动互联网连接(仅限服务器)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 16079/memcached
如你所见,memcached 仅使用 TCP 进行监听。
防火墙限制 memcached 服务器
如果你的 memcached 服务器仅供本机使用,可以将监听地址限制为 127.0.0.1。如果其他机器需要从内网连接,请强制监听私有 IP(例如 10.0.0.0.1,需根据你的网络类别进行调整)。你可以在文件 /etc/memcached.conf 中修改这些设置:
# 仅在本地主机监听
--listen 127.0.0.1
默认情况下,Ubuntu 和 Debian 会将 Memcached 绑定到本地接口 127.0.0.1。你也可以使用防火墙阻止外部流量到达你的 memcached 服务器。Loki 与 Extstore