Solusi I: Preloading perpustakaan tertentu
App-Route-Jail : gunakan ld_preload untuk memaksa gateway antarmuka (ide bagus tetapi membutuhkan kemampuan root atau tanda) penggunaan dirinci pada catatan di bawah
Proxybound : gunakan ld_preload untuk memaksa proxy ke aplikasi tertentu (ini menggunakan proxy bukan antarmuka)
Force-Bind : memiliki banyak fitur tetapi bind bocoran (tidak dapat diandalkan)
Bind-Interface-IP : koneksi terlalu sederhana dan bocor (tidak dapat diandalkan)
Bind-IP : terlalu sederhana dan koneksi bocor (tidak dapat diandalkan)
Solusi II: ruang pengguna Linux
Ruang pengguna linux klasik ip-netns : solusi hebat tetapi membutuhkan root dan antarmuka hanya dapat ada pada satu ruang pengguna tunggal
Firejail : Firejail dapat memaksa aplikasi untuk menggunakan jaringan tertentu, tetapi kompatibilitasnya terbatas (contohnya tidak kompatibel dengan antarmuka tun). firejail tidak membutuhkan rootfirejail --dns=8.8.8.8 --noprofile --net=eth0 --ip=192.168.1.1 app-command
Firejail dengan jaring : Firejail dapat memaksa aplikasi untuk menggunakan ruang pengguna tertentu yang dibuat secara terpisah, ini mari kita beri nama spasi tanpa rootfirejail --dns=8.8.8.8 --noprofile --netns=nameOfyourNS app-command
Firejail dengan masquerade dan bridge : Firejail dapat memaksa aplikasi untuk menggunakan antarmuka spesifik dengan iptables masquerade , ini hebat dan tidak memerlukan root tetapi ini memerlukan ip_forward dan dapat menyiratkan dampak keamananfirejail --net=br0 firefox
Solusi III: iptables Linux
Iptables dapat digunakan untuk tujuan ini tetapi ini memerlukan ip_forward dan dapat menyiratkan dampak keamanan jika tidak dikonfigurasi dengan benar, contoh 1 , contoh 2 , contoh 3 , contoh 4
Catatan Solusi (I, II & III):
Wireguard
Jika Anda menggunakan VPN (terutama wireguard) dan Anda ingin menerapkan solusi ini ke antarmuka wireguard ( wireguard dengan ruang pengguna ), Anda dapat mengikuti tautan yang diinstruksikan untuk membuat ruang pengguna yang berisi antarmuka wg (dan dengan demikian terbatas pada antarmuka vpn ) juga ini dapat dikombinasikan dengan firejail --netns=container
untuk dapat menggunakan ruang pengguna tanpa root.
Cara menemukan antarmuka gateway
Ada banyak solusi untuk menemukan gateway di sini adalah beberapa perintah yang memungkinkan untuk menemukan gateway yang digunakan
$ 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
Cara menggunakan App-Route-Jail
git clone https://github.com/Intika-Linux-Network/App-Route-Jail.git
cd Approute-Utils
chown 755 make.sh
./make.sh
- Tambahkan rute untuk paket yang ditandai di masa depan (untuk aplikasi yang dipenjara) dalam contoh
192.168.1.1
ini digunakan sebagai gateway paksa, aturan rute ini tidak akan mempengaruhi aplikasi lain, manipulasi ini harus dilakukan hanya sekali pada boot sistem misalnya jika Anda ingin gunakan solusi ini setiap hari
ip rule add fwmark 10 table 100
ip route add default via 192.168.1.1 table 100
- Mulai aplikasi yang ingin dipenjara
MARK=10 LD_PRELOAD=./mark.so firefox
MARK=10 LD_PRELOAD=./mark.so wget -qO- ifconfig.me