2013-04-23 17 views
5

Załóż serwer 1 znajduje się na 5: 5: 5: 5: 11211, a serwer 2 znajduje się w 25.25.25.25:11211. Dodajesz je do puli serwerów i wszystko jest świetnie. Dopóki ktoś nie połączy się z tym portem i zacznie bawić się danymi.memcached authentication remote connections

Więc zmieniliśmy port na 38295. Trudniej znaleźć, ale nie niemożliwe, więc nadal nie wystarczy.

Moje pytania są następujące:

1) Czy można ustawić uwierzytelnianie (login/hasło) do memcached serwerów w celu sprawdzenia połączenia? Czy możesz umieścić na białej liście konkretne hosty/adresy IP (prawdopodobnie zły pomysł)?

2) Czy możesz i czy chcesz zabezpieczyć dane przesyłane przez Internet? Dane są w surowym formacie, a Twój ISP i każdy, kto węszy w linii, może zobaczyć wszystkie wysyłane dane. Ale szyfrowanie danych prawdopodobnie wpłynęłoby na wydajność?

Jakie są rozwiązania w zakresie konfiguracji klastra memcached serwerów i jak je zabezpieczyć i uwierzytelnić?

Odpowiedz

1

Memcached obsługuje teraz SASL. Umożliwi to silne uwierzytelnianie usługi w ramach memchacingu. Oto dobry artykuł na temat konfiguracji SASL z memcached.

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

+0

Czy klient 'php5-memcache' go uwierzytelnia? zajrzałem do SASL, ale nadal jestem zdezorientowany, w jaki sposób klient będzie go uwierzytelniał, ponieważ nie widzę żadnych funkcji do tego – user2103849

2

Nie sądzę, musimy iść do kompleksowego rozwiązania tu wzmianki Mike.

Załóż, że Twoje serwery sieciowe (web1, web2, web3) muszą pobierać dane z serwerów memcache (mem1 & mem2) przez port 11211 znajdujący się w tej samej sieci wewnętrznej, a wewnętrzne adresy IP każdego serwera WWW zaczynają się od 172.221. ..

W tym przypadku można umieścić ograniczenie w tabeli ip serwerów mem2 mem2 &, aby TYLKO zaakceptować żądania z 172.221. . dla portu 11211.

Mam nadzieję, że to pomoże.

8

Rozwiązaniem, które spełniło moje potrzeby było skonfigurowanie wpisów w iptables zgodnie z sugestią sumoanand. Oto, co robiłem.

start memcached użyciu coś takiego:

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

Należy pamiętać, że parametr jest ustawiony na -l0.0.0.0, który zasadniczo umożliwia połączenia z dowolnego źródła. Jeśli zachowasz standard 127.0.0.1, to nie zadziała.

Następnie dokonujemy wpisów w iptables. Jeśli twój memcached serwer znajduje się w twojej sieci LAN, poniższe polecenie zezwoli na połączenia tylko z określonych serwerów lokalnych.

Na przykład, aby dodać 192.168.1.100 do listy dozwolonych, wydajemy polecenie:

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

Jeśli chcesz umieścić na białej liście do zdalnego serwera, na przykład, 25.62.25.62 następnie wydać kolejne polecenie:

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

Możesz umieścić na białej liście tyle adresów IP, ile chcesz, ale pamiętaj o wydaniu polecenia końcowego, które blokuje wszystkie inne połączenia na tym porcie.

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

iptables są odczytywane w kolejności, w jakiej są wprowadzane, więc jeśli wydać odrzucić wszystkie oświadczenia przed podjęciem jakiegokolwiek przyjąć przepisy, wszystkie połączenia zostaną odrzucone (nawet te z białej listy).

Dane przesyłane w ten sposób nadal nie są jednak w żaden sposób szyfrowane. Wszystko, co przechwyci twój memcached serwer i zdalny serwer (sniffery pakietów, ISP), będzie w stanie zobaczyć dane całkowicie surowe.