近日API突然出现大量未知数据包占用了带宽导致系统异常的情况,根据多方调查发现是最近爆出的memcached的UDP漏洞导致,表现为会一直像某些ip发送大量UDP包。根据运维给出的解决办法如下文示。感觉关闭IP、UDP加防火墙就能解决问题,不过要注意修改默认端口。
近日,攻击者利用对外开放的Memcache 服务弱点,对外发动 DDoS 攻击。攻击者通过向Memcache 服务器发送请求报文,由于 UDP 协议并未正确执行,因此 Memcache 服务器并未以类似或更小的包予以响应,而是以比原始请求大数千倍的包予以响应。攻击者通过伪造原始IP地址,诱骗 Memcache 服务器将过大规模的响应包发送给另外一个 IP 地址即 DDoS 攻击的受害者的 IP 地址,从而实现反射型 DDoS。
影响范围
开放在公网且开启UDP协议的Memcache 服务
验证方法
运行以下命令可以测试服务器是否易受攻击:
echo -en 'x00x00x00x00x00x01x00x00statsrn' | nc -q1 -u 127.0.0.1 11211
如果的响应非空,则表示服务器易受到攻击
修复方案
1、若Memcache 服务无需使用UDP协议,需要禁用UDP支持:
memcached -U 0
2、若Memcache 服务无需对外开放,配置监听地址仅限本地回环地址:
在 Memcache 服务的配置文件,或者启动参数中,使用 “ -l 127.0.0.1” 指定监听的 ip 地址
3、使用 iptables 等手段控制 Memcache 服务的端口ACL策略:
仅限来自指定 IP 段的访问
iptables -t filter -A INPUT -p tcp -s IP --dport 11211 -j ACCEPT
屏蔽任何其他 IP 对 Memcached 端口的访问
iptables -t filter -A INPUT -p tcp --dport 11211 -j DROP
参考链接
https://blog.cloudflare.com/memcrashed-major-amplification-attacks-from-port-11211/