Пользовательский OpenVPN Killswitch - PullRequest
0 голосов
/ 09 июля 2019

У меня проблемы с настройкой Killswitch для данного файла конфигурации OpenVPN.По сути, я хочу, чтобы все соединения вне VPN были разорваны, кроме петли и локальной подсети.

Сначала добавьте группу и измените правила iptables:

# add system group
sudo groupadd -r openvpn

# flush tables and drop all by default
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP

# allow local subnet, loopback and the tunnel
sudo iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT -i eth0
sudo iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT -o eth0
sudo iptables -A INPUT -j ACCEPT -i lo
sudo iptables -A OUTPUT -j ACCEPT -o lo
sudo iptables -A OUTPUT -j ACCEPT -o tun0

# allow VPN and established connections
sudo iptables -A OUTPUT -j ACCEPT -m owner --gid-owner openvpn
sudo iptables -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED

Затем добавьте dev tun0 иgroup openvpn в файл .ovpn и запустите OpenVPN с sudo openvpn --config /path/to/config.ovpn.К сожалению, я получаю следующую ошибку:

$ sudo openvpn --config file.ovpn
Tue Jul  9 04:12:03 2019 OpenVPN 2.4.0 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Oct 14 2018
Tue Jul  9 04:12:03 2019 library versions: OpenSSL 1.0.2r  26 Feb 2019, LZO 2.08
Tue Jul  9 04:12:03 2019 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
Tue Jul  9 04:12:03 2019 TCP/UDP: Preserving recently used remote address: [AF_INET]46.48.181.129:1195
Tue Jul  9 04:12:03 2019 Socket Buffers: R=[212992->212992] S=[212992->212992]
Tue Jul  9 04:12:03 2019 UDP link local: (not bound)
Tue Jul  9 04:12:03 2019 UDP link remote: [AF_INET]46.48.181.129:1195
Tue Jul  9 04:12:03 2019 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay
Tue Jul  9 04:12:03 2019 write UDP: Operation not permitted (code=1)
Tue Jul  9 04:12:05 2019 write UDP: Operation not permitted (code=1)
Tue Jul  9 04:12:09 2019 write UDP: Operation not permitted (code=1)
Tue Jul  9 04:12:18 2019 write UDP: Operation not permitted (code=1)
(...)

, и Интернет вообще не работает.После некоторого понимания я обнаружил, что реализация iptables только проверяет, является ли пользователь gid его основной группой.Это не будет работать, если пользователь просто принадлежит (разветвляется) к такой группе.Итак, поскольку openvpn должен быть запущен с sudo, Killswitch будет работать правильно, как только я установлю openvpn для основной группы root.

Однако я очень сомневаюсь в том, чтобы использовать такую ​​настройку., поскольку игра с основной группой root может привести к поломке в долгосрочной перспективе.Мне не удалось заставить его работать, создав фиктивного пользователя vpnuser, изменив его основную группу на openvpn, а затем запустив OpenVPN с параметром --user vpnuser или поместив запись user vpnuser в файл .ovpn.Он просто не работает и выдает ту же ошибку, о которой я упоминал, несмотря на правильную установку uid.

Итак, есть ли разумный выход из этой ситуации, кроме простого ручного кодирования IP-адресов VPN для каждого * 1030?* файл один за другим?

...