Giải pháp I: Tải trước một thư viện cụ thể
App-Route-Jail : sử dụng ld_preload để buộc cổng giao diện (ý tưởng tuyệt vời nhưng yêu cầu khả năng root hoặc mark) được sử dụng chi tiết trên ghi chú dưới đây
Proxybound : sử dụng ld_preload để buộc proxy vào một ứng dụng cụ thể (đây là sử dụng proxy thay vì giao diện)
Force-Bind : có rất nhiều tính năng nhưng rò rỉ liên kết (không đáng tin cậy)
Bind-Interface-IP : kết nối quá đơn giản và rò rỉ (không đáng tin cậy)
Bind-IP : cách kết nối quá đơn giản và rò rỉ (không đáng tin cậy)
Giải pháp II: Không gian người dùng Linux
IP-netns không gian người dùng linux cổ điển : giải pháp tuyệt vời nhưng yêu cầu root và giao diện chỉ có thể tồn tại trên một không gian người dùng
Firejail : Firejail thể ép buộc một ứng dụng sử dụng một mạng cụ thể, nhưng khả năng tương thích được giới hạn (ví dụ nó không tương thích với giao diện tun). firejail không cần rootfirejail --dns=8.8.8.8 --noprofile --net=eth0 --ip=192.168.1.1 app-command
Firejail với netns : Firejail có thể buộc một ứng dụng sử dụng một không gian người dùng cụ thể đã được tạo riêng biệt, điều này chúng ta hãy đặt tên cho không gian mà không có gốcfirejail --dns=8.8.8.8 --noprofile --netns=nameOfyourNS app-command
Firejail với giả trang và cầu nối : Firejail có thể buộc một ứng dụng sử dụng một giao diện cụ thể với iptables giả trang , điều này thật tuyệt và không yêu cầu root nhưng điều này đòi hỏi ip_forward và có thể ngụ ý tác động bảo mậtfirejail --net=br0 firefox
Giải pháp III: iptables Linux
Iptables có thể được sử dụng cho mục đích này nhưng điều này đòi hỏi ip_forward và có thể ngụ ý tác động bảo mật nếu nó không được cấu hình đúng, ví dụ 1 , ví dụ 2 , ví dụ 3 , ví dụ 4
Giải pháp (I, II & III) lưu ý:
Dây bảo vệ
Nếu bạn đang sử dụng VPN (đặc biệt là bảo vệ dây) và bạn muốn áp dụng giải pháp này cho giao diện bảo vệ dây ( bảo vệ dây với không gian người dùng ), bạn có thể làm theo hướng dẫn được liên kết để tạo không gian người dùng có giao diện wg (và do đó giới hạn ở giao diện vpn ) cũng điều này có thể được kết hợp với firejail --netns=container
để có thể sử dụng không gian người dùng mà không cần root.
Cách tìm cổng giao diện
Có nhiều giải pháp để tìm cổng ở đây là một số lệnh cho phép tìm cổng được sử dụng
$ route
$ route -n
$ ip rule list
$ ip route show
$ netstat -rn
$ cat /etc/network/interfaces
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
$ traceroute www.google.com
$ ip route show 0.0.0.0/0 dev eth0
Cách sử dụng App-Route-Jail
- Xây dựng ứng dụng-Tuyến-tù
git clone https://github.com/Intika-Linux-Network/App-Route-Jail.git
cd Approute-Utils
chown 755 make.sh
./make.sh
- Thêm tuyến đường cho các gói được đánh dấu trong tương lai (đối với ứng dụng bị bỏ tù) trong ví dụ
192.168.1.1
này được sử dụng làm cổng bắt buộc, quy tắc tuyến này sẽ không ảnh hưởng đến các ứng dụng khác, ví dụ thao tác này chỉ được thực hiện một lần khi khởi động hệ thống nếu bạn muốn sử dụng giải pháp này hàng ngày
ip rule add fwmark 10 table 100
ip route add default via 192.168.1.1 table 100
- Bắt đầu ứng dụng mà bạn muốn vào tù
MARK=10 LD_PRELOAD=./mark.so firefox
MARK=10 LD_PRELOAD=./mark.so wget -qO- ifconfig.me