Как сделать аварийный выключатель VPN в Linux с помощью UFW
Подключение к Интернету через VPN становится все более популярным, поскольку интернет-провайдеры и правительства проявляют все больший интерес к вашим привычкам просмотра. Но что хорошего в VPN, если вы забыли его использовать? Или если соединение разрывается, а вы не замечаете? Если вы уже настроены анонимно просматривать веб-страницы, установка аварийного выключателя VPN на рабочем столе Linux гарантирует, что ваши данные зашифрованы.
Экстренный переключатель VPN — это набор правил брандмауэра, которые останавливают весь интернет-трафик, когда ваша VPN не подключена. Они полностью автоматизированы, а аварийный выключатель срабатывает только тогда, когда возникает проблема с безопасным соединением.
Если вы когда-либо пинали себя за просмотр, когда ваша VPN была отключена, даже не замечая, создание аварийного выключателя VPN с UFW — довольно простое решение.
Что такое UFW?
UFW — это набор скриптов, которые действуют как оболочка для межсетевого экрана Linux iptables. iptables — мощный инструмент, но его не так просто использовать. UFW значительно упрощает создание полезного набора правил, особенно если вы не опытный пользователь Linux, который знает iptables наизусть.
Если у вас когда-либо возникали проблемы с сетью Linux, но вам по-прежнему нужен безопасный и удобный брандмауэр, я рекомендую UFW.
Прежде чем вы начнете
Перед тем, как начать, рекомендуется убедиться, что ваша система обновлена. В этом руководстве я буду использовать Ubuntu 18 LTS. Если вы используете операционную систему Linux на основе Debian, действия будут идентичны.
Используйте следующие команды для обновления вашей операционной системы и установленного программного обеспечения:
sudo apt update
После завершения выполнения команд вы готовы приступить к настройке аварийного выключателя VPN с помощью UFW.
Отключение IPv6
Многие провайдеры VPN до сих пор не имеют адекватной поддержки IPv6, что может вызвать утечку данных и другие проблемы. Я думаю, это хорошая идея полностью отключить IPv6, если вы не уверены, что ваш провайдер поддерживает его.
Этот шаг не является обязательным, и при необходимости его можно пропустить.
Как отключить IPv6
Вам нужно будет отключить IPv6 как для операционной системы, так и для UFW, чтобы быть уверенным, что ваш VPN-провайдер не будет передавать трафик IPv6 в незашифрованном виде. В Ubuntu это означает, что вам нужно отредактировать следующие файлы:
/etc/sysctl.conf для отключения сети IPv6
/ etc / default / ufw, чтобы запретить UFW автоматически создавать правила IPv6
Для начала откройте /etc/sysctl.conf для редактирования с помощью следующей консольной команды:
sudo nano /etc/sysctl.conf
Прокрутите файл до тех пор, пока не увидите запись для net.ipv6.conf и добавьте следующие три строки в конец файла конфигурации:
net.ipv6.conf.all.disable_ipv6=1
Сохраните изменения с помощью Ctrl + X, Y и заставьте систему перезагрузить sysctl.conf и примените ваши изменения с помощью команды:
sudo sysctl -p
Вы можете убедиться, что изменения были успешно применены, просмотрев файлы в каталоге / proc, которые содержат информацию о вашей системе. В этом случае используйте следующую команду, чтобы убедиться, что IPv6 отключен на уровне операционной системы:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
Если ваша система отображает 1 в качестве вывода, IPv6 был успешно отключен.
Затем вам нужно запретить UFW автоматически создавать правила брандмауэра IPv6. Даже через протокол был отключен на уровне операционной системы, UFW упорно настаивает на добавлении правил IPv6, пока это не было сказано остановиться. Это уменьшит беспорядок в вашем наборе правил и может избавить вас от некоторых затруднений в дальнейшем.
Чтобы отключить IPv6 в UFW, откройте файл / etc / default / ufw для редактирования с помощью этой команды:
sudo nano /etc/default/ufw
Прокрутите до тех пор, пока не найдете параметр для правил IPv6, и измените его, чтобы он читал:
IPV6=no
Нажмите Ctrl + X, Y, чтобы сохранить изменения. Если вы уже включили UFW перед запуском этого проекта, вам необходимо отключить его с помощью следующей команды:
sudo ufw disable
Теперь, когда IPv6 отключен во всей системе, вы можете перейти к сбору информации, необходимой для настройки аварийного выключателя VPN с помощью UFW.
Получение нужной информации
Чтобы настроить аварийный выключатель VPN в UFW, вам понадобятся три части информации:
- Публичный IP — адрес сервера VPN подключения к
- Порт и протокол сервер использует для связи
- Подсети вашей локальной сети
Эти настройки можно найти в файле конфигурации вашего VPN-сервера. Чтобы получить информацию о вашем подключении, вам нужно просмотреть конфигурацию и записать свои настройки.
Показать настройки VPN-сервера
В большинстве случаев ваша конфигурация VPN будет храниться в / etc / openvpn, но ее можно настроить в любом месте. Если вы не видите файл * .ovpn или * .conf в / etc / openvpn, проверьте свой домашний каталог.
Нужные вам порт, протокол и общедоступный IP-адрес будут в верхней части файла конфигурации. Я использовал эту команду для отображения своего, как указано выше:
head /etc/openvpn/config.ovpn
Запишите все три, так как они понадобятся вам для настройки UFW.
Показать подсеть
Вам также необходимо знать подсеть LAN, в которой находится ваш компьютер. Во многих случаях это будет 192.168.1.0/24, но если вы не уверены, рекомендуется подтвердить перед настройкой аварийного выключателя VPN с помощью UFW.
Есть несколько способов получить нужную информацию, но я рекомендую эту команду:
ip addr | grep inet
Вы увидите запись inet для каждого сетевого адаптера в вашей системе. В большинстве случаев будет всего две записи; один для адаптера обратной связи и один для адаптера локальной сети. Игнорируйте адаптер обратной петли, подсеть которого всегда будет 127.0.0.1/8, и запишите другую запись.
Настройка аварийного выключателя VPN с помощью UFW
Получив необходимую информацию, вы сможете настроить аварийный выключатель VPN с помощью UFW. Этот процесс состоит из трех этапов:
- Явно разрешите трафик LAN, чтобы сетевые службы работали даже при отключении VPN
- Запретить весь другой трафик, если он не проходит через зашифрованное соединение
- Включите UFW, чтобы активировать набор правил
Когда вы закончите, аварийный выключатель VPN станет активным. Все настройки останутся активными, даже если вы перезагрузите компьютер.
Разрешить местный трафик
Если вы полагаетесь на какие-либо ресурсы локальной сети, важно разрешить вашему компьютеру доступ к локальной сети, даже если VPN не работает. Поскольку большинство людей используют сетевую печать, а многие пользователи Linux полагаются на SSH, я действительно рекомендую вам не пропускать этот шаг.
Обратите внимание, что это разрешит входящий и исходящий трафик только в вашей локальной сети. Ваше интернет-соединение будет отключено, когда VPN не будет работать должным образом.
Вам нужно знать свою подсеть LAN из предыдущего шага и использовать эту подсеть вместо моей по адресу 192.168.1.0/24.
Используйте следующие команды, чтобы разрешить доступ к вашему компьютеру по локальной сети:
sudo ufw allow in to
Вы должны получить подтверждение при добавлении каждого правила, как указано выше.
Настройте аварийный выключатель VPN
Затем вы настроите сам аварийный выключатель. Вам нужно будет ввести всего 4 или 5 команд, но это полностью отключит ваше интернет-соединение при отключении VPN.
Для начала установите политику по умолчанию, чтобы запретить весь трафик с помощью этих двух команд:
sudo ufw default deny outgoing
Затем добавьте исключение в набор правил, позволяющее подключиться к серверу VPN. Без этой строки вы не сможете пройти аутентификацию и ваш сеанс VPN не сможет успешно начаться. Используйте порт VPN , протокол и общедоступный IP-адрес, которые вы записали на предыдущем шаге.
Убедившись, что у вас есть необходимая информация, запустите эту команду со своими настройками вместо моих:
sudo ufw allow out to 107.152.104.216 port 1194 proto udp
Теперь, когда вы можете подключиться к VPN через брандмауэр, вам нужно будет написать одно или два правила, заставляющих весь исходящий трафик проходить через это соединение. В этом руководстве я предполагаю, что ваша VPN подключается с помощью сетевого устройства tun0, поскольку это значение по умолчанию.
Если вам нужно подтвердить, вы можете подключиться к своей VPN и запустить ip addr | grep inet снова. Вы увидите дополнительную запись для VPN-подключения и сможете выбрать имя своего туннельного адаптера VPN из перечисленной информации.
Когда вы будете уверены, что знаете, какое сетевое устройство использует ваша VPN, запустите эту команду, чтобы заставить весь исходящий трафик использовать VPN:
sudo ufw allow out on tun0 from any to any
При желании вы можете разрешить подключение через VPN. Например, у вас может быть клиент BitTorrent с веб-интерфейсом, к которому необходимо подключиться из Интернета, или такая служба, как Plex, которая требует входящих подключений через VPN. При необходимости выполните эту команду, чтобы разрешить входящие соединения:
sudo ufw allow in on tun0 from any to any
После того, как вы выполнили последнюю команду, ваш аварийный выключатель VPN готов к работе.
Включить UFW
Включить UFW с вашим индивидуальным набором правил просто. Выполните эту команду, и UFW запустится при загрузке:
sudo ufw enable
Если вам нужно отключить аварийный переключатель, вы можете использовать эту команду:
sudo ufw disable
UFW запоминает созданный вами набор правил, поэтому не стесняйтесь включать и отключать брандмауэр, когда захотите. Просто помните, что когда UFW отключен, ваш интернет-трафик не может быть зашифрован.
Конечно, легко проверить, активен ли UFW или нет, и какие правила применяются к вашей сети. Проверьте статус UFW с помощью этой команды:
sudo ufw status
Это все, что нужно для настройки UFW, но есть несколько дополнительных шагов, которые я рекомендую вам предпринять, чтобы немного упростить использование OpenVPN с аварийным переключателем.
Настройка вашего VPN для автоматического подключения
Хотя этот шаг не является обязательным, установка аварийного выключателя не будет полезна, если вы не подключитесь к своей VPN автоматически. OpenVPN известен своей громоздкостью из коробки, но есть несколько приемов, которые вы можете использовать для упрощения подключения к вашей VPN.
Вот что я рекомендую:
- Запустите OpenVPN как службу, используя файл * .conf вместо профиля * .ovpn
- Сохраните свое имя пользователя и пароль, чтобы OpenVPN мог подключаться автоматически
- Используйте chmod, чтобы заблокировать конфигурацию VPN
Если вы реализуете эти три предложения, вы сможете подключиться к своей VPN автоматически, зная, что ваши учетные данные безопасны. Вы также сможете управлять своим VPN-соединением с системной консоли, что значительно упрощает остановку и перезапуск VPN-соединения.
Запустите OpenVPN как услугу
У большинства людей конфигурация VPN сохраняется с расширением файла * .ovpn. Но если вы измените расширение на * .conf и убедитесь, что файл находится в / etc / openvpn, вы сможете управлять подключением, как и любой другой системной службой.
Настроить соединение OpenVPN для работы в качестве службы так же просто, как переименовать файл. Сначала переместите существующий профиль * .ovpn в / etc / openvpn, если его там еще нет.
Затем переименуйте профиль, чтобы присвоить ему расширение файла * .conf. В моем случае я сохранил профиль OpenVPN как nord-usa.ovpn, поэтому я воспользуюсь следующей командой, чтобы переименовать его:
sudo mv /etc/openvpn/nord-usa.ovpn /etc/openvpn/nord-usa.conf
После переименования вы можете запускать и останавливать OpenVPN, как и любую другую службу systemd. Например, я бы использовал эту команду для подключения:
sudo systemctl start openvpn@nord-usa
И эту команду отключить:
sudo systemctl stop openvpn@nord-usa
Вы заметите, что OpenVPN каждый раз запрашивает у вас имя пользователя и пароль. Это не идеально, но вы можете исправить это, сохранив имя пользователя и пароль.
Сохраните ваше имя пользователя и пароль
В вашем профиле OpenVPN есть строка, которая сообщает вашему клиенту, как пройти аутентификацию. Некоторые организации используют ключи RSA, но почти для каждой потребительской VPN требуется имя пользователя и пароль. С помощью одного изменения в этой строке вы можете сохранить свой пароль, и вам больше никогда не будет предлагаться войти в систему.
Начните с открытия вашего профиля OpenVPN для редактирования. Вы захотите заменить правильное имя файла, но я использовал эту команду:
sudo nano /etc/openvpn/nord-usa.conf
Прокрутите, пока не найдете строку с надписью auth-user-pass, и измените ее следующим образом:
auth-user-pass /etc/openvpn/passwd
Это указывает OpenVPN искать ваши учетные данные в / etc / openvpn / passwd. Все, что вам нужно сделать, это создать этот файл со своим именем пользователя и паролем, и OpenVPN подключится автоматически. Используйте эту команду, чтобы создать файл и открыть его для редактирования:
sudo nano /etc/openvpn/passwd
Структура очень проста, ваше имя пользователя находится в первой строке, а ваш пароль — во второй. Убедитесь, что она выглядит, как у меня выше, а затем сохранить с помощью Ctrl + X, Y .
Теперь попробуйте снова подключиться с помощью этой команды, подставив имя своего конфига:
sudo systemctl start openvpn@nord-usa
Вы заметите, что больше нет запросов на имя пользователя и пароль, и ваш сеанс VPN начинается немедленно.
Заблокируйте конфигурацию
Каждый раз, когда вы сохраняете имя пользователя и пароль в текстовом файле, вам нужно заблокировать его, чтобы неавторизованные пользователи не могли получить доступ. Также рекомендуется убедиться, что файл, о котором идет речь, принадлежит пользователю root. Обратите внимание, что это представляет собой минимальный уровень безопасности — хеширование файла — лучший вариант, но это выходит за рамки данного руководства.
Чтобы заблокировать конфигурацию, вам нужно предпринять следующие шаги:
- Измените владельца / etc / openvpn / passwd и вашего профиля VPN на пользователя root
- Измените разрешения для обоих файлов, чтобы ограничить доступ
Когда вы закончите, ваш список каталогов должен выглядеть так, как показано выше.
Чтобы сменить владельца, вы воспользуетесь такой командой chown, заменив имя своего профиля OpenVPN на мое:
sudo chown root:root /etc/openvpn/nord-usa.conf
Установка права собственности на root предотвратит изменение пользователями разрешений на что-то менее безопасное. Правильные разрешения позволят только пользователю root читать файл, а это все, что OpenVPN должен иметь возможность подключаться, когда он запускается как служба. Никакие другие пользователи в вашей системе не смогут увидеть учетные данные в виде открытого текста.
Чтобы изменить разрешения, используйте эти команды:
sudo chmod 400 /etc/openvpn/nord-usa.conf
Когда вы закончите, перечислите содержимое каталога OpenVPN с помощью этой команды:
ls -la /etc/openvpn/
Вы увидите, что владельцем теперь является root, и только root имеет доступ для чтения к файлам. Когда вы закончите блокировать права доступа к файлам, можно безопасно настроить OpenVPN на автоматический запуск при загрузке.
Автоматическое подключение к вашей VPN
Все, что осталось, — это сообщить systemd, что вы хотите, чтобы OpenVPN подключался при загрузке вашего компьютера. Вы можете сделать это с помощью одной команды, заменив имя вашего профиля на nord-usa :
sudo systemctl enable openvpn@nord-usa
Вы закончили, и OpenVPN теперь будет подключаться каждый раз, когда вы запускаете свой компьютер. Он полностью защищен аварийным переключателем UFW, и вы можете быть уверены, что незашифрованный трафик не покинет сеть с вашей рабочей станции.
Лучшее изображение, разрешенное для повторного использования Codeproject.com