Linux Centos memcache 端口11211 未授权访问漏洞 禁止外网访问
漏洞描述:
memcache是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以开放在外网的memcache服务很容易被攻击者扫描发现,通过命令交互可直接读取memcache中的敏感信息。
修复方案:
因memcache无权限控制功能,所以需要用户对访问来源进行限制。
方案一:
如果memcache没有在外网开放的必要,可在memcached启动的时候指定绑定的ip地址为 127.0.0.1。例如:
1
|
memcached –d –m 1024 –u memcached –l 127.0.0.1 –p 11211 –c 1024 –P /tmp/memcached.pid
|
其中 -l 参数指定为本机地址。
方案二:(注意:请谨慎配置iptables规则)
如果memcache服务需要对外提供服务,则可以通过iptables进行访问控制,下面是只允许本机访问:
1
2
3
4
5
6
7
8
9
10
11
|
// accept
# iptables -A INPUT -p tcp -s 127.0.0.1 –dport 11211 -j ACCEPT
# iptables -A INPUT -p udp -s 127.0.0.1 –dport 11211 -j ACCEPT
// drop
# iptables -I INPUT -p tcp –dport 11211 -j DROP
# iptables -I INPUT -p udp –dport 11211 -j DROP
// 保存规则并重启 iptables
# service iptables save
# service iptables restart
|
上述规则的意思是只允许127.0.0. 这个ip对11211端口进行访问。
验证 memcache 端口11211开启情况
以IP(1.2.3.4)为例:
1
|
telnet 1.2.3.4 11211
|
无需用户名密码,可以直接连接memcache 服务的11211端口。
执行如下命令获得相应结果:
1
2
3
4
|
# stats //查看memcache 服务状态
# stats items //查看所有items
# stats cachedump 32 0 //获得缓存key
# get :state:264861539228401373:261588 //通过key读取相应value ,获得实际缓存内容,造成敏感信息泄露
|