首页/安全/安全加固速查/Memcached 未授权与 UDP 放大
服务与端口收敛50 条

Memcached 未授权与 UDP 放大

Memcached 既可能泄露数据,又因 UDP 反射成为大流量攻击的放大器:绑定回环、关闭 UDP、开启 SASL。

安全加固速查安全更新于 2026-10-13

缓存服务的两类风险

Memcached 默认没有认证机制(除非另外启用 SASL),且默认监听所有地址,任何能连上 11211 的人都能读走缓存里的会话数据、令牌与业务对象。它还有第二重身份:UDP 无握手,攻击者伪造源地址发一个小请求,服务会返回大得多的响应,构成放大攻击,历史上曾出现数万倍放大倍数并造成大规模拒绝服务。因此加固要求是绑定回环或管理地址、关闭 UDP、必要时启用 SASL。

基本信息

加固项缓存服务暴露面收敛
适用平台Linux(memcached)
权限要求root 或服务配置权限
达标判据未监听 UDP 11211,绑定回环或内网,有访问控制
关键启动参数-l 绑定地址、-U 0 关闭 UDP、-m 限制内存、-S 启用 SASL

典型使用场景

  • 公网或大内网主机的暴露面巡检
  • 发现缓存中存放会话数据后做访问收敛
  • 等保与行业检查中“多余服务关闭”条款整改
  • 云安全组与主机侧双层确认 UDP 是否已关
  • 多个应用共用缓存实例时按来源与实例做隔离

核查与加固

核查与加固
ss -tulnp | grep ':11211 '                     # 必须同时看 TCP 与 UDP
ps -ef | grep [m]emcached                       # 查看实际启动参数
# 加固后的启动参数示意:
# -l 127.0.0.1 只监听回环地址
# -U 0        关闭 UDP 监听,切断放大攻击路径
# -m 512      限制内存,避免被当成放大资源池
# -S          启用 SASL 认证,需客户端同步改造

复核与验证

复核与验证
systemctl restart memcached
ss -tulnp | grep ':11211 '                      # 复核:不应再出现 udp 行
memcached-tool 127.0.0.1:11211 stats | head -5  # 本地自测服务仍可用
ss -tulnp | grep -E ':11211|:11212'
firewall-cmd --list-ports                       # 边界与主机侧交叉确认

风险与对策对照

风险成因对策
数据泄露无认证且监听所有地址绑回环或内网,启用 SASL
UDP 放大UDP 无握手且响应远大于请求-U 0 关闭 UDP,边界封 udp/11211
内存被吃满未限制内存使用量-m 设定上限并纳入监控
横向探测同网段任意主机可连接主机防火墙限制来源网段
UDP 与 TCP 是两个独立监听项:只把 TCP 绑到回环或只封 TCP 端口时,UDP 11211 仍然对外可用,放大攻击照样成立。处置完成后要用 ss 同时确认两种协议都不再对外监听,并在边界设备与云安全组两侧复核。
启用 SASL(-S)需要客户端同步支持并配置,有改造成本。若应用侧短期无法改造,至少先做到绑定回环、关闭 UDP 与来源限制三点,消除最直接的泄露与放大风险,再把认证改造排入计划,避免因等待改造而长期停在裸奔状态。

易错点

  • 只绑 TCP 不关 UDP:两个协议各自监听,漏一个放大攻击依旧可行
  • 云安全组封了 UDP 但主机仍在监听:同网段横向访问仍可利用,主机侧配置也要改
  • 把 Memcached 当成有认证的服务:默认情况下没有任何认证,暴露即等于可读写
  • 缓存中存完整会话对象又不做隔离,一旦被读取影响面覆盖全部在线用户

数据来源与参考

  • Memcached 官方文档:Security
  • US-CERT:Memcached 放大通告

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌