MyTetra Share
Делитесь знаниями!
Тонкая настройка OpenVPN в Linux - Не пропускаем трафик мимо OpenVPN
Время создания: 10.09.2015 14:21
Текстовые метки: OpenVPN, vpn, траффик, настройка
Раздел: Компьютер - Web / Internet - VPN - Virtual Private Network
Запись: xintrea/mytetra_syncro/master/base/1441884119aebujenv2p/text.html на raw.github.com

Не пропускаем трафик мимо OpenVPN

OpenVPN - относительно безопасный инструмент, но лишь при его правильном использовании.

Дело в том, что запуская 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


Где XXX.XXX.XXX.XXX - адрес VPN-сервера.

Кладём его например в /etc/openvpn/iptables.rules.

NB! обратите внимание на то, нет ли в вашем iptables каких-либо правил по команде iptables-save, если есть - добавьте в конфиг, иначе они затрутся; либо перепишите правила командами iptables


Пишем удобные скрипты запуска OpenVPN

По тому же адресу создаём скрипт /etc/openvpn/vpn_up.sh:

#!/bin/sh


# подгружаем правила

iptables-restore </etc/openvpn/iptables.rules

# запускаем openvpn в screen (если его нет, то ставим, либо используем nohup)

screen -dmS openvpn --config /etc/openvpn/config.ovpn


Где /etc/openvpn/config.ovpn - путь к вашему конфигу.


Запускаем OpenVPN и применяем правила iptables при загрузке системы

Добавляем в файл /etc/rc.local запуск скрипта: ... /bin/sh /etc/openvpn/vpn_up.sh ...


Смотрим статус/отключаем OpenVPN

Бывают ситуации когда OpenVPN перестаёт работать и необходимо посмотреть что произошло, либо его вообще необходимо отключить.

Логинимся под root и заходим в screen:

$ sudo su

# screen -x openvpn


Смотрим всё ли в порядке, если что - отключаем по сочетанию Ctrl+C.

Но это не всё, необходимо обнулить правила фаервола, чтобы он пустил нас без 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



Выполняем, готово!


 
MyTetra Share v.0.59
Яндекс индекс цитирования