web-dev-qa-db-fra.com

Comment puis-je publier des données à partir d'un réseau privé sans ajouter de lien bidirectionnel à un autre réseau

Je me demandais simplement comment je pouvais construire un réseau privé où il est physiquement impossible d'accéder de l'extérieur, mais j'ai toujours la possibilité de publier des données sur un serveur distant. À titre d'exemple: disons que j'ai un réseau d'appareils qui contrôle une sorte d'infrastructure critique et je ne veux pas que quiconque puisse y accéder, sauf pour les personnes sur place. Cependant, je continuerais à lier pour envoyer des informations de diagnostic sans délai notable à un serveur distant accessible depuis Internet.

Hypothèses concernant l'attaquant:

  • peut pénétrer dans n'importe quel système connecté à Internet
  • n'a pas d'accès physique au réseau privé

Nous ne pouvons donc pas simplement mettre un serveur qui agit comme un pare-feu entre le réseau public et le réseau privé, car chaque logiciel a des failles et l'attaquant aurait accès au réseau privé dès que le pare-feu a été cassé (sauf si nous avions un pare-feu où les règles sont intégrées dans le matériel ou pour toute autre raison impossible à modifier sans accès physique. Existe-t-il de tels périphériques?)

Ce qui pourrait résoudre le problème, c'est un appareil qui ne permet physiquement qu'une communication unidirectionnelle (dans notre cas, du réseau privé au réseau public). Je ne sais pas s'il existe de tels appareils, mais j'ai eu quelques idées:

  • utilisez tout type de support en écriture seule, comme les CD-ROM. Problèmes: latence élevée et nécessite du matériel spécialisé pour déplacer automatiquement les CD entre les machines.
  • configuration de l'imprimante/scanner papier: utilisez une imprimante dans votre réseau privé qui alimente directement un scanner connecté au réseau public. La latence est réduite à quelques secondes, mais sujette aux erreurs en raison de l'OCR.
  • Communication par fibre optique: sur le côté du récepteur, retirez physiquement l'émetteur optique (ou retirez le récepteur de l'autre côté), donc seule la communication unidirectionnelle est possible. Cela ne fonctionnera probablement pas avec Ethernet (existe-t-il des protocoles réseau qui gèrent correctement la communication unidirectionnelle?)

Avant de continuer à me ridiculiser parce que j'ai raté la solution évidente, j'aimerais entendre vos commentaires à ce sujet :)

23
Klamann

Vous pouvez utiliser un port série. Par défaut, il y a deux lignes de données, une pour chaque direction, plus un fil de terre (ce qui n'est pas pertinent ici). En déconnectant la ligne appropriée, vous pouvez empêcher la communication dans une certaine direction.

C'est vraiment facile à utiliser, au niveau très basique, je pense que vous pouvez exécuter quelque chose comme echo hello >> /dev/ttyS0 et recevez-le avec cat /dev/ttyS0 de l'autre côté. Il n'y a pas de pile réseau compliquée à contourner (ce qui empêcherait les communications unidirectionnelles car cela traiterait le manque de réponse comme une perte de paquets) et la plupart des langues ont des bibliothèques faciles à utiliser pour parler sur les ports série.

Voici un exemple dans Python sur la façon d'envoyer du JSON en série:

import serial, json
s = serial.Serial('/dev/ttyUSB0')
data = json.dumps({"status": "OK", "uptime": 60}).encode("utf-8") # make UTF-8 encoded JSON
s.write(data + "\n") # send the JSON over serial with a newline at the end
37
André Borie

J'aime combien mes performances de recherche augmentent dès que j'ai fini de poster ma question; D

Wikipédia à la rescousse:

  • " Sneakernet est un terme informel décrivant le transfert d'informations électroniques en déplaçant physiquement des supports (...) d'un ordinateur à un autre; plutôt que de transmettre les informations sur un réseau informatique."
  • "Un réseau unidirectionnel (également appelé passerelle de sécurité unidirectionnelle ou diode de données) est un dispositif ou dispositif réseau permettant aux données de voyager uniquement dans une direction, utilisé pour garantir la sécurité des informations."
  • "Un espace d'air , un mur d'air ou un espace d'air est une mesure de sécurité du réseau utilisée sur un ou plusieurs ordinateurs pour garantir qu'un réseau informatique sécurisé est physiquement isolé des réseaux non sécurisés"
  • voir aussi: Malware Air gap

Et il y a en fait des entreprises qui vendent des liaisons réseau fibre optique piratées . Ils ont dû développer leurs propres protocoles réseau, même si je n'ai pas pu trouver de spécifications sur ceux-ci jusqu'à présent ...

16
Klamann

Ethernet

Ethernet 100 Mbits commun peut être facilement rendu physiquement unidirectionnel en coupant quelques fils. Les protocoles réseau standard nécessitent des communications bidirectionnelles, et assurer la livraison est impossible dans un réseau unidirectionnel (puisque l'expéditeur ne peut obtenir aucune confirmation si un message a été reçu ou perdu), mais vous pouvez certainement écrire vous-même une petite pile réseau personnalisée - une application d'un côté, envoyer les données (en dupliquant éventuellement chaque message et en incluant des sommes de contrôle qui permettent la récupération des erreurs) sous forme de trames Ethernet brutes; et une application de l'autre côté qui assemble un flux de données à partir d'eux. Il existe des bibliothèques de niveau relativement élevé pour travailler avec de telles données, par ex. http://www.secdev.org/projects/scapy/ .

Ce n'est pas quelque chose qui fonctionnera hors de la boîte, mais pas aussi dur, qui pourrait être dans les limites d'un projet de devoirs d'université.

6
Peteris

Quelques idées:

  • Et quelque chose comme l'Electric Imp?

https://electricimp.com/aboutus/faq/

Il semble utiliser une petite diode opto pour communiquer.

  • Ou que dire de cette bibliothèque Javascript qui utilise des sons ultrasoniques émanant de votre haut-parleur. Il suffit de mettre un micro mais aucun haut-parleur sur la machine réceptrice?

https://github.com/borismus/sonicnet.js

  • Voici une implémentation en direct de la façon hors canal de communiquer unidirectionnellement:

https://youtu.be/w6lRq5spQmc

Apparemment, le chromecast Google utilise une partie de cela. Cela pourrait donc être une pile de codes fructueuse à parcourir. Bien que ce ne soit pas pour les applications de sécurité, mais peut être pertinent.

  • Découvrez la technologie derrière la plate-forme Infosound de Yamaha. Cela semble également une communication unidirectionnelle sur un canal bruyant:

https://play.google.com/store/apps/details?id=com.yamaha.Android.infosoundbrowser&hl=en

Bien sûr, finalement, tout dépendra de la bande passante dont vous avez besoin?

2
curious_cat

Tout protocole nécessitant une livraison garantie nécessite une communication bidirectionnelle .

Un canal de communication unidirectionnel doit:

  1. sacrifier une livraison fiable, ou
  2. avoir un chemin de retour, pour retourner les accusés de réception.

Une mise en œuvre simple de la livraison unidirectionnelle peut être effectuée avec la prise audio 3,5 mm. À l'aide d'un modulateur logiciel, vous convertissez les données d'octets en un fichier son et jouez le son sur un port de sortie audio. Vous connecteriez ce port de sortie audio à l'aide d'une prise audio TRS mâle à mâle à l'entrée audio d'un autre ordinateur. Sur l'autre machine, vous utilisez un démodulateur logiciel pour interpréter le son en données d'octets. À ce stade, vous disposez d'un modem logiciel de base .

Si vous n'avez pas besoin d'une livraison fiable, cela suffit.

Si vous souhaitez une livraison fiable, vous devrez ajouter un chemin de retour pour transmettre les accusés de réception (ACK) dans une simple pile de type TCP. L'expéditeur doit envoyer le paquet de données, puis attendre un ACK avant d'envoyer le prochain paquet de données.Si aucun ACK de ce type n'est reçu après une durée prédéterminée, l'expéditeur doit renvoyer les données. Le chemin de retour peut être un simple bip sur une autre ligne audio.

Si vous n'avez pas besoin d'un débit élevé, cela suffit.

Si vous souhaitez un débit élevé, vous devrez ajouter une fenêtre de transmission. À ce stade, vous voudrez probablement envisager de modifier une implémentation logicielle d'une pile TCP.

2
Lie Ryan

Si votre réseau de développement (ou de production) est vraiment limité, alors une option est d'avoir un PC sacrificiel sur Internet qui peut être utilisé pour communiquer avec votre service d'hébergement.

Vous pouvez utiliser sneakernet pour déplacer des fichiers qui doivent être téléchargés, puis SSH dans votre hôte à l'aide de FileZilla ou équivalent.

Le PC sacrificiel doit être imagé avant la connexion à Internet (en utilisant Macrium ou Acronis ou équivalent) afin que vous puissiez toujours le restaurer dans un état connu et bon.

Il y a des histoires d'ordinateurs qui sont sondés et/ou piratés quelques minutes après avoir été connectés à Internet, donc un bon routeur NAT pour cela vous donnera au moins une étape de protection. Assurez-vous de désactiver uPnP, bien sûr.

Si vous êtes vraiment paranoïaque, vous pouvez restaurer la bonne image connue de ce PC à chaque fois que vous y déplacez des fichiers. Certains logiciels malveillants peuvent revenir à l'intérieur via une mémoire USB, et si ce PC est compromis, vous pouvez infecter le réseau déconnecté.

Une maxime est que les arbres les plus hauts sont coupés en premier pour leur bois. Donc, si vous êtes une cible de grande valeur avec un attaquant sophistiqué, vous pouvez être pwned.

Tout cela étant dit, le courrier électronique à l'extérieur est probablement votre plus grande exposition, car vos PC invitent littéralement ce contenu à l'intérieur. Il est toujours unidirectionnel dans le sens où vos ordinateurs établissent le contact avec le serveur de messagerie. Il peut donc empêcher les vers de pénétrer mais pas lancer des attaques de phishing.

- EDIT: @Gilsham suggère d'utiliser un LiveCD pour effectuer les transferts. C'est une bonne idée.

Lorsque j'utilisais Kali Sana (basé sur Debian), il permettait un LiveCD en mode "persistant", vous pouvez donc l'utiliser pour stocker le fichier sur le CD puis le démarrer sur le PC sacrificiel, faire le téléchargement, puis détruire le CD.

Si vous n'utilisez pas le mode persistant, utilisez n'importe quel LiveCD (lecture seule), puis montez le ou les fichiers sur un autre CD-ROM.

Ce serait vraiment unidirectionnel.

1
SDsolar
0
nealmcb