솔루션 I : 특정 라이브러리 사전로드
App-Route-Jail : ld_preload를 사용하여 인터페이스 게이트웨이를 강제 실행 (좋은 아이디어이지만 루트 또는 마크 기능이 필요함) 사용법에 대한 자세한 내용은 다음과 같습니다.
Proxybound : ld_preload를 사용하여 프록시를 특정 응용 프로그램에 강제로 적용합니다 (인터페이스 대신 프록시 사용).
강제 바인딩 : 많은 기능이 있지만 바인드 누출 (신뢰할 수 없음)
Bind-Interface-IP : 너무 간단하고 누출 연결 (신뢰할 수 없음)
Bind-IP : 너무 간단하고 연결이 누출 됨 (신뢰할 수 없음)
솔루션 II : Linux 사용자 공간
클래식 리눅스 사용자 공간 ip-netns : 훌륭한 솔루션이지만 루트와 인터페이스가 하나의 단일 사용자 공간에만 존재할 수 있습니다.
Firejail : Firejail은 응용 프로그램이 특정 네트워크를 사용하도록 강제 할 수 있지만 호환성은 제한적입니다 (예 : tun 인터페이스와 호환되지 않음). firejail은 루트가 필요하지 않습니다firejail --dns=8.8.8.8 --noprofile --net=eth0 --ip=192.168.1.1 app-command
netns가 포함 된 Firejail : Firejail은 응용 프로그램이 개별적으로 생성 된 특정 사용자 공간을 사용하도록 할 수 있습니다. 이렇게하면 루트없이 공간 이름을 지정할 수 있습니다firejail --dns=8.8.8.8 --noprofile --netns=nameOfyourNS app-command
가장 무도회와 다리 Firejail : Firejail가 사용하는 응용 프로그램을 강제 할 수 iptables에 가장 무도회와 특정 인터페이스를 ,이 위대하고 루트가 필요하지 않습니다 하지만 이 IP_FORWARD 요구 및 보안에 미치는 영향을 의미 할 수firejail --net=br0 firefox
솔루션 III : Linux iptables
iptables는 이러한 목적으로 사용될 수 있지만 ip_forward가 필요하며 올바르게 구성되지 않은 경우 보안 영향을 암시 할 수 있습니다 ( 예 1 , 예 2 , 예 3 , 예 4).
솔루션 (I, II 및 III) 참고 사항 :
와이어 가드
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