2009-05-21 6 views
16

Je crois que la communication entre les noeuds se déroule en clair et que la valeur du cookie est strictement utilisée pour l'authentification. (Je n'ai encore aucune preuve).comment crypter les appels erlang rpc (et la réplication Mnesia) et d'autres trafics

  1. Comment crypter les communications entre les nœuds?
  2. Comment crypter les messages de réplication Mnesia?
  3. Comment configurer mon pare-feu et mes filtres de paquets pour permettre le passage de ces messages?
  4. Comment empêcher la surveillance de mon trafic erlang?
+0

pourrait aider à condenser ces questions un peu :) –

+1

Je serais d'accord, sauf qu'ils sont liés et je détestais vraiment l'idée d'écrire 4 questions distinctes car ils semblaient fermer. – Richard

+1

Je pense que tous les quatre ensemble ici est parfaitement logique; les réponses à ces questions sont interdépendantes. –

Répondre

6

Eh bien, puisque tout tourne sur IP, une option serait d'utiliser IPSec entre vos nœuds. Les connexions VPN cryptées pourraient également faire l'affaire. Ni l'un ni l'autre n'imposent de changements du côté d'Erlang, et les programmes Erlang ne savent pas que le chiffrement est en cours, sauf dans le cas (rare) d'attaques qui provoquent l'échec de la communication. comme si l'autre nœud était en panne.

+2

+1 vrai; mais non trivial. – Richard

+1

En effet. Je ne suis pas sûr qu'il existe une solution triviale à ce problème. –

+0

Je suis enclin à accepter cette réponse parce que; cela a du sens et cela semble être le plus fort. Compte tenu de la "façon unix" cela élimine d'avoir à ajouter du code à l'implémentation d'erlang. Rendre plus élégant. Merci! – Richard

1

Il y a essentiellement deux options:

  1. Utilisez SSL pour connecter les noeuds Erlang comme décrit on Trap Exit
  2. Utiliser mécanismes IP underlaying comme VPN ou IPSEC
+3

-1 ancien; L'article de trapexit a été écrit en 2007 et l'auteur espère inclure quelques corrections qu'il a faites. Apparemment SSL est une option (je ne vois pas encore où), cependant, on ne peut pas contrôler le port comme il l'a dit. – Richard

3

Vous pouvez utiliser un tunnel SSH pour passer toutes les communications erlang à travers elle, en utilisant le paramètre ssh -rsh, vous voudrez configurer une authentification basée sur des certificats pour ssh (c'est à dire. pas de mot de passe). Ensuite, vous pouvez simplement utiliser quelque chose le long des lignes de ssh -RSH

ERL ....

Pour plus de détails, s'il vous plaît voir:

+0

En ce qui concerne «stunnel» ... pour être efficace, il faut savoir quels ports erlang va utiliser. Je n'ai pas été en mesure d'identifier cela ... et en fait, on a dit qu'ils ont du lièvre à clouer. J'ai lu le reste de votre réponse et j'ai suivi les liens. Bien que ce soit une fonctionnalité intéressante ... et pourtant mal documentée ... elle ne répond pas à ma question qui concerne le RPC. – Richard

1

Ceci est maintenant possible hors de la boîte avec l'utilisation du module de distribution personnalisé inet_tls_dist. Il existe un guide in the documentation sur la façon d'utiliser le module inet_tls_dist en tant que module de distribution pour obtenir des communications cryptées entre les nœuds de cluster. Je ne suis pas sûr quand toutes ces fonctionnalités ont été introduites, mais je sais qu'ils sont présents dans Erlang 18.2 et plus récent.

Erlang Solutions a également écrit un blog post on this.

Questions connexes