Presentación de Oniux, una herramienta de aislamiento de Tor a nivel de kernel para apps de Linux
(blog.torproject.org)- Oniux es una herramienta de aislamiento a nivel de kernel que fuerza que todo el tráfico de las apps de Linux pase por la red Tor, minimizando el riesgo de fuga de datos
- Aprovecha los namespaces de Linux para aislar cada app en un entorno de red independiente y habilitar una comunicación segura a través de Tor
- A diferencia de torsocks, también funciona con apps que no usan libc o son binarios estáticos, bloqueando rutas directas de fuga de datos de apps maliciosas
- Oniux está escrito en Rust sobre una nueva base de Arti y onionmasq, reforzando tanto la seguridad como la escalabilidad
- Actualmente, Oniux es una herramienta experimental; aunque no tiene la misma estabilidad comprobada que torsocks, destaca como una solución de próxima generación para el aislamiento de tráfico Tor
Presentación de Oniux
Oniux es una utilidad de línea de comandos que eleva notablemente el nivel de protección de la privacidad mediante el aislamiento de red Tor en Linux. Está diseñada para que desarrolladores, activistas e investigadores puedan bloquear por completo la posibilidad de fuga de datos causada por configuraciones de proxy incorrectas o pequeños descuidos. Oniux funciona sobre Arti y onionmasq, y aísla cualquier app de Linux en un namespace de red separado para forzar que todo su tráfico se enrute únicamente por la red Tor.
Qué es un namespace de Linux
- Un namespace es una función principal de aislamiento del kernel de Linux
- Separa lógicamente ciertos recursos de una aplicación del resto del sistema
- Permite aislar distintos recursos como red, montajes y procesos
- Cada namespace separa recursos del sistema operativo, por lo que se usa en entornos de contenedores o con fines de seguridad
- Soluciones de contenedores ampliamente conocidas como Docker usan los namespaces como principio básico
Qué significa combinar Tor y namespaces
- Los namespaces protegen con aislamiento total el acceso a la red Tor de aplicaciones arbitrarias
- Cada app se coloca de forma independiente en un namespace de red, exponiendo únicamente una interfaz personalizada llamada onion0
- Como la app no puede acceder a las interfaces de red globales del sistema operativo (por ejemplo,
eth0), se puede maximizar la seguridad - A diferencia del enfoque de proxy basado en SOCKS, no existe riesgo de fuga directa de tráfico por errores o fallas
Comparación entre Oniux y torsocks
- Torsocks intercepta las funciones de red de libc mediante la técnica LD_PRELOAD para redirigirlas al proxy SOCKS de Tor
- Oniux funciona mediante aislamiento con namespaces, por lo que evita al 100% las fugas de tráfico incluso con binarios estáticos o lenguajes como Zig
- Comparación principal
- Oniux: no requiere un daemon de Tor independiente, usa namespaces, soporta todas las apps, bloquea incluso syscalls directas de apps maliciosas, solo para Linux, nuevo/experimental, basado en Arti, escrito en Rust
- Torsocks: requiere daemon de Tor, usa hackeo de ld.so, solo soporta apps enlazadas con libc, las syscalls directas pueden filtrar tráfico, multiplataforma, validado por más de 15 años, motor CTor, escrito en C
Cómo usar Oniux
- Se necesita un sistema Linux con entorno de desarrollo de Rust configurado
- Oniux puede instalarse y ejecutarse fácilmente desde la línea de comandos
Ejemplos principales de uso:
- $ oniux curl https://icanhazip.com # Consultar la IP obtenida a través de Tor
- $ oniux bash # Ejecutar todo el shell con aislamiento Tor
- $ oniux hexchat # También puede forzar el tráfico de apps GUI a través de Tor
- $ RUST_LOG=debug oniux curl ... # Soporte de logging para depuración
Funcionamiento interno
- Oniux crea un proceso hijo en namespaces independientes de red, montaje, PID y usuario mediante la syscall
clone(2) - El proceso hijo monta
/procde forma independiente y ajusta permisos con mapeo de UID/GID - Monta por bind un archivo temporal con información del nameserver en
/etc/resolv.confpara forzar el uso de un resolvedor de nombres basado en Tor - Crea una interfaz TUN (onion0) con onionmasq y luego asigna y configura la IP
- El proceso hijo transfiere el fd de la interfaz al proceso padre mediante un socket de dominio Unix y minimiza privilegios
- Finalmente, usando capacidades de Rust, ejecuta el comando ingresado por el usuario
La naturaleza experimental de Oniux
- Oniux es una versión inicial construida sobre tecnologías nuevas como Arti y onionmasq
- Aunque actualmente funciona correctamente, aún carece de la experiencia acumulada de madurez que sí tiene torsocks tras muchos años
- Se necesita retroalimentación diversa de uso real para asegurar estabilidad y mejorar el rendimiento
Créditos y apoyo
- Se expresa agradecimiento a desarrolladores como 7ppKb5bW, que brindaron consejos para el desarrollo de smoltcp, una pila IP basada en Rust, y sobre cómo aprovechar los user namespaces
- El proyecto oniux se mantiene gracias al apoyo de The Tor Project y su comunidad, y se recomienda contribuir para impulsar la privacidad y el software abierto
2 comentarios
Tor no parece estar mal para la privacidad, pero no estoy seguro de que sea una herramienta adecuada para el anonimato. También se dice que las agencias estatales ya tienen controlados los nodos de salida.
Comentarios de Hacker News
torsockytorifybásicamente cumplen el mismo papel, pero me da la impresión de que son menos robustos.cargo install --git https://gitlab.torproject.org/tpo/core/oniux oniux@0.5.0torsocks, el tráfico salía a través de un demonio local de Tor. Pero aunque apague el demonio local de Tor,oniuxsigue funcionando bien, mientras quetorifyytorsocksno. Viendo la documentación, efectivamente así está diseñado. Me pareció un dato muy curioso. También funciona bien en Docker, aunque tuve que usar la opción--privileged, y simplemente copiar el binario a un contenedordebian:12también me funcionó.docker run -it --rm --privileged -v "$PWD/oniux:/usr/bin/oniux" debian:12https://tpo.pages.torproject.net/core/arti/
Oniuxparece ser una herramienta con soporte oficial. Es parecida aorjail, aunqueorjailno ha tenido commits en 4 años y aun así sigue funcionando bien como script de shell junto con herramientasiptables/iproute.orjailtambién tiene una opción para aislamiento adicional confirejail, algo queOniuxtodavía no tiene.https://github.com/orjail/orjail/blob/master/usr/sbin/orjail
https://raw.githubusercontent.com/orjail/orjail/master/usr/sbin/orjail
socks5.https://github.com/acheong08/syndicate
hexchatcomo ejemplo, pero si se usan tal cual los ajustes del perfil del usuario, ¿no se filtraría el nombre de usuario de IRC?Si se lanza un navegador, también podrían filtrarse cosas como las cookies.
Oniuxes que no se pueda rastrear la IP de origen. Si inicias sesión en Gmail a través de Tor, pasa el mismo tipo de problema (salvo que no se use HTTPS).