Apresentando o Oniux, ferramenta de isolamento de Tor em nível de kernel para apps Linux
(blog.torproject.org)- Oniux é uma ferramenta de isolamento em nível de kernel que força todo o tráfego de apps Linux a passar pela rede Tor, minimizando o risco de vazamento de dados
- Usando namespaces do Linux, isola cada app em um ambiente de rede independente e implementa comunicação segura via Tor
- Diferente do torsocks, funciona também com binários estáticos ou apps que não usam libc, bloqueando rotas diretas de exfiltração de dados por apps maliciosos
- O Oniux é baseado no novo Arti e onionmasq e foi escrito em Rust, reforçando tanto a segurança quanto a extensibilidade
- No momento, o Oniux é uma ferramenta experimental e, em termos de estabilidade, difere do torsocks já consolidado, mas vem chamando atenção como solução de próxima geração para isolamento de tráfego Tor
Apresentando o Oniux
O Oniux é um utilitário de linha de comando que eleva drasticamente o nível de proteção da privacidade por meio do isolamento da rede Tor no Linux. Ele foi projetado para que desenvolvedores, ativistas e pesquisadores possam bloquear completamente a possibilidade de vazamento de dados causada por configurações de proxy incorretas ou pequenos descuidos. O Oniux funciona sobre Arti e onionmasq, isolando qualquer app Linux em um namespace de rede separado e forçando todo o tráfego a passar apenas pela rede Tor.
O que são namespaces no Linux
- Namespaces são um dos principais mecanismos de isolamento do kernel Linux
- Eles separam logicamente parte dos recursos de uma aplicação do restante do sistema
- Recursos diversos como rede, montagens e processos podem ser isolados com essa técnica
- Cada namespace separa recursos do sistema operacional, sendo usado em ambientes de contêiner e para fins de segurança
- Soluções de contêiner conhecidas, como o Docker, usam namespaces como princípio básico
O significado de combinar Tor e namespaces
- Namespaces protegem o acesso à rede Tor de aplicações arbitrárias com isolamento completo
- Cada app é colocado de forma independente em um namespace de rede, com exposição apenas de uma interface personalizada chamada
onion0 - Como o app não consegue acessar interfaces de rede globais do sistema operacional, como
eth0, é possível maximizar a segurança - Ao contrário da abordagem de proxy baseada em SOCKS, não há risco de vazamento direto de tráfego por erro ou falha
Comparação entre Oniux e torsocks
- O torsocks faz hook das funções de rede da libc usando a técnica de LD_PRELOAD para redirecioná-las ao proxy SOCKS do Tor
- O Oniux opera com isolamento por namespace, impedindo 100% do vazamento de tráfego mesmo em binários estáticos ou apps feitos em Zig, por exemplo
- Principais pontos de comparação
- Oniux: não requer daemon Tor separado, usa namespaces, oferece suporte a todos os apps, bloqueia até syscalls raw de apps maliciosos, exclusivo para Linux, novo/experimental, baseado em Arti, escrito em Rust
- Torsocks: requer daemon Tor, depende de hacking via
ld.so, suporta apenas apps ligados à libc, syscalls raw podem vazar, multiplataforma, validado por mais de 15 anos, motor CTor, escrito em C
Como usar o Oniux
- É necessário um sistema Linux com ambiente de desenvolvimento Rust configurado
- Pelo terminal, é possível instalar e executar o oniux de forma simples
Principais exemplos de uso:
- $ oniux curl https://icanhazip.com # Consultar o IP obtido via Tor
- $ oniux bash # Executar um shell inteiro com isolamento via Tor
- $ oniux hexchat # Também é possível forçar apps GUI a passar pelo Tor
- $ RUST_LOG=debug oniux curl ... # Suporte a logging para depuração
Como funciona internamente
- O Oniux usa a syscall
clone(2)para criar um processo filho em namespaces independentes de rede, montagem, PID e usuário - O processo filho monta
/procseparadamente e ajusta privilégios com mapeamento de UID/GID - Um arquivo temporário com informações de nameserver é montado por bind em
/etc/resolv.conf, forçando o uso de um resolvedor de nomes baseado em Tor - O
onionmasqcria uma interface TUN (onion0) e faz a atribuição e configuração do IP - O processo filho passa o fd da interface ao processo pai por meio de um socket de domínio Unix, minimizando privilégios
- Por fim, ele usa recursos do Rust para executar o comando informado pelo usuário
O caráter experimental do Oniux
- O Oniux é uma versão inicial construída sobre novas tecnologias como Arti e onionmasq
- Neste momento ele funciona corretamente, mas ainda carece da longa experiência e maturidade acumuladas por ferramentas como o torsocks
- Para garantir estabilidade e melhorar o desempenho, são necessários diversos feedbacks de uso real
Créditos e apoio
- Agradecimentos a desenvolvedores como o smoltcp, uma pilha IP baseada em Rust, e 7ppKb5bW, que orientou sobre o uso de namespaces de usuário no desenvolvimento
- O projeto oniux é mantido com apoio do The Tor Project e da comunidade, e recomenda-se apoio para o avanço da privacidade e do software livre
2 comentários
O Tor parece não ser ruim para privacidade, mas não tenho certeza se é uma ferramenta adequada para anonimato. Também há relatos de que os nós de saída já estão sob controle de órgãos estatais.
Comentários do Hacker News
torsocketorifytambém cumprem basicamente o mesmo papel, mas passam uma sensação menor de robustez.cargo install --git https://gitlab.torproject.org/tpo/core/oniux oniux@0.5.0torsocks, o tráfego sairia por um daemon local do tor. Mas mesmo desligando o daemon local do tor, ooniuxcontinua funcionando normalmente, enquantotorifyetorsocksnão funcionam. Pela documentação, é realmente assim que funciona. Um fato bem curioso. Também funcionou bem no docker, mas precisei usar a opção--privileged, e tive a experiência de simplesmente copiar o binário para um contêinerdebian:12e tudo funcionar normalmentedocker run -it --rm --privileged -v "$PWD/oniux:/usr/bin/oniux" debian:12https://tpo.pages.torproject.net/core/arti/
orjail, mas oorjailnão teve commits em 4 anos e ainda assim continua funcionando bem como script de shell junto com ferramentasiptables/iprouteO
orjailtambém tem uma opção de isolamento adicional comfirejail, algo que o Oniux ainda não temhttps://github.com/orjail/orjail/blob/master/usr/sbin/orjail
https://raw.githubusercontent.com/orjail/orjail/master/usr/sbin/orjail
chrome.chromenão tem as várias estratégias de anti-fingerprinting que existem no Tor Browser. Ao usar um navegador comum, você acaba se destacando ainda mais.syncthingpor um proxy socks5https://github.com/acheong08/syndicate
hexchat, mas se ele aproveitar as configurações de perfil do usuário, será que o nome de usuário do IRC não vaza?Ao iniciar um navegador, coisas como cookies também podem vazar.