Lösung I: Vorabladen einer bestimmten Bibliothek
App-Route-Jail : Verwenden Sie ld_preload, um die Verwendung des Schnittstellen-Gateways zu erzwingen (gute Idee, aber Root- oder Markierungsfähigkeiten erforderlich)
Proxybound : Verwenden Sie ld_preload, um einen Proxy für eine bestimmte Anwendung zu erzwingen (dies verwendet einen Proxy anstelle einer Schnittstelle).
Force-Bind : viele Funktionen, aber das Binden leckt (nicht zuverlässig)
Bind-Interface-IP : zu einfache und undichte Verbindungen (nicht zuverlässig)
Bind-IP : viel zu einfache und undichte Verbindungen (nicht zuverlässig)
Lösung II: Linux Userspace
Klassischer Linux-User-Space IP-Netns : Tolle Lösung, aber Root und Interface müssen vorhanden sein
Firejail : Firejail kann eine Anwendung zur Verwendung eines bestimmten Netzwerks zwingen, die Kompatibilität ist jedoch begrenzt (z. B. nicht kompatibel mit Tun-Schnittstellen). firejail benötigt kein rootfirejail --dns=8.8.8.8 --noprofile --net=eth0 --ip=192.168.1.1 app-command
Firejail mit netns : Firejail kann eine Anwendung zwingen, einen bestimmten Benutzerbereich zu verwenden, der separat erstellt wurde. Auf diese Weise können Sie Bereiche ohne root benennenfirejail --dns=8.8.8.8 --noprofile --netns=nameOfyourNS app-command
Firejail mit Maskerade und Brücke : Firejail eine Anwendung zwingen kann , eine verwenden spezifische Schnittstelle mit iptables Maskerade , ist dieser große und erfordert keine root aber dies erfordert ip_forward und Auswirkungen Sicherheit bedeuten könntefirejail --net=br0 firefox
Lösung III: Linux Iptables
Iptables können für diesen Zweck verwendet werden , erfordern jedoch ip_forward und können Auswirkungen auf die Sicherheit haben, wenn sie nicht richtig konfiguriert sind ( Beispiel 1 , Beispiel 2 , Beispiel 3 , Beispiel 4)
Lösungshinweise (I, II & III):
Wireguard
Wenn Sie ein VPN (insbesondere Wireguard) verwenden und diese Lösung auf eine Wireguard-Schnittstelle ( Wireguard mit Benutzerbereich ) anwenden möchten, können Sie den verknüpften Anweisungen folgen, um einen Benutzerbereich mit einer WG-Schnittstelle (und damit auf eine VPN-Schnittstelle beschränkt) zu erstellen ) kann auch mit kombiniert firejail --netns=container
werden, um den Benutzerraum ohne root nutzen zu können.
So finden Sie das Schnittstellen-Gateway
Es gibt viele Lösungen, um das Gateway zu finden. Hier sind einige Befehle, die es erlauben, das verwendete Gateway zu finden
$ 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
Wie benutzt man App-Route-Jail?
- Erstellen Sie App-Route-Jail
git clone https://github.com/Intika-Linux-Network/App-Route-Jail.git
cd Approute-Utils
chown 755 make.sh
./make.sh
- Das Hinzufügen einer Route für die zukünftig markierten Pakete (für die inhaftierte Anwendung) wird in diesem Beispiel
192.168.1.1
als erzwungenes Gateway verwendet. Diese Routenregel wirkt sich nicht auf andere Anwendungen aus. Diese Manipulation muss beispielsweise nur einmal beim Systemstart durchgeführt werden, wenn Sie dies möchten Verwenden Sie diese Lösung täglich
ip rule add fwmark 10 table 100
ip route add default via 192.168.1.1 table 100
- Starten Sie die Anwendung, die Sie ins Gefängnis bringen möchten
MARK=10 LD_PRELOAD=./mark.so firefox
- Testen der WAN-IP-Adresse
MARK=10 LD_PRELOAD=./mark.so wget -qO- ifconfig.me