Настраиваем VPN сервер на Debian, шифруем трафик

сетевая безопасность

В последнее время наблюдается тенденция продвижения непонятных законов, связанных с контентом в интернете. Для защиты от неприятных ситуаций есть неплохое решение — шифрование своего трафика, при помощи vpn тунеля.

Также такое решение поможет защитить ваш трафик если вы пользуетесь не защищенными wifi сетями, или в случае бана на каких либо сайтах по ип.

Инструкция по установке OpenVPN на VDS с Debian

1. После получения доступа к серверу, первым делом мы должны загрузить и установить дистрибутив OpenVPN. Это делается простейшей командой

apt-get install openvpn

На момент публикации в дебиан-пакете была версия 2.0.9.

2. Далее, для работы сервера необходимо создать файлы ключей, сертификатов и конфиг для сервера.

Генерация ключей.

Ищем папку с утилитами для генерации ключей (easy-rsa). В моем случае это было здесь :

/usr/share/doc/openvpn/examples/easy-rsa/2.0/

и последовательно выполняем команды:
./vars
(необходимо для того, чтобы следующие команды знали, что они работают с директорией /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ )

./clean-all
(инициализация директории с ключами – должна появиться та самая keys/ )

./build-ca
(создает ca.crt – файл главного Certificate Authority сертификата)

./pkitool —server server
(генерирует X.509 сертификат для сервера – пару файлов server.crt и server.key)

./pkitool client
(генерирует такой же серт для юзера – client.crt и client.key)

./build-dh
(генерирует ключ Диффи-Хельмана – dh1024.pem)

openvpn —genkey —secret keys/ta.key
(генерирует ключ для TLS-аутентификации)

Здесь приведены размеры и параметры ключей по умолчанию (1024 бита), естественно, при желании, можно сделать ключи разной длины, просто добавьте параметры)

Назначение полученных файлов хорошо описано в статье
Настройка VPN на основе OpenVPN :

ca.crt — Главный CA сертификат, этот файл нужен и клиенту и серверу
dh1024.pem — ключ Диффи Хельман, этот файл нужен только серверу
server.crt — Сертификат сервера, нужен только серверу
server.key — Ключ сервера, нужен только серверу (СЕКРЕТНЫЙ файл)
client.crt — Сертификат клиента, нужен только клиенту
client.key — Ключ клиента, нужен только клиенту (СЕКРЕТНЫЙ файл)
ta.key — TLS-ключ, нужен и клиенту и серверу

Следовально,
серверу достаются файлы ca.crt, dh1024.pem, server.crt, server.key, ta.key,
а клиенту – ca.crt, dh1024.pem,client.crt, client.key, ta.key

Закидываем файлы, необходимые для сервера, в /etc/openvpn/
Туда же кидаем файл openvpn.config примерно следующего содержания:
(конфиг берем аналогичный рассмотренному в той же статье, мой выглядел так)

daemon
proto udp
local 82.146.57.24 # сюда ставим IP адрес нашего VDS-сервера.
dev tap
port 5278 # по этому порту будут происходить клиентские коннекты.
tls-server
tls-auth /etc/openvpn/ta.key 0
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
mode server
server 10.7.0.0 255.255.255.0 # маска подсети, в которой будут виртуализироваться клиенты и сервер.
push «dhcp-option DNS 82.146.51.164» # здесь пишем IP одного из ns-сервером, указанных нам при регистрации VDS.
duplicate-cn
cipher DES-EDE3-CBC
#cipher none
user root
group root
persist-tun
persist-key
comp-lzo
keepalive 10 120
verb 3
client-to-client

3. Итак, сервер OpenVPN у нас готов к запуску, однако нам еще необходимо позаботиться о том, чтобы можно было из виртуальной локальной сети, в которую мы попадаем при подключении к VPN-серверу, достучаться до внешней части Инторнета. Перед настройкой придется обратиться за помощью в техподдержку minivds для того, чтобы они включили интерфейсы tun и tap, необходимые для работы OpenVPN, и включили NAT (иначе мы не сможем прописать роутинг). После того, как добрый и отзывчивый сапорт поможет нам и сообщит о том, что все включено и готово к действию, мы должны добавить одну запись в таблицу nat iptables:

iptables -t nat -A POSTROUTING -s 10.7.0.0/24 -o venet0 -j SNAT —to-source 82.146.57.24

Проверить, добавлена ли цепочка в роутинг, можно следующей командой:

iptables -t nat -L

4. Ок, теперь мы можем запустить OpenVPN командой

openvpn /etc/openvpn/openvpn.config

Осталось настроить клиент.

5. Настройка клиента.

Загружаем дистр клиента OpenVPN для Windows (если у вас Windows Vista, то лучше пробовать самые последние версии, счс например, 2.1), при инсталляции долго не думаем, жмем везде на Next и OK, оставляя все значения дефолтными. Допустим, мы установили клиент в C:\Program Files\OpenVPN\.

Берем файлы, необходимые для клиента, закидываем в директорию C:\Program Files\OpenVPN\config. И добавляем туда еще 1 файл – с расширением .ovpn – этот файл будет содержать конфиг клиента. Если таких файлов в директории несколько, то OpenVpnGUI будет предоставлять вам выбор, к какому серверу подключаться (точнее, какой из имеющихся конфигов использовать).

File MyVpnConfig.ovpn:

client #указываем OpenVPN, что необходимо работать в режиме клиента
proto udp #указываем, что сервер работает через udp
remote 82.146.57.24 #хост, к которому присоединяемся
port 5278 #порт к которому следует подключатся
dev tun #используемый тип устройства tap
resolv-retry infinite #количество повторов соединения
redirect-gateway #ВАЖНО! переназначить стандартный шлюз на шлюз VPN
persist-tun #Не закрывать и переоткрывать TUN\TAP устройство, после получения SIGUSR1 или ping-restart
persist-key #Не перечитывать ключи после получения SIGUSR1 или ping-restart
tls-client #указываем, что подключение осуществляется по средствам tls-ключа
tls-auth ta.key 1 #указываем tls-ключ, и указываем 0 для сервера, а 1 для клиента
dh dh1024.pem #указываем файл Диффи Хельман
ca ca.crt #указываем файл CA
cert client.crt #указываем файл с сертификатом клиента
key client.key #указываем файл с ключем клиента
cipher DES-EDE3-CBC # Triple-DES #включаем шифрацию пакетов
#cipher none
comp-lzo #Включить сжатие траффика
verb 3 #Уровень информации для отладки
dev tap

При использовании Windows XP далее проблем уже быть не должно, все должно прекрасно работать и шифроваться, достаточно лишь запустить OpenVPN-GUI и наслаждаться.

Если же у вас Windows Vista, то, во-первых, вам придется добавить в конец конфига 2 строчки:

route-method exe
route-delay 2

И запускать OpenVPN-GUI от имени Администратора (контекстное меню – Run As Administrator).
После этих манипуляций, Vista у меня перестала ругаться на невозможность изменения роута, и все заработало, как и следовало.

Данная инструкция была взята с сайте http://elwood.su/?p=8 Большое спасибо автору.

Но у меня после выполнения данной инструкции, впн тунель подключался, но на клиенте интернет не заработал. После небольших раздумий и поисков в интернет, было проделано следующее.

в /etc/network/if-up.d/  создаем файл iptables в нем код

#!/bin/bash
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
echo «1» > /proc/sys/net/ipv4/ip_forward
openvpn /etc/openvpn/openvpn.config

Ставим права на использование для него

chmod +x /etc/network/if-pre-up.d/iptables

Таким образом после перезагрузки автоматически применяться правила для iptables.

Небольшое изменение конфига OpenVPN, для чтобы несколько клиентов не могли зайти одновременно используя один и тот же сертификат, необходимо добавить параметр ;duplicate-cn в файл openvpn.config

Для того чтобы добавить сертификат для еще одного клиента, необходимо выполнить команду изменив имя пользователя, и после выполнения команды подредактировать имя в конфиге клиента

./pkitool client

Leave a Reply