簡介
在2018年2月27日,Cloudflare 和 Arbor Networks 公司于周二發(fā)出警告稱,惡意攻擊者正在濫用 Memcached 協(xié)議發(fā)起分布式拒絕服務(wù)(DDoS)放大攻擊,全球范圍內(nèi)許多服務(wù)器(包括 Arbor Networks 公司)受到影響。下圖為監(jiān)測到Memcached攻擊態(tài)勢。
美國東部時間28日下午,GitHub透露其可能遭受了有史最強的DDoS攻擊,專家稱攻擊者采用了放大攻擊的新方法Memcached反射攻擊,可能會在未來發(fā)生更大規(guī)模的分布式拒絕服務(wù)(DDoS)攻擊。對GitHub平臺的第一次峰值流量攻擊達到了1.35Tbps,隨后又出現(xiàn)了另外一次400Gbps的峰值,這可能也將成為目前記錄在案的最強DDoS攻擊,此前這一數(shù)據(jù)為1.1Tbps。據(jù)CNCERT3月3日消息,監(jiān)測發(fā)現(xiàn)Memcached反射攻擊在北京時間3月1日凌晨2點30分左右峰值流量高達1.94Tbps。
Memcached 是一個高性能的分布式內(nèi)存對象緩存系統(tǒng),用于動態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫負載。它通過在內(nèi)存中緩存數(shù)據(jù)和對象來減少讀取數(shù)據(jù)庫的次數(shù),從而提高動態(tài)、數(shù)據(jù)庫驅(qū)動網(wǎng)站的速度。放大攻擊針對使用UDP在公共網(wǎng)絡(luò)上公開的Memcached部署。
為了緩解攻擊,最好的選擇是將Memcached綁定到本地接口,禁用UDP,并使用傳統(tǒng)的網(wǎng)絡(luò)安全方案保護您的服務(wù)器。在本教程中,我們將介紹如何執(zhí)行此操作,以及如何將服務(wù)公開給外部客戶端。
在Ubuntu和Debian服務(wù)器上保護Memcached
對于在Ubuntu或Debian服務(wù)器上運行的Memcached服務(wù),您可以通過編輯/etc/memcached.conf
文件調(diào)整服務(wù)參數(shù),例如:
sudo nano /etc/memcached.conf
默認情況下,Ubuntu和Debian將Memcached綁定到本地127.0.0.1
端口。受限制的安裝127.0.0.1
不容易受到來自網(wǎng)絡(luò)的放大攻擊。
. . . -l 127.0.0.1 . . .
那么禁用UDP也是一個好主意,這更有可能被這種特殊攻擊利用。要禁用UDP,請將以下內(nèi)容添加到底部或文件中:
. . . -U 0
完成后,保存并關(guān)閉文件。
重新啟動Memcached服務(wù)以應(yīng)用更改:
sudo service memcached restart
通過輸入以下內(nèi)容驗證Memcached當前是否綁定到本地接口并僅偵聽TCP:
sudo netstat -plunt
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name . . . tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 2383/memcached . . .
您應(yīng)該看到僅使用TCP memcached
綁定到127.0.0.1
。
在CentOS和Fedora服務(wù)器上保護Memcached
對于在CentOS和Fedora服務(wù)器上運行的Memcached服務(wù),您可以通過編輯/etc/sysconfig/memcached
文件來調(diào)整服務(wù)參數(shù),例如:
sudo vi /etc/sysconfig/memcached
我們希望綁定到本地網(wǎng)絡(luò)接口,使用-l 127.0.0.1
選項限制到同一臺計算機上的客戶端的流量。我們還將設(shè)置-U0
禁用UDP協(xié)議。
在OPTIONS
變量中添加這兩個參數(shù):
PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS="-l 127.0.0.1 -U 0"
完成后保存并關(guān)閉文件。
要應(yīng)用更改,請重新啟動Memcached服務(wù):
sudo service memcached restart
通過輸入以下內(nèi)容驗證Memcached當前是否綁定到本地接口并僅偵聽TCP:
sudo netstat -plunt
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name . . . tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 2383/memcached . . .
您應(yīng)該看到僅使用TCP memcached
綁定到127.0.0.1
。
允許通過專用網(wǎng)絡(luò)訪問
上面的步驟告訴Memcached只能偵聽本地接口。這可以通過不將Memcached接口暴露給外部各方來防止放大攻擊。如果您需要允許從其他服務(wù)器訪問,則必須調(diào)整配置。將Memcached綁定到專用網(wǎng)絡(luò)端口。
使用防火墻限制IP訪問
在執(zhí)行此操作之前,最好設(shè)置防火墻規(guī)則可以連接到Memcached服務(wù)器的計算機。您需要知道您客戶端的IP地址以方便配置防火墻規(guī)則。
如果您使用的是UFW防火墻,則可以通過輸入以下內(nèi)容來限制對Memcached實例的訪問:
sudo ufw allow OpenSSH sudo ufw allow from client_servers_private_IP/32 to any port 11211 sudo ufw enable
如果您使用的是Iptables,則可以通過輸入以下內(nèi)容來建立基本防火墻:
sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A INPUT -p tcp -s client_servers_private_IP/32 --dport 11211 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -P INPUT DROP
然后,您可以調(diào)整Memcached服務(wù)綁定到服務(wù)器的專用網(wǎng)絡(luò)接口。
將Memcached綁定到專用網(wǎng)絡(luò)接口
現(xiàn)在您的防火墻已就位,您可以調(diào)整Memcached配置以綁定到服務(wù)器的專用網(wǎng)絡(luò)接口,而不是127.0.0.1
。
對于Ubuntu或Debian服務(wù)器,請再次打開/etc/memcached.conf
文件:
sudo nano /etc/memcached.conf
在里面,找到該-l 127.0.0.1行并更改地址以匹配您服務(wù)器的專用網(wǎng)絡(luò)接口:
. . . -l memcached_servers_private_IP . . .
完成后保存并關(guān)閉文件。
對于CentOS和Fedora服務(wù)器,請再次打開/etc/sysconfig/memcached
文件:
sudo vi /etc/sysconfig/memcached
在里面,更改變量-l 127.0.0.1
中的OPTIONS
參數(shù)以引用Memcached服務(wù)器的私有IP:
. . . OPTIONS="-l memcached_servers_private_IP -U 0"
完成后保存并關(guān)閉文件。
接下來,再次重新啟動Memcached服務(wù):
sudo service memcached restart
檢查新設(shè)置netstat
以確認更改:
sudo netstat -plunt
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name . . . tcp 0 0 memcached_servers_private_IP:11211 0.0.0.0:* LISTEN 2383/memcached . . .
建議您最好還是檢查來自未授權(quán)客戶端的訪問權(quán)限,以確保防火墻規(guī)則有效。
結(jié)論
Memcached放大攻擊會嚴重影響網(wǎng)絡(luò)運行狀況和服務(wù)的穩(wěn)定性。但是,通過運行服務(wù)器的安全設(shè)置,可以有效地減輕攻擊。應(yīng)用本教程中的更改后,最好繼續(xù)監(jiān)控您的服務(wù),以確保維護正常的功能和連接。
應(yīng)對逐步升級的DDoS攻擊風險,我們還是建議配置百度云加速高防CDN,隱藏源站IP。用高防CDN充足的帶寬資源應(yīng)對可能的大流量攻擊行為,并根據(jù)業(yè)務(wù)特點制定個性化的防護策略,被DDoS攻擊時才能保證業(yè)務(wù)可用性,從容處理。在面對高等級DDoS威脅時,及時升級防護配置,必要時請求DDoS防護廠商的專家服務(wù)。