Giới thiệu Oniux, công cụ cô lập Tor cấp kernel cho ứng dụng Linux
(blog.torproject.org)- Oniux là công cụ cô lập cấp kernel giúp buộc toàn bộ lưu lượng của ứng dụng Linux đi vòng qua mạng Tor, qua đó giảm thiểu rủi ro rò rỉ dữ liệu
- Công cụ tận dụng Linux namespace để cô lập từng ứng dụng trong môi trường mạng độc lập và triển khai giao tiếp an toàn thông qua Tor
- Khác với torsocks hiện có, Oniux vẫn hoạt động với binary tĩnh hoặc ứng dụng không dùng libc, nhờ đó chặn được đường rò rỉ dữ liệu trực tiếp từ ứng dụng độc hại
- Oniux được xây dựng bằng Rust trên nền Arti và onionmasq mới, tăng cường cả tính bảo mật lẫn khả năng mở rộng
- Hiện Oniux vẫn là công cụ thử nghiệm; về độ ổn định, nó khác với torsocks đã được kiểm chứng, nhưng đang được chú ý như một giải pháp cô lập lưu lượng Tor thế hệ tiếp theo
Giới thiệu Oniux
Oniux là một tiện ích dòng lệnh giúp nâng mức bảo vệ quyền riêng tư trên Linux lên đáng kể thông qua cô lập mạng Tor. Công cụ được thiết kế để giúp nhà phát triển, nhà hoạt động và nhà nghiên cứu chặn hoàn toàn khả năng rò rỉ dữ liệu do cấu hình proxy sai hoặc chỉ một chút bất cẩn gây ra. Oniux hoạt động trên nền Arti và onionmasq, cô lập bất kỳ ứng dụng Linux nào vào một namespace mạng riêng biệt và buộc toàn bộ lưu lượng chỉ được định tuyến qua mạng Tor.
Linux namespace là gì
- Namespace là một tính năng cô lập cốt lõi của kernel Linux
- Nó giúp tách biệt về mặt logic một phần tài nguyên của ứng dụng khỏi toàn bộ hệ thống
- Có thể cô lập nhiều loại tài nguyên như mạng, mount, tiến trình bằng kỹ thuật này
- Mỗi namespace sẽ tách riêng tài nguyên hệ điều hành, nên được dùng trong môi trường container hoặc cho mục đích bảo mật
- Các giải pháp container tiêu biểu như Docker sử dụng namespace làm nguyên lý nền tảng
Ý nghĩa của việc kết hợp Tor và namespace
- Namespace bảo vệ việc truy cập mạng Tor của ứng dụng bất kỳ bằng cơ chế cô lập hoàn toàn
- Mỗi ứng dụng được đặt độc lập trong network namespace và chỉ được lộ ra giao diện tùy biến có tên
onion0 - Ứng dụng không thể truy cập các giao diện mạng của toàn bộ hệ điều hành (ví dụ:
eth0), từ đó tối đa hóa an toàn - Khác với cách dùng proxy dựa trên SOCKS, không có nguy cơ rò rỉ lưu lượng trực tiếp do sai sót hay lỗi phát sinh
So sánh Oniux và torsocks
- Torsocks hook các hàm mạng của libc bằng kỹ thuật LD_PRELOAD để chuyển hướng qua SOCKS proxy của Tor
- Oniux hoạt động bằng cô lập namespace, nên có thể ngăn rò rỉ lưu lượng 100% ngay cả với binary tĩnh hoặc ứng dụng như Zig
- Các điểm so sánh chính
- Oniux: không cần daemon Tor riêng, dùng namespace, hỗ trợ mọi ứng dụng, chặn cả raw syscall từ ứng dụng độc hại, chỉ dành cho Linux, mới/thử nghiệm, dựa trên Arti, viết bằng Rust
- Torsocks: cần daemon Tor, dùng kiểu hack ld.so, chỉ hỗ trợ ứng dụng liên kết với libc, raw syscall vẫn có thể rò rỉ, đa nền tảng, đã được kiểm chứng hơn 15 năm, dùng engine CTor, viết bằng C
Cách dùng Oniux
- Cần một hệ thống Linux đã thiết lập môi trường phát triển Rust
- Có thể cài đặt và chạy oniux đơn giản từ dòng lệnh
Ví dụ sử dụng chính:
- $ oniux curl https://icanhazip.com # Kiểm tra IP nhận được khi đi qua Tor
- $ oniux bash # Chạy toàn bộ shell trong môi trường cô lập Tor
- $ oniux hexchat # Ứng dụng GUI cũng có thể bị buộc đi qua Tor
- $ RUST_LOG=debug oniux curl ... # Hỗ trợ ghi log để gỡ lỗi
Nguyên lý hoạt động bên trong
- Oniux dùng syscall
clone(2)để tạo tiến trình con trong các namespace mạng, mount, PID và người dùng độc lập - Tiến trình con mount riêng
/procvà điều chỉnh quyền thông qua ánh xạ UID/GID - Một tệp tạm chứa thông tin nameserver được bind mount vào
/etc/resolv.conf, từ đó buộc sử dụng trình phân giải tên dựa trên Tor - Tạo giao diện TUN (
onion0) bằng onionmasq rồi gán và cấu hình IP - Tiến trình con truyền interface fd sang tiến trình cha qua Unix domain socket để giảm thiểu đặc quyền
- Cuối cùng sử dụng các tính năng của Rust để thực thi lệnh do người dùng nhập
Tính chất thử nghiệm của Oniux
- Oniux là phiên bản đầu được xây dựng trên các công nghệ mới như Arti và onionmasq
- Ở thời điểm hiện tại công cụ vẫn hoạt động bình thường, nhưng còn thiếu kinh nghiệm trưởng thành qua thời gian dài như torsocks
- Cần thêm nhiều phản hồi từ quá trình sử dụng thực tế để tăng độ ổn định và cải thiện hiệu năng
Ghi công và hỗ trợ
- Dự án bày tỏ lời cảm ơn tới smoltcp, stack IP viết bằng Rust, cùng các nhà phát triển như 7ppKb5bW đã tư vấn cách tận dụng user namespace trong quá trình phát triển
- Dự án oniux được duy trì nhờ sự hỗ trợ của The Tor Project và cộng đồng, đồng thời khuyến khích tài trợ để thúc đẩy quyền riêng tư và phần mềm nguồn mở
2 bình luận
Tor có vẻ không tệ về mặt quyền riêng tư, nhưng tôi không chắc đó có phải là công cụ phù hợp cho tính ẩn danh hay không. Cũng có những câu chuyện nói rằng các nút thoát đã bị các cơ quan nhà nước kiểm soát từ lâu.
Ý kiến Hacker News
torsockvàtorifyvề cơ bản cũng làm cùng vai trò, nhưng tôi cảm thấy chúng kém vững chắc hơn.cargo install --git https://gitlab.torproject.org/tpo/core/oniux oniux@0.5.0torsocks. Nhưng ngay cả khi tắt tor daemon cục bộ thìoniuxvẫn hoạt động tốt, còntorifyvàtorsocksthì không. Đọc tài liệu mới thấy đúng là nó được thiết kế như vậy. Một chi tiết rất thú vị. Nó cũng chạy tốt trong docker, nhưng tôi phải dùng tùy chọn--privileged, và chỉ cần chép binary vào containerdebian:12là cũng chạy bình thường.docker run -it --rm --privileged -v "$PWD/oniux:/usr/bin/oniux" debian:12https://tpo.pages.torproject.net/core/arti/
orjail, nhưngorjailđã 4 năm không có commit nào mà vẫn hoạt động ổn dưới dạng shell script cùng với các công cụiptables/iproute.orjailcòn có một tùy chọn để tăng cường cách ly bằngfirejail, nhưng Oniux thì hiện chưa có tính năng đó.https://github.com/orjail/orjail/blob/master/usr/sbin/orjail
https://raw.githubusercontent.com/orjail/orjail/master/usr/sbin/orjail
syncthingqua một proxy socks5.https://github.com/acheong08/syndicate
hexchatlàm ví dụ, nhưng nếu giữ nguyên thiết lập hồ sơ của người dùng thì chẳng phải tên người dùng IRC sẽ bị lộ sao?Khi chạy trình duyệt thì cookie các kiểu cũng có thể bị lộ.