2009-05-21 10 views
16

Credo che la comunicazione internodio si svolga in chiaro e che il valore del cookie sia strettamente utilizzato per l'autenticazione. (Non ho ancora prove).howto encrypt erlang chiamate rpc (e replica Mnesia) e altro traffico

  1. Come crittografare le comunicazioni internode?
  2. Come crittografare i messaggi di replica di Mnesia?
  3. Come configurare i miei filtri firewall e pacchetti per consentire il passaggio di questi messaggi?
  4. Come si impedisce lo snooping del mio traffico Erlang?
+0

Potrebbe aiutare a condensare un po 'quelle domande :) –

+1

Sono d'accordo, tranne che sono correlate e ho davvero odiato l'idea di scrivere 4 domande separate poiché sembravano chiudere. – Richard

+1

Penso che tutti e quattro insieme qui abbiano perfettamente senso; le risposte a queste domande sono correlate. –

risposta

6

Bene, poiché viene eseguito tutto su IP, un'opzione potrebbe essere l'utilizzo di IPSec tra i nodi. Anche le connessioni VPN crittografate potrebbero fare il trucco. Nessuno di questi richiede alcuna modifica sul lato Erlang delle cose, né i programmi o il runtime di Erlang devono essere consapevoli del fatto che la crittografia sta accadendo, tranne nel caso (si spera) raro di attacchi che causano il fallimento della comunicazione, nel qual caso sembrerà come se l'altro nodo fosse giù.

+2

+1 true; ma non banale. – Richard

+1

Infatti. Non sono sicuro che ci sia una soluzione banale a questo problema. –

+0

Sono propenso ad accettare questa risposta perché; ha senso e sembra essere il più forte. Considerando il "modo unix" ciò elimina la necessità di aggiungere codice all'implementazione di erlang. Rendendolo più elegante. Grazie! – Richard

1

ci sono fondamentalmente due opzioni:

  1. Usa SSL per connettere i nodi Erlang come descritto on Trap Exit
  2. Usa meccanismi IP underlaying come VPN o IPSec
+3

-1 vecchio; L'articolo di trapexit è stato scritto nel 2007 e l'autore spera di includere alcune patch che ha realizzato. Apparentemente SSL è un'opzione (non vedo ancora dove), tuttavia non si può controllare la porta come ha detto. – Richard

3

È possibile utilizzare un tunnel SSH per passare tutte le comunicazioni di erlang attraverso di esso, usando il parametro -rsh ssh, si vorrà impostare un'autenticazione basata su certificato per ssh (cioè nessuna password). Poi si può semplicemente usare qualcosa sulla falsariga di

Erl ssh -rsh ....

Per ulteriori dettagli si rimanda:

+0

Per quanto riguarda "stunnel" ... per essere efficace è necessario sapere quali porte verranno utilizzate da elang. Non sono stato in grado di identificarlo ... e infatti è stato detto che sono lepre da inchiodare. Ho letto il resto della risposta e ho seguito i collegamenti. Mentre questa è una caratteristica interessante ... e ancora scarsamente documentata ... non affronta la mia domanda che riguarda RPC. – Richard

1

Questo è ora possibile fuori dalla scatola con l'uso del modulo di distribuzione personalizzato inet_tls_dist. C'è un guide in the documentation su come utilizzare il modulo inet_tls_dist come modulo di distribuzione per ottenere comunicazioni crittografate tra i nodi del cluster. Non sono sicuro quando tutte queste funzionalità sono state introdotte, ma so che sono presenti in Erlang 18.2 e successivi.

Erlang Solutions ha anche scritto un blog post on this.

Problemi correlati