Предотвращение утечки трафика в обход OpenVPN-соединения в Linux
1. Системная группа 2. Правила IPTables для запрета трафика в обход OpenVPN-туннеля 3. Сброс правил IPTables 4. Готовые конфигурации с автоматическим выполнением правил IPTablesВсе действия описанные ниже производятся только в терминале (консоли) Linux.
Команды начинающиеся с приглашения # выполняются от root-пользователя, приглашение $ означает выполнение от обычного пользователя.
Для получения root-прав воспользуйтесь командами sudo или su. Например, в десктопных Debian-based дистрибутивах (Ubuntu, Linux Mint и т.д.) для входа под root введите sudo su. В RedHat-based дистрибутивах (RHEL, Fedora, CentOS и т.д.), а также серверных версиях ветки Debian используйте команду su.
1. Системная группа
Создайте системную группу deepwebvpn, которая потребуется для правил IPTables в дальнейшем.# groupadd -r deepwebvpnНе нужно создавать группу заново каждый раз перед подключением к OpenVPN, группу необходимо создать только единожды. Проверить наличие группы можно командой ниже. В случае отсутствия группы команда вернет пустую строку.
# cat /etc/group | grep deepwebvpn deepwebvpn:x:998:Убедившись, что группа deepwebvpn существует, следует прописать ее в используемый OpenVPN-конфиг. Дописать опцию group deepwebvpn в конфиг-файл можно используя консольный редактор nano или команду ниже (в примере следует заменить путь до файла на необходимый).
# echo "group deepwebvpn" >> /etc/openvpn/DoubleRSA_DE1_NL1.ovpn
2. Правила IPTables
На данном этапе следует подключиться по измененному выше конфигу (в примере выше это /etc/openvpn/DoubleRSA_DE1_NL1.ovpn). После подключения необходимо выполнить следующие команды.Выполнение команд ниже сбросит предыдущие правила IPTables, если таковые имелись.
# iptables -F # iptables -A OUTPUT -j ACCEPT -m owner --gid-owner deepwebvpn # iptables -A OUTPUT -j ACCEPT -o lo # iptables -A OUTPUT -j ACCEPT -o tun+ # iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED # iptables -P OUTPUT DROP # iptables -P INPUT DROP
После выполнения вышеизложенных правил IPTables доступа в сеть (в том числе и интернет) не будет до автоматического переподключения OpenVPN-клиента по истечению таймаута. Иными словами, следует подождать около двух минут пока VPN-клиент сам не переподключиться.
3. Сброс правил IPTables
Для сброса правил IPTables и восстановления доступа к Сети следует воспользоваться следующими командами.# iptables -P INPUT ACCEPT; iptables -P OUTPUT ACCEPT # iptables -F INPUT; iptables -F OUTPUT
4. Готовые конфигурации
Для корректной работы конфигураций из архивов с автоматическим выполнением правил IPTables, системная группа deepwebvpn уже должна существовать.
Архив с готовыми конфигурациями OpenVPN для Linux с автоматическим выполнением правил IPTables для предотвращения утечки трафика доступен по ссылке.
Необязательно скачивать архив со всеми конфигурациями OpenVPN для Linux с автоматическим выполнением правил IPTables, возможно также скачать архивы только с Single-цепями или Double-цепями.
Tor-ссылки архивов с конфигурациями OpenVPN для Linux с автоматическим выполнением правил IPTables: все конфигурации, только Single-цепи, только Double-цепи.
Помимо файлов-конфигураций, в архиве также присутствуют два скрипта: enable-linux-kill-switch.sh и disable-linux-kill-switch.sh. Код первого идентичен описанному в листинге в пункте Правила IPTables, во втором код из пункта Сброс правил IPTables. Перед использованием OpenVPN-конфигов с автоматическим выполнением правил IPTables следует дать скриптам права на исполнение.
# chmod u+x /etc/openvpn/enable-linux-kill-switch.sh # chmod u+x /etc/openvpn/disable-linux-kill-switch.sh
В готовых OpenVPN-конфигах с правилами IPTables автоматическое выполнение disable-linux-kill-switch.sh закомментированно (не выполняется). Чтобы после ручного обрыва VPN-соединения автоматически сработал сброс правил IPTables и появился доступ в Сеть, следует привести строку с опцией down (убрать в начале строки символ #) в файле-конфигурации к следующему виду.
down /etc/openvpn/disable-linux-kill-switch.sh