3P by GN⁺ 4일전 | ★ favorite | 댓글 2개
  • Oniux는 리눅스 앱의 모든 트래픽을 Tor 네트워크로 강제 우회하여 데이터 유출 위험을 최소화하는 커널 레벨 격리 도구임
  • Linux 네임스페이스를 활용해, 각 앱을 독립된 네트워크 환경에 격리시키고 Tor를 통한 안전한 통신 구현함
  • 기존 torsocks와는 달리, libc를 사용하지 않거나 정적 바이너리에도 동작해, 악성 앱의 직접적인 데이터 유출 경로 차단함
  • Oniux는 새로운 Arti, onionmasq 기반으로 Rust 언어로 작성되어, 보안성과 확장성 모두 강화함
  • 현재 Oniux는 실험적 도구로, 안정성 면에서 검증된 torsocks와는 다르나, 차세대 Tor 트래픽 격리 솔루션으로 주목받음

Oniux 소개

Oniux는 리눅스에서 Tor 네트워크 격리를 통해 개인정보 보안 수준을 비약적으로 높이는 커맨드라인 유틸리티임. 개발자, 활동가, 연구자가 틀린 프록시 설정이나 약간의 부주의로 인한 데이터 유출 가능성을 완전히 봉쇄할 수 있도록 설계됨. Oniux는 Artionionmasq 위에서 동작하며, 어떤 리눅스 앱도 별도의 네트워크 네임스페이스에 격리해 Tor 네트워크로만 트래픽을 강제 우회함.

리눅스 네임스페이스란 무엇인가

  • 네임스페이스는 리눅스 커널의 주요 격리 기능임
  • 어플리케이션의 일부 리소스를 시스템 전체와 논리적으로 분리해줌
  • 네트워크, 마운트, 프로세스 등 다양한 자원을 이 기법으로 격리 가능함
  • 각각의 네임스페이스는 운영체제 자원을 분리해, 컨테이너 환경이나 보안 목적에 사용됨
  • Docker 등 대표적인 컨테이너 솔루션이 네임스페이스를 기본 원리로 활용함

Tor와 네임스페이스 결합의 의미

  • 네임스페이스는 임의 애플리케이션의 Tor 네트워크 접근을 완전 격리로 보호함
  • 각 앱을 네트워크 네임스페이스에 독립적으로 배치하고, onion0이라는 커스텀 인터페이스만을 노출함
  • 앱이 OS 전체 네트워크 인터페이스(예: eth0)에 접근 불가하여 안전성 극대화 달성 가능함
  • SOCKS 기반 프록시 방식과 달리, 어떠한 실수나 결함으로도 직접 트래픽 누출 위험 없음

Oniux와 torsocks 비교

  • Torsocks는 libc의 네트워크 함수들을 LD_PRELOAD 기법으로 후킹해 Tor의 SOCKS 프록시로 우회시킴
  • Oniux는 네임스페이스 격리로 작동하여, 정적 바이너리나 Zig 등에서도 트래픽 유출을 100% 방지함
  • 주요 비교 내용
    • Oniux: 별도 Tor 데몬 불필요, 네임스페이스 사용, 모든 앱 지원, 악성 앱의 raw 시스템콜도 차단, 리눅스 전용, 신규/실험적, Arti 기반, Rust 작성
    • Torsocks: Tor 데몬 필요, ld.so 해킹, libc 연결 앱만 지원, raw 시스템콜은 유출 가능, 크로스플랫폼, 15년 이상 검증, CTor 엔진, C 언어 작성

Oniux 사용 방법

  • Rust 개발 환경이 구축된 리눅스 시스템 필요
  • 커맨드라인에서 간단히 oniux를 설치 및 실행 가능

주요 사용 예시:

  • $ oniux curl https://icanhazip.com # Tor 우회 얻은 IP 조회
  • $ oniux bash # 쉘 전체를 Tor 격리로 실행
  • $ oniux hexchat # GUI 앱도 Tor로 강제 우회 가능
  • $ RUST_LOG=debug oniux curl ... # 디버깅 로깅 지원

내부 동작 원리

  • Oniux는 clone(2) 시스템콜로 독립된 네트워크·마운트·PID·사용자 네임스페이스에서 자식 프로세스를 생성함
  • 자식 프로세스는 /proc을 개별적으로 마운트하고, UID/GID 매핑으로 권한 맞춤
  • 네임서버 정보가 담긴 임시 파일을 /etc/resolv.conf에 바인드 마운트해, Tor 기반 네임리졸버 강제 사용
  • onionmasq로 TUN 인터페이스 (onion0) 생성 후 IP 할당·설정
  • 자식 프로세스가 인터페이스 fd를 유닉스 도메인 소켓으로 부모 프로세스에 전달하고, 권한을 최소화함
  • Rust 기능을 이용해 최종적으로 사용자가 입력한 명령을 실행함

Oniux의 실험적 특성

  • Oniux는 Arti, onionmasq 등 신기술을 기반으로 만들어진 초기 버전임
  • 현 시점에서 정상적으로 동작하지만, torsocks처럼 오랜 기간에 걸친 성숙 사례 경험은 부족함
  • 안정성 확보와 성능 개선을 위해 다양한 실사용 피드백이 필요함

크레딧 및 지원

  • Rust기반 IP 스택인 smoltcp와, 사용자 네임스페이스 활용법을 개발에 조언한 7ppKb5bW 등 개발자들에게 감사함 표명
  • The Tor Project 및 커뮤니티 지원으로 oniux 프로젝트가 유지되고 있으며, 프라이버시와 오픈 소프트웨어 발전을 위해 후원을 권장함

Tor는 프라이버시에는 나쁘지 않은 것 같은데 익명성에 알맞은 도구인지는 잘 모르겠네요. 출구 노드들을 이미 국가기관들이 장악하고 있다는 이야기도 있고.

Hacker News 의견
  • 10년 전쯤 네트워크 네임스페이스가 핫한 주제로 떠오를 때 Tor 개발자와 이 주제로 대화한 경험이 있음. 그때 받은 피드백은, 네임스페이스를 통한 격리가 사람들이 보안에 안심하게 만들지만 여전히 많은 식별 가능한 정보가 유출될 수 있다는 점이었기에 더 이상 추진하지 않았던 기억
    • Tor 팀이 그 부분을 강조한 건 전략적으로 실수였다고 생각. 심각한 위협에 노출된 사람들은 Tor 브라우저를 쓰고 다른 정보 유출 경로도 신경 써야 한다는 게 맞지만, Tor가 모두에게 기본이 되었다면 대규모 감시 자체가 훨씬 어려워졌을 거라 생각. 지금은 누가 Tor를 쓰는지 자체가 감시 대상이지만 모두가 쓴다면 그 정보가 의미 없어지는 상황
    • torsock과 torify도 기본적으로 같은 역할을 하지만 견고함 면에서는 덜하다고 느끼는 지점
  • 설치 가이드에 나온 명령어대로 하면 동작하지 않는 상황. 버전 번호를 0.4.0에서 0.5.0으로 바꿔야 함
    cargo install --git https://gitlab.torproject.org/tpo/core/oniux oniux@0.5.0
  • 나는 원래 torsocks처럼 로컬에서 돌아가는 tor 데몬을 통해 트래픽이 나간다고 생각했음. 그런데 로컬 tor 데몬을 꺼도 oniux는 여전히 잘 동작하지만 torify랑 torsocks는 안 됨. 문서를 보니 실제로 그렇게 되어 있음. 아주 신기한 사실. docker에서도 잘 동작하지만 --privileged 옵션을 써야 했고, 단순히 바이너리를 debian:12 컨테이너에 복사해도 정상 작동하는 경험
    docker run -it --rm --privileged -v "$PWD/oniux:/usr/bin/oniux"; debian:12
  • 이 모든 게 TCP에만 해당되는 건지 궁금. 즉, 비TCP 트래픽도 보호되는지 의문
    • 자세한 건 모르지만 https://gitlab.torproject.org/tpo/core/onionmasq를 보면 TCP뿐 아니라 UDP도 지원하는 유저 스페이스 네트워크 스택을 만들어 Tor 네트워크로 포워딩하는 시도인 것 같음
    • Tor 브라우저 쓰는 사람들이 YouTube나 DNS, 그리고 HTTP/3은 어떻게 처리하는지 궁금
    • 비TCP 트래픽은 라우팅되지 않고 그냥 전송이 실패하는 구조
  • Oniux는 공식적으로 지원받는 도구로 보임. orjail과 비슷한데, orjail은 4년 동안 커밋이 없지만 여전히 iptables/iproute 도구와 함께 셸 스크립트로 잘 동작함
    orjail은 firejail로 추가 격리 가능한 옵션도 있는데 Oniux엔 아직 해당 기능 없음
    https://github.com/orjail/orjail/blob/master/usr/sbin/orjail
  • 이제 chrome으로 tor 웹사이트 접속이 가능한지 궁금
    • 할 수 있긴 하지만 그렇게 하지 않기를 권장. chrome엔 Tor 브라우저에 있는 각종 anti-fingerprinting 전략이 없음. 일반 브라우저를 사용하면 더욱 두드러지는 사용자가 된다는 점.
    • 사실 예전부터 프록시 환경변수(혹은 설정)만 잘 지정하면 chrome 같은 브라우저에서도 접근 가능. tor 데몬의 표준 포트는 9050. socks 프록시를 직접 작성해 트래픽을 라우팅하는 것도 쉬운 편. 예시로 socks5 프록시를 이용해 syncthing 같은 곳에 트래픽을 보낼 수도 있음
      https://github.com/acheong08/syndicate
  • hexchat을 예시로 드는데, 유저의 프로필 설정을 그대로 쓴다면 IRC 유저명이 유출되지 않나 의문
    브라우저를 실행하면 쿠키 같은 것도 유출 가능성
    • 역할 분리가 중요. Tor는 핑거프린팅 방지에 많은 노력을 기울이긴 하지만 근본적으로 Tor와 Oniux의 목적은 출발지 IP 추적 불가능하게 하는 데 있음. Tor로 Gmail에 로그인하거나 하면 같은 문제가 있음(HTTPS가 적용되지 않는 한)
    • 유저명을 유출한다는 게 어떤 의미인지 궁금. 실상은 그 유저명이 Tor를 쓴다는 것만 알려줄 뿐. 같은 IRC 호스트에 같은 유저명이 계속 접속되면 모두 같은 사람이란 것까진 유출 가능. IRC는 익명 지향이라면 꽤 위험한 수단인 셈. 네트워크 단절 이벤트 등과 연결해 로그를 남기는 사람들이 많으니 상호 연관성 노출 가능성
  • DevEx(개발 경험) 부분이 정말 잘 되어 있고 바보-proof라 느껴질 정도. 개발팀에게 박수를 보내고 싶음
    • 사실 완전히 그렇진 않다고 생각. 바보들은 항상 창의적이며 익명성을 보장하려면 매우 신중한 운영이 필요한데 그 수준은 대부분의 사용자에게 기대하기 힘든 수준
  • 코드를 C로 다시 작성해주면 기쁜 마음으로 쓸 생각
    • 이미 Rust로 작성되어 있음. 굳이 C 버전을 원하는 이유가 궁금