โซลูชันที่ 1: การโหลดไลบรารีเฉพาะล่วงหน้า
แอพ -Rail -Jail : ใช้ ld_preload เพื่อบังคับให้อินเตอร์เฟสเกตเวย์ (ความคิดที่ยอดเยี่ยม แต่ต้องใช้ความสามารถในการรูทหรือการทำเครื่องหมาย) มีรายละเอียดเกี่ยวกับโน้ตย่อ
Proxyboundใช้งาน: ใช้ LD_PRELOAD เพื่อบังคับให้ผู้รับมอบฉันทะเพื่อการประยุกต์ใช้ที่เฉพาะเจาะจง (นี้เป็นใช้ proxy แทนของอินเตอร์เฟซ)
Force-Bind : มีคุณสมบัติมากมาย แต่การเชื่อมโยงรั่วไหล (ไม่น่าเชื่อถือ)
Bind-Interface-IP : การเชื่อมต่อที่ง่ายและรั่วไหลเกินไป (ไม่น่าเชื่อถือ)
Bind-IP : วิธีที่ง่ายเกินไปและการเชื่อมต่อการรั่วไหล (ไม่น่าเชื่อถือ)
โซลูชันที่สอง: ผู้ใช้ Linux
พื้นที่ผู้ใช้ linux แบบคลาสสิกip-netns : โซลูชันที่ยอดเยี่ยม แต่ต้องการรูทและส่วนต่อประสานสามารถอยู่ได้ในพื้นที่ผู้ใช้เดียวเท่านั้น
Firejail : Firejail สามารถบังคับให้แอปพลิเคชันใช้เครือข่ายเฉพาะ แต่ความเข้ากันได้นั้นมี จำกัด (ตัวอย่างเช่นไม่สามารถใช้งานได้กับอินเตอร์เฟสอินเตอร์เฟส) firejail ไม่ต้องการรูทfirejail --dns=8.8.8.8 --noprofile --net=eth0 --ip=192.168.1.1 app-command
Firejail with netns : Firejail สามารถบังคับให้แอปพลิเคชันใช้พื้นที่ผู้ใช้เฉพาะที่สร้างขึ้นแยกจากกันทำให้เราตั้งชื่อช่องว่างโดยไม่ต้องรูทfirejail --dns=8.8.8.8 --noprofile --netns=nameOfyourNS app-command
Firejail พร้อมมาสเคอเรดและบริดจ์ : Firejail สามารถบังคับให้แอปพลิเคชันใช้อินเทอร์เฟซเฉพาะกับ iptables masqueradeได้ดีและไม่ต้องใช้ root แต่ต้องใช้ ip_forward และอาจบ่งบอกถึงความปลอดภัยfirejail --net=br0 firefox
โซลูชันที่สาม: iptables Linux
iptables สามารถนำมาใช้เพื่อการนี้แต่นี้ต้อง ip_forward และสามารถบ่งบอกถึงผลกระทบต่อการรักษาความปลอดภัยหากไม่ได้กำหนดค่าอย่างถูกต้องตัวอย่างเช่น 1 , 2 ตัวอย่าง , ตัวอย่างเช่น 3 , ตัวอย่าง 4
การแก้ปัญหา (I, II & III) บันทึก:
Wireguard
หากคุณใช้ VPN (โดยเฉพาะ wireguard) และคุณต้องการใช้โซลูชันนี้กับอินเตอร์เฟส wireguard ( wireguard พร้อมพื้นที่ผู้ใช้ ) คุณสามารถทำตามคำแนะนำที่เชื่อมโยงเพื่อสร้างพื้นที่ผู้ใช้ที่มีส่วนต่อประสาน wg (และ จำกัด อยู่ที่อินเตอร์เฟส vpn ) นอกจากนี้ยังสามารถรวมกับfirejail --netns=container
เพื่อให้สามารถใช้พื้นที่ผู้ใช้โดยไม่ต้องรูท
วิธีค้นหาอินเตอร์เฟสเกตเวย์
มีวิธีแก้ปัญหามากมายในการค้นหาเกตเวย์ที่นี่คือคำสั่งบางอย่างที่อนุญาตให้ค้นหาเกตเวย์ที่ใช้
$ 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
git clone https://github.com/Intika-Linux-Network/App-Route-Jail.git
cd Approute-Utils
chown 755 make.sh
./make.sh
- เพิ่มเส้นทางสำหรับแพ็คเก็ตที่ถูกทำเครื่องหมายในอนาคต (สำหรับแอปพลิเคชันที่ถูกจำคุก) ในตัวอย่าง
192.168.1.1
นี้ใช้เป็นเกตเวย์บังคับ, กฎเส้นทางนี้จะไม่ส่งผลกระทบต่อแอปพลิเคชันอื่น ๆ การจัดการนี้จะต้องทำเพียงครั้งเดียว ใช้วิธีนี้ทุกวัน
ip rule add fwmark 10 table 100
ip route add default via 192.168.1.1 table 100
- เริ่มแอปพลิเคชันที่คุณต้องการติดคุก
MARK=10 LD_PRELOAD=./mark.so firefox
MARK=10 LD_PRELOAD=./mark.so wget -qO- ifconfig.me