Çözüm I: Belirli bir kütüphaneyi önceden yükleme
App-Route-Jail : arabirim ağ geçidini zorlamak için ld_preload kullanın (harika fikir ancak kök veya işaret yetenekleri gerektirir) kullanımı aşağıdaki notlarda detaylandırılmıştır
Proxybound : Proxy'yi belirli bir uygulamaya zorlamak için ld_preload kullanın (bu, arabirim yerine proxy kullanıyor)
Zorla Zorla : birçok özelliğe sahip ancak bağlayıcı sızıntılar (güvenilir değil)
Bind-Interface-IP : çok basit ve sızıntı bağlantıları (güvenilir değil)
Bind-IP : yol çok basit ve sızıntı bağlantıları (güvenilir değil)
Çözüm II: Linux kullanıcı alanı
Klasik linux kullanıcı alanı ip ağları : harika bir çözüm ancak root ve arayüz gerektiren tek bir kullanıcı alanında sadece var olabilir
Firejail : Firejail, bir uygulamayı belirli bir ağ kullanmaya zorlayabilir, ancak uyumluluk sınırlıdır (örneğin, tun arayüzlerle uyumlu değildir). ateşböceği kök gerektirmezfirejail --dns=8.8.8.8 --noprofile --net=eth0 --ip=192.168.1.1 app-command
Ağları olan Firejail : Firejail, bir uygulamayı ayrı olarak oluşturulmuş belirli bir kullanıcı alanını kullanmaya zorlayabilir, bu da root olmadan boşluk isimlendirmemize izin verir.firejail --dns=8.8.8.8 --noprofile --netns=nameOfyourNS app-command
Maskeli ve köprülü Firejail: Firejail, bir uygulamayı iptables masquerade ile belirli bir arabirim kullanmaya zorlayabilir , bu harika ve kök gerektirmez ancak bu ip_forward gerektirir ve güvenlik etkisi doğurabilirfirejail --net=br0 firefox
Çözüm III: Linux iptables
Iptables bu amaç için kullanılabilir, ancak bu ip_forward gerektirir ve doğru yapılandırılmamışsa güvenlik etkisi anlamına gelebilir, örnek 1 , örnek 2 , örnek 3 , örnek 4
Çözümler (I, II ve III) notları:
Wireguard
Bir VPN kullanıyorsanız (özellikle kablolu koruma kullanıyorsanız) ve bu çözümü bir kablolu koruma arabirimine ( kullanıcı alanı olan kablolu koruma ) uygulamak istiyorsanız, bir wg arayüzü içeren (ve böylece bir vpn arayüzü ile sınırlı olan) bir kullanıcı alanı oluşturma talimatını verilen bağlantıyı takip edebilirsiniz. ) Ayrıca bu firejail --netns=container
, kullanıcı alanını root kullanmadan kullanabilmek için de kullanılabilir.
Arabirim ağ geçidi nasıl bulunur
Burada ağ geçidini bulmak için birçok çözüm var, kullanılan ağ geçidini bulmaya izin veren bazı komutlar
$ 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
App-Route-Jail nasıl kullanılır?
git clone https://github.com/Intika-Linux-Network/App-Route-Jail.git
cd Approute-Utils
chown 755 make.sh
./make.sh
- Gelecekteki işaretli paketler için (hapsedilmiş uygulama için) bir rota ekleyin, bu örnekte
192.168.1.1
zorunlu ağ geçidi olarak kullanılır, bu rota kuralı diğer uygulamaları etkilemez, bu manipülasyon örneğin bir sistem önyüklemesinde sadece bir kez yapılmalı, örneğin bu çözümü her gün kullanın
ip rule add fwmark 10 table 100
ip route add default via 192.168.1.1 table 100
- Hapse atmak istediğiniz uygulamayı başlatın
MARK=10 LD_PRELOAD=./mark.so firefox
- Wan IP adresini test etme
MARK=10 LD_PRELOAD=./mark.so wget -qO- ifconfig.me