¿Cómo puedo publicar datos desde una red privada sin agregar un enlace bidireccional a otra red?

22

Me preguntaba cómo podría construir una red privada donde sea físicamente imposible obtener acceso desde el exterior, pero aún tengo la opción de publicar datos en algún servidor remoto. A modo de ejemplo: digamos que tengo una red de dispositivos que controla algún tipo de infraestructura crítica y no quiero que nadie pueda acceder a ella, excepto las personas en el sitio. Sin embargo, seguiría enlazando para enviar información de diagnóstico sin demora notable a un servidor remoto al que se puede acceder desde Internet.

Suposiciones sobre el atacante:

  • puede entrar en cualquier sistema que esté conectado a internet
  • no tiene acceso físico a la red privada

Por lo tanto, no podemos simplemente poner un servidor que actúe como un servidor de seguridad entre la red pública y privada, ya que cada software tiene fallas y el atacante podría acceder a la red privada tan pronto como se haya roto el servidor de seguridad (excepto si teníamos un servidor de seguridad donde las reglas están integradas en el hardware o por algún otro motivo imposible de modificar sin acceso físico. ¿Existen dispositivos de este tipo?)

Lo que podría resolver el problema es un dispositivo que solo permite físicamente la comunicación unidireccional (en nuestro caso, de la red privada a la pública). No sé si existen dispositivos de este tipo, pero se me ocurrieron algunas ideas:

  • use cualquier tipo de medio de solo escritura, como CD-ROM. Problemas: alta latencia y requiere hardware especializado para mover los CD automáticamente entre las máquinas.
  • configuración de impresora / escáner de papel: tenga una impresora en su red privada que se alimente directamente a un escáner que esté conectado a la red pública. La latencia se reduce a solo unos segundos, pero es propensa a errores debido a OCR.
  • Comunicación de fibra óptica: en el costado del receptor, retire físicamente el transmisor óptico (o retire el receptor del otro lado), por lo tanto, solo es posible la comunicación unidireccional. Sin embargo, es probable que no funcione con Ethernet (¿existen protocolos de red que manejen adecuadamente la comunicación unidireccional?)

Antes de continuar haciéndome un tonto porque me he perdido la solución obvia, me encantaría escuchar tus comentarios sobre esto :)

    
pregunta Klamann 18.12.2016 - 13:18
fuente

6 respuestas

36

Puedes usar un puerto serie. Por defecto, hay dos líneas de datos, una por cada dirección, más un cable de tierra (que aquí no es relevante). Al desconectar la línea adecuada, puede evitar la comunicación en una dirección determinada.

Es realmente fácil de usar, en un nivel muy básico, creo que puedes ejecutar algo como echo hello >> /dev/ttyS0 y recibirlo con cat /dev/ttyS0 en el otro lado. No hay una pila de red complicada para evitar (lo que evitaría las comunicaciones unidireccionales, ya que trataría la falta de respuesta como pérdida de paquetes) y la mayoría de los idiomas tienen bibliotecas fáciles de usar para hablar sobre puertos serie.

Aquí hay un ejemplo en Python sobre cómo enviar algunos JSON a través de una serie:

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
    
respondido por el André Borie 18.12.2016 - 18:02
fuente
16

Me encanta cuánto aumenta mi rendimiento de búsqueda tan pronto como termino de publicar mi pregunta; D

Wikipedia al rescate:

  • " Sneakernet es un término informal que describe la transferencia de información electrónica al mover físicamente los medios (...) desde uno computadora a otra, en lugar de transmitir la información a través de una red de computadoras ".
  • "Una red unidireccional (también denominada pasarela de seguridad unidireccional o diodo de datos) es un dispositivo o dispositivo de red. permitiendo que los datos viajen solo en una dirección, utilizados para garantizar la seguridad de la información ".
  • "Un espacio de aire , pared de aire o espacio de aire es una medida de seguridad de la red empleada en uno o más computadoras para garantizar que una red informática segura esté físicamente aislada de las redes no seguras "
  • vea también: malware de brecha de aire

Y en realidad hay compañías que venden enlaces de redes de fibra óptica pirateados . Tuvieron que desarrollar sus propios protocolos de red, aunque hasta ahora no pude encontrar ninguna especificación sobre ellos ...

    
respondido por el Klamann 18.12.2016 - 13:49
fuente
6

Ethernet

Common 100mbit Ethernet puede hacerse fácilmente físicamente unidireccional cortando algunos cables. Los protocolos de red estándar requieren comunicaciones bidireccionales, y garantizar que la entrega sea imposible en una red unidireccional (ya que el remitente no puede obtener ninguna confirmación si se recibió o perdió un mensaje), pero definitivamente puede escribir una pequeña pila de red personalizada usted mismo: una aplicación por un lado, enviar los datos (posiblemente duplicar cada mensaje e incluir sumas de comprobación que permitan la recuperación de errores) como marcos de Ethernet sin procesar; y una aplicación en el otro lado que ensambla un flujo de datos de ellos. Existen bibliotecas de nivel relativamente alto disponibles para trabajar con dichos datos, p. Ej. enlace .

No es algo que funcione fuera de la caja, pero tampoco es tan difícil, eso podría estar dentro de los límites de un proyecto de tarea universitaria.

    
respondido por el Peteris 18.12.2016 - 15:39
fuente
2

Un par de ideas:

  • ¿Qué pasa con algo como el Imp eléctrico?

enlace

Parece que usa un pequeño opto diodo para comunicarse.

  • O, ¿qué pasa con esta biblioteca de Javascript que usa sonidos ultrasónicos que emanan de su altavoz? ¿Simplemente coloque un micrófono pero no el altavoz en la máquina receptora?

enlace

  • Aquí hay una implementación en vivo de la forma fuera del canal para comunicarse de manera unidireccional:

enlace

Al parecer, el chromecast de Google utiliza algo de esto. Así que eso podría ser un codestack fructífero para navegar. Aunque no es para aplicaciones de seguridad, pero aún puede ser relevante.

  • Compruebe la tecnología detrás de la plataforma Infosound de Yamaha. Esto también parece una comunicación unidireccional a través de un canal ruidoso:

enlace

Por supuesto, finalmente, todo dependerá de cuál es el ancho de banda que necesita.

    
respondido por el curious_cat 19.12.2016 - 13:15
fuente
2

Cualquier protocolo que requiera entrega garantizada requiere comunicación bidireccional .

Un canal de comunicación unidireccional tiene que:

  1. sacrificar la entrega confiable, o
  2. tiene una ruta de retorno, para devolver reconocimientos.

Se puede realizar una implementación simple de la entrega unidireccional con el conector de audio de 3.5 mm. Usando un modulador de software, convierte los datos de octetos en un archivo de sonido y reproduce el sonido a través de un puerto de salida de audio. Conectarías este puerto de salida de audio usando un conector de audio TRS macho a macho a la entrada de audio de otra computadora En la otra máquina, utiliza un demodulador de software para interpretar el sonido a los datos de octeto. En este punto, tiene un módem de software básico .

Si no necesita una entrega confiable, esto es suficiente.

Si desea una entrega confiable, deberá agregar una ruta de retorno para transmitir los recibos de entrega (ACK) en una simple pila similar a TCP. El remitente debe enviar el paquete de datos y luego esperar un ACK antes de enviar el siguiente paquete de datos, si no se recibe dicho ACK después de un período de tiempo predeterminado, el remitente debe reenviar los datos. La ruta de retorno puede ser un simple pitido en otra línea de audio.

Si no necesita un alto rendimiento, esto es suficiente.

Si desea un alto rendimiento, deberá agregar una ventana de transmisión. En este punto, probablemente querrá ver la modificación de una implementación de software de una pila TCP.

    
respondido por el Lie Ryan 19.12.2016 - 17:34
fuente
1

Si su red de desarrollo (o producción) está realmente sin espacios, entonces una opción es tener una PC de sacrificio en Internet que pueda usarse para comunicarse con su servicio de alojamiento.

Puede usar sneakernet para mover archivos que necesitan ser cargados, luego SSH en su host usando FileZilla o equivalente.

La PC sacrificial debe tomarse una imagen antes de la conexión a Internet (usando Macrium o Acronis o equivalente) para que siempre pueda revertirla a un estado bueno y conocido.

Hay historias de computadoras que se prueban y / o piratean a los pocos minutos de estar conectadas a Internet, por lo que un enrutador NAT decente le brindará al menos una etapa de protección. Asegúrese de desactivar uPnP, por supuesto.

Si eres realmente paranoico, puedes restaurar la buena imagen conocida de tu PC, cada vez que le muevas archivos. Algunos programas maliciosos pueden volver a ingresar a través de la memoria USB, y si esa PC se ve comprometida, puede infectar la red desconectada.

Una máxima es que los árboles más altos se cortan primero por su madera. Entonces, si eres un objetivo de alto valor con un atacante sofisticado, puedes ser pwned.

Todo lo que se dice, el correo electrónico al exterior es probablemente su mayor exposición, ya que sus PC literalmente invitan ese contenido. Todavía es unidireccional en el sentido de que sus computadoras inician el contacto con el servidor de correo. Por lo tanto, puede mantener alejados a los gusanos pero no a los ataques de phishing.

- EDITAR: @Gilsham sugiere usar un LiveCD para hacer las transferencias. Esa es una gran idea.

Cuando estaba usando Kali Sana (basado en Debian), permitía un LiveCD en modo "persistente", así que podrías usarlo para almacenar el archivo en el CD y luego iniciarlo en la PC de sacrificio, hacer la carga, Luego destruye el CD.

Si no usa el modo persistente, use cualquier LiveCD (solo lectura), luego haga que los archivos se monten en otro CD-ROM.

Eso sería verdaderamente unidireccional.

    
respondido por el SDsolar 18.12.2016 - 17:06
fuente

Lea otras preguntas en las etiquetas