OpenVPN - относительно безопасный инструмент, но лишь при его правильном использовании.
Дело в том, что запуская OpenVPN он не блокирует (и не шифрует) трафик, который может пройти мимо vpn в случае, если ваш сервер vpn по каким-то причинам стал недоступен, либо у вас временно пропала связь. Для того чтобы обезопасить отправляемую и принимаемую информацию необходимо настроить фаервол на стороне клиента таким образом, дабы ему можно было отправлять и принимать пакеты лишь с одного и на один сервер, то есть лишь на ваш vpn-сервер, все остальные подключения должны отсекаться.
Настраиваем iptables
Cоздаём файл со следующим содержанием:
Где XXX.XXX.XXX.XXX - адрес VPN-сервера.
Кладём его например в /etc/openvpn/iptables.rules.
NB! обратите внимание на то, нет ли в вашем iptables каких-либо правил по команде iptables-save, если есть - добавьте в конфиг, иначе они затрутся; либо перепишите правила командами iptables
Пишем удобные скрипты запуска OpenVPN
По тому же адресу создаём скрипт /etc/openvpn/vpn_up.sh:
Где /etc/openvpn/config.ovpn - путь к вашему конфигу.
Запускаем OpenVPN и применяем правила iptables при загрузке системы
Добавляем в файл /etc/rc.local запуск скрипта:
Смотрим статус/отключаем OpenVPN
Бывают ситуации когда OpenVPN перестаёт работать и необходимо посмотреть что произошло, либо его вообще необходимо отключить.
Логинимся под root и заходим в screen:
Смотрим всё ли в порядке, если что - отключаем по сочетанию Ctrl+C.
Но это не всё, необходимо обнулить правила фаервола, чтобы он пустил нас без VPN.
Создаём скрипт ~/.bin/iptables_flush:
Выполняем, готово!
Дело в том, что запуская OpenVPN он не блокирует (и не шифрует) трафик, который может пройти мимо vpn в случае, если ваш сервер vpn по каким-то причинам стал недоступен, либо у вас временно пропала связь. Для того чтобы обезопасить отправляемую и принимаемую информацию необходимо настроить фаервол на стороне клиента таким образом, дабы ему можно было отправлять и принимать пакеты лишь с одного и на один сервер, то есть лишь на ваш vpn-сервер, все остальные подключения должны отсекаться.
Настраиваем iptables
Cоздаём файл со следующим содержанием:
Код:
*filter
:INPUT DROP [145:11482]
:FORWARD DROP [0:0]
:OUTPUT DROP [18518:3426455]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -d XXX.XXX.XXX.XXX/32 -p tcp -j ACCEPT
-A OUTPUT -d XXX.XXX.XXX.XXX/32 -p udp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT
-A OUTPUT -o tun1 -j ACCEPT
COMMIT
Кладём его например в /etc/openvpn/iptables.rules.
NB! обратите внимание на то, нет ли в вашем iptables каких-либо правил по команде iptables-save, если есть - добавьте в конфиг, иначе они затрутся; либо перепишите правила командами iptables
Пишем удобные скрипты запуска OpenVPN
По тому же адресу создаём скрипт /etc/openvpn/vpn_up.sh:
Код:
#!/bin/sh
# подгружаем правила [статья с https://ufolabs.pro]
iptables-restore </etc/openvpn/iptables.rules
# запускаем openvpn в screen (если его нет, то ставим, либо используем nohup)
screen -dmS openvpn --config /etc/openvpn/config.ovpn
Запускаем OpenVPN и применяем правила iptables при загрузке системы
Добавляем в файл /etc/rc.local запуск скрипта:
Код:
...
/bin/sh /etc/openvpn/vpn_up.sh
...
Бывают ситуации когда OpenVPN перестаёт работать и необходимо посмотреть что произошло, либо его вообще необходимо отключить.
Логинимся под root и заходим в screen:
Код:
$ sudo su
# screen -x openvpn
Но это не всё, необходимо обнулить правила фаервола, чтобы он пустил нас без VPN.
Создаём скрипт ~/.bin/iptables_flush:
Код:
#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT