今天中午有同事反應某系統打開很慢,覺得是電腦問題(手動偷笑)。打開網站一看,慢的連靜態文件都是幾KB/S的速度。這明顯不合理啊。上服務器一查,CPU正常、內存正常、Web程序也正常。html
因而想到了網絡帶寬問題。用vnstat -i eth1 -l
一看,驚呆了😮,出網帶寬達到了 162.44Mbit/s,這不是被攻擊了麼?緩存
繼續用iftop
查看是哪一個程序佔用了網絡。安全
發現居然是 Memcache,這說明 Memcache 存在問題。而咱們的應用程序對 Memcache 操做的地方並很少且無異常,故猜想是 Memcache 收到了攻擊,並且是前段時間很火的 UDP 反射攻擊漏洞引發的。
因而在咱們對 Memcache 啓動參數加了 -U 0
並重啓後,流量就正常了。如下內容是關於該漏洞的詳細信息和具體解決辦法。服務器
Memcached 是一套經常使用的 key/value 緩存系統,因爲它自己沒有權限控制模塊,因此對公網開放的 Memcached 服務很容易被攻擊者掃描發現。該類攻擊主要使用 Memcached 協議的 UDP 端口開展攻擊,攻擊者經過向開啓了 UDP 協議支持的 Memcached 服務器上發送僞造的 IP 欺騙請求,Memcached 服務器會將大量的響應報文發往目標攻擊主機,從而佔用目標攻擊機器的大量帶寬資源,致使拒絕服務。網絡
測試端口:nc -vuz IP地址 11211
測試是否對外開放 memcached 服務:telnet IP地址 11211
,若是開放了 11211 端口,則可能受影響
檢查進程狀態:ps -aux | grep memcached
tcp
echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -u IP地址 11211
命令查看返回內容,若返回內容非空,則代表服務器可能受到了影響。-U 0
參數並重啓 memcached 服務徹底禁用 UDP;不要將服務發佈到互聯網上而被黑客利用,能夠經過iptables
配置訪問控制規則。例如,在Linux
環境中運行命令iptables -A INPUT -p tcp -s 192.168.0.2 -dport 11211 -j ACCEPT
,在iptables
中添加此規則只容許192.168.0.2
這個 IP 對 11211 端口進行訪問。memcached
綁定監聽 IP工具
若是 Memcached 沒有在公網開放的必要,可在 Memcached 啓動時指定綁定的 IP 地址爲 127.0.0.1。例如,在 Linux 環境中運行如下命令:post
memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid
使用最小化權限帳號運行 Memcached 服務測試
使用普通權限帳號運行,指定 Memcached 用戶。例如,在 Linux 環境中運行如下命令來運行 Memcached:
memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid
Memcached 自己沒有作驗證訪問模塊,Memcached 從 1.4.3 版本開始,能支持 SASL 認證。
修改默認端口
修改默認 11211 監聽端口爲 11222 端口。在 Linux 環境中運行如下命令:
memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11222 -c 1024 -P /tmp/memcached.pid
原文地址: https://shockerli.net/post/me...
更多文章請訪問個人我的博客: https://shockerli.net