Come posso pubblicare dati da una rete privata senza aggiungere un collegamento bidirezionale ad un'altra rete

23

Mi stavo chiedendo come creare una rete privata in cui è fisicamente impossibile accedere dall'esterno, ma ho comunque la possibilità di pubblicare dati su un server remoto. Ad esempio: diciamo che ho una rete di dispositivi che controllano una sorta di infrastruttura critica e non voglio che nessuno possa accedervi tranne per le persone sul posto. Tuttavia, sarei ancora in grado di inviare informazioni diagnostiche senza notevole ritardo a un server remoto a cui è possibile accedere da Internet.

Presupposti sull'attaccante:

  • può entrare in qualsiasi sistema connesso a Internet
  • non ha accesso fisico alla rete privata

Quindi non possiamo semplicemente mettere un server che funge da firewall tra la rete pubblica e privata, perché ogni software ha dei difetti e l'attaccante potrebbe ottenere l'accesso alla rete privata non appena il firewall è stato interrotto (tranne se avevamo un firewall in cui le regole sono incorporate nell'hardware o per qualche altra ragione impossibile da modificare senza l'accesso fisico. Esistono tali dispositivi?)

Ciò che potrebbe risolvere il problema è un dispositivo che consente fisicamente solo la comunicazione unidirezionale (nel nostro caso dalla rete privata alla rete pubblica). Non so se ci sono tali dispositivi, ma ho trovato alcune idee:

  • utilizzare qualsiasi tipo di supporto di sola scrittura, come i CD-ROM. Problemi: alta latenza e richiede hardware specializzato per spostare automaticamente i CD tra le macchine.
  • impostazione stampante / scanner per carta: avere una stampante nella rete privata che si alimenta direttamente in uno scanner collegato alla rete pubblica. Latenza ridotta a pochi secondi, ma soggetta a errori a causa dell'OCR.
  • Comunicazione in fibra ottica: sul lato del ricevitore, rimuovere fisicamente il trasmettitore ottico (o rimuovere il ricevitore dall'altra parte), quindi è possibile solo una comunicazione unidirezionale. Tuttavia, probabilmente non funzionerà con Ethernet (esistono dei protocolli di rete che gestiscono correttamente le comunicazioni unidirezionali?)

Prima di continuare a prendere in giro me stesso perché ho perso la soluzione ovvia, mi piacerebbe sentire i vostri commenti su questo:)

    
posta Klamann 18.12.2016 - 13:18
fonte

7 risposte

37

È possibile utilizzare una porta seriale. Di default ci sono due linee dati, una per ogni direzione, più un filo di terra (che è irrilevante qui). Scollegando la linea appropriata è possibile impedire la comunicazione in una determinata direzione.

È davvero facile da usare, a livello di base penso che tu possa eseguire qualcosa come echo hello >> /dev/ttyS0 e riceverlo con cat /dev/ttyS0 dall'altra parte. Non c'è uno stack di rete complicato da aggirare (il che impedirebbe le comunicazioni unidirezionali in quanto tratterebbe la mancanza di risposta come perdita di pacchetti) e la maggior parte delle lingue hanno librerie facili da usare per parlare su porte seriali.

Ecco un esempio in Python su come inviare alcuni JSON su seriale:

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
    
risposta data 18.12.2016 - 18:02
fonte
16

Mi piace quanto aumenta la mia performance di ricerca non appena ho finito di pubblicare la mia domanda; D

Wikipedia per il salvataggio:

  • " Sneakernet è un termine informale che descrive il trasferimento di informazioni elettroniche spostando fisicamente i media (...) da una computer a un altro, piuttosto che trasmettere le informazioni su una rete di computer. "
  • "Una rete unidirezionale (indicata anche come gateway di sicurezza unidirezionale o diodo dati) è un'appliance o dispositivo di rete consentendo ai dati di viaggiare solo in una direzione, utilizzati per garantire la sicurezza delle informazioni. "
  • "Un spazio aereo , air wall o air gap è una misura di sicurezza della rete utilizzata su uno o più computer per garantire che una rete di computer sicura sia fisicamente isolata da reti non protette "
  • guarda anche: malware Air gap

E ci sono in realtà aziende che vendono collegamenti di rete in fibra ottica compromessi . Hanno dovuto sviluppare i loro protocolli di rete, anche se non sono stato in grado di trovare alcuna specifica su quelli finora ...

    
risposta data 18.12.2016 - 13:49
fonte
6

Ethernet

Ethernet comune a 100 mbit può essere facilmente resa fisicamente unidirezionale tagliando alcuni fili. I protocolli di rete standard richiedono comunicazioni bidirezionali e assicurano che la consegna sia impossibile in una rete unidirezionale (poiché il mittente non può ricevere alcuna conferma se un messaggio è stato ricevuto o perso), ma è possibile scrivere autonomamente un piccolo stack di rete personalizzato: un'app da un lato inviando i dati (possibilmente duplicando ogni messaggio e includendo i checksum che consentono il recupero degli errori) come frame raw ethernet; e un'app dall'altra parte che assembla un flusso di dati da loro. Esistono librerie di livello relativamente alto disponibili per lavorare con tali dati, ad es. link .

Non è qualcosa che funzionerà fuori dagli schemi, ma non è così difficile, che potrebbe rientrare nei limiti di un progetto per i compiti del college.

    
risposta data 18.12.2016 - 15:39
fonte
2

Coppia di idee:

  • Che mi dici di qualcosa come l'Electric Imp?

link

Sembra che usi un piccolo diodo opto per comunicare.

  • O che dire di questa libreria Javascript che utilizza suoni ultrasonici provenienti dal tuo altoparlante. Basta mettere un microfono ma nessun altoparlante sulla macchina ricevente?

link

  • Ecco una implzione dal vivo del modo fuori dal canale di comunicare unidirezionalmente:

link

A quanto pare il Google Chromecast ne usa un po '. In modo che potrebbe essere un codestack fruttuoso da esplorare. Sebbene non sia per applicazioni di sicurezza, potrebbe comunque essere rilevante.

  • Scopri la tecnologia alla base della piattaforma Infosound di Yamaha. Anche questa sembra una comunicazione unidirezionale su un canale rumoroso:

link

Ovviamente, tutto dipenderà da quale è la larghezza di banda che ti serve?

    
risposta data 19.12.2016 - 13:15
fonte
2

Tutti i protocolli che richiedono la consegna garantita richiedono la comunicazione bidirezionale .

Un canale di comunicazione unidirezionale deve:

  1. sacrificare la consegna affidabile, o
  2. ha un percorso di ritorno, per restituire i riconoscimenti.

Una semplice implementazione della consegna unidirezionale può essere eseguita con il jack audio da 3,5 mm. Usando un modulatore software, converti i dati dell'ottetto in un file audio e riproduci l'audio su una porta di uscita audio. Collegherebbe questa porta di uscita audio usando un jack audio TRS maschio-maschio all'audio di un altro computer in Sull'altra macchina, si utilizza un demodulatore software per interpretare il suono ai dati dell'ottetto. A questo punto, disponi di un modem software di base .

Se non hai bisogno di consegna affidabile, questo è sufficiente.

Se si desidera una consegna affidabile, è necessario aggiungere un percorso di ritorno per trasmettere le ricevute di consegna (ACK) in un semplice stack simile a TCP. Il mittente deve inviare il pacchetto di dati e quindi attendere un ACK prima di inviare il pacchetto successivo di dati, se tale ACK non viene ricevuto dopo un periodo di tempo predeterminato, il mittente deve inviare nuovamente i dati. Il percorso di ritorno può essere un semplice segnale acustico su un'altra linea audio.

Se non hai bisogno di un throughput elevato, questo è sufficiente.

Se si desidera un throughput elevato, è necessario aggiungere una finestra di trasmissione. A questo punto, probabilmente vorrai dare un'occhiata alla modifica di un'implementazione software di uno stack TCP.

    
risposta data 19.12.2016 - 17:34
fonte
1

Se la tua rete di sviluppo (o di produzione) è veramente a cielo aperto, un'opzione è quella di avere un PC sacrificale su Internet che può essere usato per comunicare con il tuo servizio di hosting.

Potresti usare sneakernet per spostare i file che devono essere caricati, quindi SSH nel tuo host usando FileZilla o equivalente.

Il PC sacrificale dovrebbe essere ripreso prima della connessione a Internet (utilizzando Macrium o Acronis o equivalente) in modo da poterlo ripristinare sempre in uno stato noto e buono.

Ci sono storie di computer che vengono analizzati e / o hackerati in pochi minuti dopo essere stati connessi a Internet, quindi un router NAT decente fornirà almeno una fase di protezione. Assicurati di disabilitare uPnP, naturalmente.

Se sei veramente paranoico, puoi ripristinare la nota e buona immagine del PC ogni volta che trasferisci i file su di essa. Alcuni malware possono tornare indietro tramite la memoria USB e, se il PC viene compromesso, potresti infettare la rete scollegata.

Una massima è che gli alberi più alti vengono tagliati prima per il loro legname. Quindi se sei un bersaglio di alto valore con un aggressore sofisticato, puoi essere pwned.

Tutto ciò che viene detto, e-mail verso l'esterno è probabilmente la tua più grande esposizione, perché i tuoi PC invitano letteralmente quel contenuto all'interno. È ancora unidirezionale nel senso che i tuoi computer avviano il contatto con il server di posta. Quindi può tenere fuori i worm ma non gli attacchi di spear phishing.

- EDIT: @Gilsham suggerisce di usare un LiveCD per fare i trasferimenti. Questa è una grande idea.

Quando usavo Kali Sana (basato su Debian) permetteva un LiveCD in modalità "persistente", quindi puoi usarlo per memorizzare il file sul CD e poi avviarlo sul PC sacrificale, fare il caricamento, quindi distruggi il CD.

Se non usi la modalità persistente, usa un qualsiasi LiveCD (sola lettura), poi i file sono montati su un altro CD-ROM.

Sarebbe davvero unidirezionale.

    
risposta data 18.12.2016 - 17:06
fonte