memcache漏洞--被未授權訪問,並作為肉雞發動DDOS攻擊
memcache是一套常用的key-value緩存系統,由於它本身沒有權限控制模塊,所以開放在外網的memcache服務很容易被攻擊者掃描發現,通過命令交互可直接讀取memcache中的敏感信息。
修復方案:
因memcache無權限控制功能,所以需要用戶對訪問來源進行限制。
方案一:
如果memcache沒有在外網開放的必要,可在memcached啟動的時候指定綁定的ip地址為 127.0.0.1。例如:
memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid
其中 -l 參數指定為本機地址。
方案二:設置防火墻規則,限制未被授權的連接(註意:請謹慎配置iptables規則)
[root@cp2-redismem01 ~]# cat /etc/firewalld/zones/redismem.xml <zone> <short>redis and memcached service</short> <description>.</description> <source address="192.168.xx.10/24"/> <service name="redismem"/> <service name="ssh"/> </zone> [root@cp2-redismem01 ~]# cat /usr/lib/firewalld/services/redismem.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>redis and memcache</short> <description>service of redis.service and memcached.service</description> <port protocol="tcp" port="11211"/> <port protocol="tcp" port="6379"/> </service>
重啟firewalld防火墻
iptables設置防火墻
如果memcache服務需要對外提供服務,則可以通過iptables進行訪問控制,下面是只允許本機訪問:
// 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
上述規則的意思是只允許192.168.0.2這個ip對11211端口進行訪問。
驗證 memcache 端口11211開啟情況
以IP(1.2.3.4)為例:
telnet 1.2.3.4 11211
無需用戶名密碼,可以直接連接memcache 服務的11211端口。
執行如下命令獲得相應結果:
# stats //查看memcache 服務狀態
# stats items //查看所有items
# stats cachedump 32 0 //獲得緩存key
# get :state:264861539228401373:261588 //通過key讀取相應value ,獲得實際緩存內容,造成敏感信息泄露
memcache漏洞--被未授權訪問,並作為肉雞發動DDOS攻擊