2013-04-23 125 views
5

假設服務器1位於5:5:5:5:11211,服務器2位於25.25.25.25:11211。您將它們添加到服務器池,一切都很好。直到有人連接到該端口並開始搞亂你的數據。memcached驗證遠程連接

所以我們將端口更改爲38295.難以找到,但並非不可能,所以它還不夠。

我的問題是:memcached的服務器來驗證連接

1)可以設置身份驗證(用戶名/密碼)?你可以將特定主機/ IP列入白名單(可能是個壞主意)?

2)您是否應該保護通過互聯網傳輸的數據?數據爲原始格式,您的ISP和任何嗅探該線路的人都可以看到所有要發送的數據。但是加密數據可能會影響性能?

有什麼解決方案可用於設置memcached服務器集羣,以及如何保護和驗證它們?

回答

1

Memcached現在支持SASL。這將允許您爲您的memchaced服務執行強認證。這裏有一篇關於如何用memcached設置SASL的好文章。

http://blog.couchbase.com/sasl-memcached-now-available

+0

'php5-memcache'客戶端是否對其進行身份驗證?我研究過SASL,但我仍然對客戶如何驗證它感到困惑,因爲我沒有看到任何功能可以這樣做 – user2103849 2013-04-23 19:03:31

2

我不認爲我們需要去的複雜的解決方案在這裏由Mike提。

假設你的Web服務器(WEB1,web2上,WEB3)需要通過位於同一內部網和內部IP地址,在每個網絡服務器與172.221啓動11211端口擺脫內存緩存服務器(MEM1 & MEM2)數據。

在這種情況下,您可以在mem1 & mem2服務器的ip表中設置限制,只接受來自172.221的請求。 爲11211端口。

希望這會有所幫助。

8

滿足我需求的解決方案是按照sumoanand的建議設置iptables條目。這是我的工作。

使用這樣的事情開始的memcached:

/usr/bin/memcached -p 11211 -l 0.0.0.0 -d -u www-data -m 12288

請記住,-l參數設置爲0.0.0.0,基本上可以從任意源連接。如果你保持標準127.0.0.1這不會工作。

接下來,我們進入iptables。如果您的memcached服務器位於您的LAN上,則以下命令將僅允許來自特定本地服務器的連接。

舉例來說,爲了增加192.168.1.100到允許列表中,我們發出命令:

iptables -A INPUT -p tcp -s 192.168.1.100 --dport 11211 -j ACCEPT 

如果要列入白名單的遠程服務器,例如,25.62.25.62那麼您發出其他命令:

iptables -A INPUT -p tcp -s 25.62.25.62 --dport 11211 -j ACCEPT 

您可以根據需要將多個IP列入白名單,但一定要發出阻止該端口上所有其他連接的最終命令。

iptables -A INPUT -p tcp --dport 11211 -j REJECT 

iptables的讀入它們的輸入順序,因此,如果您發出發出任何接受的規則,所有的連接將被拒絕(甚至白名單的)前拒絕所有聲明。

但是,以這種方式發送的數據仍然沒有以任何方式加密。攔截你的memcached服務器和遠程服務器(數據包嗅探器,ISP)的任何東西都能夠完全看到數據。