受影响范围
用户自建,并对外开放了Memcached 11211 UDP端口的Memcached服务。
排查方案
参照以下步骤进行排查:
- 从外部互联网测试是否对外开放了Memcached 11211 UDP端口。您可以使用nc工具测试端口,并查看服务器上是否运行memcached进程,具体测试方式如下。
- 测试端口:
nc -vuz IP地址 11211
- 测试是否对外开放memcached服务:
telnet IP地址 11211
。如果开放了11211端口,则可能受影响。 - 检查进程状态:
ps -aux | grep memcached
- 测试端口:
- 使用
echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -u IP地址 11211
命令查看返回内容。若返回内容非空,则表明您的服务器可能受影响。
解决方案
- 如果您使用了Memcached服务,并对外开放了11211 UDP端口,建议您根据业务自身情况,使用ECS安全组策略或其他防火墙策略封禁公网入方向UDP 11211端口,确保Memcached服务器与互联网之间无法通过UDP来访问。
- 如果您的Memcached服务不需要开放UDP端口,建议您在Memcached启动选项中添加
-U 0
参数来完全禁用UDP协议的访问。说明:修改Memcached服务的启动选项后,您需要重启服务使配置生效。 - Memcached官方已经发布新版本默认禁用UDP 11211端口,建议您升级到最新1.5.6版本(文件完整性校验sha值:ca35929e74b132c2495a6957cfdc80556337fb90);
- 建议您对在运行的Memcached服务进行安全加固。例如,启动绑定本地监听IP,禁止对外访问,禁用UDP协议,启用登录认证等安全功能,提高Memcached安全性。
验证方法
修复完毕后,您可以使用以下方法来测试服务器修复措施是否生效:
- 如果您屏蔽了对外TCP协议11211端口,您可以在外网办公电脑上使用命令“
telnet ip 11211
“,如果返回连接失败,则表示已经关闭对外TCP协议11211端口; - 如果您禁用了memcached UDP协议,您可以运行以下命令检测是否关闭memcached 服务UDP协议。
echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -u IP地址 11211
若返回内容为空,则表明您的服务器已经成功memcached UDP协议。您也可以使用
netstat -an | grep udp
命令查看UDP 11211端口是否处于监听状态,如果没有监听,则表示已经成功关停memcached UDP协议。