2013-04-23 1 views
5

Si supponga che il server 1 si trovi in ​​5: 5: 5: 5: 11211 e che il server 2 si trovi in ​​25.25.25.25:11211. Li aggiungi al pool di server e tutto è perfetto. Finché qualcuno non si connette a quella porta e inizia a fare scherzi con i tuoi dati.memcached che autentica le connessioni remote

Quindi cambiamo la porta in 38295. Più difficile da trovare, ma non impossibile, quindi non è ancora sufficiente.

Le mie domande sono:

1) Si può impostare l'autenticazione (username/password) per i server memcached per verificare una connessione? Puoi autorizzare host/IP specifici (probabilmente una cattiva idea)?

2) È possibile e necessario proteggere i dati trasferiti su Internet? I dati sono in formato raw e il tuo ISP e chiunque stia annusando la linea potrebbe vedere tutti i dati inviati. Ma la crittografia dei dati influirebbe probabilmente sulle prestazioni?

Quali soluzioni ci sono per l'impostazione di un cluster di server memcached e in che modo vengono protetti e autenticati?

risposta

1

Memcached ora supporta SASL. Ciò ti consentirà di eseguire un'autenticazione forte per il tuo servizio memchaced. Ecco un buon articolo su come configurare SASL con memcached.

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

+0

il client 'php5-memcache' lo autentica? ho esaminato SASL ma sono ancora confuso su come un client lo autentificherà, dal momento che non vedo alcuna funzione per farlo – user2103849

2

Non penso che abbiamo bisogno di andare per la soluzione complessa qui come menzione da Mike.

assumeremo che i server web (web1, web2, web3) hanno bisogno di ottenere i dati dai server memcache (mem1 & MEM2) tramite 11211 porto situato nella stessa rete interna e gli indirizzi IP interni di ogni server web inizia con 172,221. ..

In questo caso, è possibile inserire una limitazione nella tabella ip dei server mem2 & mem2 per accettare SOLO le richieste da 172.221. . per la porta 11211.

Spero che questo possa essere d'aiuto.

8

La soluzione che ha soddisfatto le mie esigenze era quella di impostare le voci di iptables come suggerito da sumoanand. Ecco cosa ho lavorato.

Inizio memcached usando qualcosa di simile:

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

Tenete a mente che il parametro è impostato su -l0.0.0.0, che permette in sostanza le connessioni da qualsiasi fonte. Se si mantiene lo standard 127.0.0.1, questo non funzionerà.

Successivamente, effettuiamo le voci su iptables. Se il tuo server memcached si trova sulla tua LAN, il seguente comando consentirà le connessioni solo da server locali specifici.

Per esempio, al fine di aggiungere 192.168.1.100 alla lista consentito, emettiamo il comando:

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

Se si vuole whitelist un server remoto, per esempio, 25.62.25.62 poi si esegue un altro comando:

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

È possibile inserire nella whitelist tutti gli indirizzi IP desiderati, ma assicurarsi di immettere il comando finale che blocca tutte le altre connessioni su quella porta.

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

iptables sono lette nell'ordine in cui vengono inseriti, quindi, se si emette un rifiutare tutte le dichiarazioni prima di assumere qualsiasi ACCEPT regole, tutte le connessioni verranno rifiutate (anche quelli whitelist).

I dati inviati in questo modo, tuttavia, non sono ancora crittografati in alcun modo. Qualunque cosa intercetta il tuo server memcached e il server remoto (packet sniffers, ISP) sarà in grado di vedere i dati completamente grezzi.