1. 程式人生 > >memcache漏洞--被未授權訪問,並作為肉雞發動DDOS攻擊

memcache漏洞--被未授權訪問,並作為肉雞發動DDOS攻擊

memcache redis linux 漏洞修復

漏洞描述:
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攻擊