前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何减轻memcached的放大攻击

如何减轻memcached的放大攻击

原创
作者头像
姚啊姚
发布2018-08-17 15:07:17
1.7K0
发布2018-08-17 15:07:17
举报

什么是Memcrashed?

在2018年2月27日,Cloudflare 和 Arbor Networks 公司于周二发出警告称,恶意攻击者正在滥用 Memcached 协议发起分布式拒绝服务(DDoS)放大攻击,全球范围内许多服务器(包括 Arbor Networks 公司)受到影响。下图为监测到Memcached攻击态势。

美国东部时间28日下午,GitHub透露其可能遭受了有史最强的DDoS攻击,专家称攻击者采用了放大攻击的新方法Memcached反射攻击,可能会在未来发生更大规模的分布式拒绝服务(DDoS)攻击。对GitHub平台的第一次峰值流量攻击达到了1.35Tbps,随后又出现了另外一次400Gbps的峰值,这可能也将成为目前记录在案的最强DDoS攻击,此前这一数据为1.1Tbps。据CNCERT3月3日消息,监测发现Memcached反射攻击在北京时间3月1日凌晨2点30分左右峰值流量高达1.94Tbps。

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。放大攻击针对使用UDP在公共网络上公开的Memcached部署。

这些攻击都是使用memcached协议并源自11211端口。攻击者将普通大小的UDP数据包从欺骗性IP地址发送到运行memcached的服务器。这些请求会从memcached中获取极大的数据包响应,从而快速拥塞受害者的网络并导致拒绝服务(DoS)方案。

服务在腾讯云如何减轻这种攻击?

  • 如果您使用到了Memcached服务,请务必禁用UDP支持,Memcached启动时,建议添加“-U 0”参数可完全禁用UDP(默认情况下,Memcached会侦听INADDR_ANY,并默认启用UDP)细节可参考官方说明文档:https://github.com/memcached/memcached/wiki/ConfiguringServer#udp
  • 腾讯云用户建议开启安全组防火墙,确保Memcached服务器与互联网之间无法通过UDP来访问,配置可参考如下图:
    • 进入腾讯云控制台,打开安全组配置界面,操作如下:

    修改或添加安全组策略,策略配置参考如下(规则作用:禁止外部入向的11211端口UDP流量):

    若您的Memcached服务必须使用到UDP,建议始终以较小的数据包来响应,否则可能导致协议会被滥用进行放大攻击;

  • 腾讯云云缓存Memcached产品采用自研架构,未使用UDP协议,默认不受该问题影响,您可以放心使用!

在运行memcached怎么办?

Memcached不应该暴露在互联网上。您可以采取一些基本步骤来保护您的memcached实例。

  • 如果您需要将memcached绑定到特定的私有IP地址和端口。
  • 如果您不需要memcached通过任何网络连接进行通信,请禁用memcached的UDP并确保它只是在监听localhost

CentOS

  • 默认情况下,Memcached配置为在TCP和UDP上侦听来自基于RHEL的分发上的任何IP地址的传入连接。 将其更改为仅侦听localhost,并作为额外的预防措施,为memcached禁用UDP。

编辑memcached配置文件中的OPTIONS行:

/etc/sysconfig/memcached

代码语言:javascript
复制
OPTIONS="-l 127.0.0.1 -U 0"
  • 重启memcached。如果您的系统使用systemd:
代码语言:javascript
复制
sudo systemctl restart memcached
  • 如果您的系统使用SysV:
代码语言:javascript
复制
sudo service memcached restart

Debian和Ubuntu

  • 默认情况下,Memcached配置为在Debian和Ubuntu中侦听localhost。 此配置不受放大漏洞的影响,但您仍应验证您未运行易受攻击的设置:
代码语言:javascript
复制
grep 127.0.0.1 /etc/memcached.conf

应该返回:

代码语言:javascript
复制
-l 127.0.0.1

如您所见,memcached正在侦听localhostIP地址。

您还可以使用ssnetstat检查系统的监听UDP端口:

代码语言:javascript
复制
sudo ss -apu
sudo netstat -lpu

Memcached应该再次显示它正在侦听localhost或地址127.0.0.1,如下所示:

代码语言:javascript
复制
root@localhost:~# ss -aup
State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port
UNCONN     0      0      127.0.0.1:11211                    *:*                     users:(("memcached",pid=5021,fd=30),("memcached",pid=5021,fd=29),("memcached",pid=5021,fd=28),("memcached",pid=5021,fd=27))
  • 禁用memcached使用UDP作为额外的预防措施:
代码语言:javascript
复制
cat <<EOT >> /etc/memcached.conf
​
# Disable UDP
-U 0
EOT
  • 重启memcached。如果您的系统使用systemd:
代码语言:javascript
复制
sudo systemctl restart memcached

如果您的系统使用SysV:

代码语言:javascript
复制
sudo service memcached restart

更详细的防护方案可以参考Memcached DDoS反射攻击如何防御这篇文章。更多Linux教程请前往腾讯云+社区学习更多知识。


参考文献:《Mitigating memcached Amplification Attacks》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Memcrashed?
  • 服务在腾讯云如何减轻这种攻击?
  • 在运行memcached怎么办?
    • CentOS
      • Debian和Ubuntu
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档