Установка и настройка OpenVPN сервера

Хотите защитить конфиденциальную информацию при работе в открытых Wi-Fi-сетях? Желаете анонимно посещать различные ресурсы, заходить на запрещенные сайты, общаться в социальных сетях на работе? Самый надежный вариант – развертывание собственного OpenVPN-сервера.
VPN – виртуальная сеть, построенная поверх общедоступных сетей. По сути, VPN – это защищенный туннель (соединение точка-точка), устанавливаемый на базе общедоступной сети, между сервером и отдельными компьютерами или сетями.
Главные особенности VPN – аутентификация и контроль доступа, шифрование всех передаваемых данных внутри туннеля. Никто, даже провайдер, не сможет узнать, какие сайты посещаете, и какую информацию получаете/передаете.
Область использования VPN
Вполне понятно, зачем использовать технологию VPN в корпоративной сфере. Она позволяет защитить корпоративную сеть, секретную информацию, которая никак не должна попасть в руки конкурентов. В современных условиях ведения бизнеса VPN – необходимость, поскольку обеспечивает:
- безопасный доступ из локальной корпоративной сети в интернет;
- безопасное объединение локальных сетей филиалов компании, расположенных в разных районах или городах;
- ограничение доступа к частной сети;
- защищенный канал доступа к корпоративной локальной сети для сотрудников, работающих удаленно (на дому, в командировке и т. п.);
Однако, сегодня развертывание собственного VPN-сервера получило большое распространение среди частных лиц. Итак, зачем же кому-то выходить в интернет через шифрованный туннель? Такое решение открывает огромные возможности:
- защита передаваемых/получаемых данных, например паролей, персональной информации при использовании открытых точек доступа Wi-Fi, например в гостиницах;
- сокрытие трафика от провайдера;
- использование статического IP-адреса (адреса сервера), что порой бывает необходимым условием при доступе к определенным ресурсам, игровым серверам;
- возможность посещать различные сайты, форумы, оставлять комментарии анонимно (будет отображаться IP-адрес сервера, а соответственно никто не сможет определить ваше настоящее местоположение);
- посещение недоступных или запрещенных в вашем регионе сайтов;
- возможность обойти блокировку Вконтакте, YouTube и других развлекательных сервисов на рабочем месте;
- ускорение загрузки веб-сайтов (данные не только шифруются, но и сжимаются).
Типы VPN-протоколов
- IPSec (IP security) — обычно работает поверх IPv4.
- PPTP — устанавливает защищенное соединение (туннель) типа точка-точка в незащищенной сети. Данные передаются в виде IP-пакетов (кадров). Над созданием протокола работало сразу несколько фирм, в том числе и Microsoft.
- PPPoE – протокол точка-точка по каналу Ethernet;
- L2TP — протокол преимущественно применяется в разработках Microsoft і Cisco. Он основан на технологии PPTP и выделяется большей защищенностью.
- OpenVPN SSL — это протокол VPN, распространяющийся с открытой лицензией. Среди его достоинств: поддержка PPP, bridge, point-to-point, multi-client server, простота и гибкость настройки, надежность, свободное распространение программного обеспечения.
Что выбрать: собственный VPN-сервер или коммерческие сервисы?
Сейчас в интернете можно встретить множество коммерческих сервисов, предлагающих возможность использовать уже настроенный VPN-сервер, а также открытых прокси-сервисов. Зачем все усложнять?
Есть несколько причин самостоятельно настроить собственный VPN-сервер. Во-первых, безопасность.
Большинство открытых прокси-серверов, с помощью которых можно обойти блокировку сайтов и анонимно посещать различные ресурсы, не гарантируют защиту персональной информации. Многие компании являются мошенниками, отслеживающими поток передаваемых данных. К тому же, многие иностранные ресурсы уже внесли IP-адреса открытых серверов в черный список, поэтому никаких гарантий, что в очередной раз вы сможете посетить запрещенный в РФ сайт, нет.
Второе – цена. Да, существуют надежные поставщики услуг, предоставляющие возможность арендовать уже настроенный VPN-сервер, но и расценки у них обычно в несколько раз превышают цену аренды VPS-сервера.
Устанавливаем OpenVPN сервер
Процесс установки приведен для Linux Debian. Эта система отличается высокой надежностью и минимальными требованиями к аппаратным ресурсам.
Для начала подключаемся к серверу с root-правами. Инсталляцию программного обеспечения на семействе операционных систем Linux следует начинать с обновления индекса пакетов до последних версий. Для этого вводим команды:
apt-get update
apt-get upgrade
В процессе установки операционная система отправляет запрос к репозиторию, скачивает и устанавливает нужные файлы. Операция может занять несколько минут.
Устанавливаем программное обеспечение OpenVPN и OpenSSL на сервере:
apt-get install openvpn openssl
В процесс инсталляции открывается диалог, в котором спрашивается, желаем ли мы продолжить? Вводим Y и нажимаем Enter .
Чтобы не путаться или случайно не удалить нужный файл, лучше создать отдельную папку для сформированных ключей. Еще одна причина – в случае обновления сервера конфигурации сбиваются. Вводим команду:
mkdir /etc/openvpn/easy-rsa/
Для формирования ключей шифрования нужны специальные утилиты. Они уже предустановлены в системе в папке с документацией, поэтому остается скопировать и поместить компоненты в новый каталог:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
Обратите внимание! Мы используем версию OpenVPN 2.2.1-2, в состав которой входит пакет easy-rsa. Для версий OpenVPN 2.3 или выше его нужно скачать и установить отдельно. Операция займет одну-две минуты. Устанавливаем пакет:apt-get install easy-rsa
Расположение будет другим, поэтому для копирования вводим:cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
Чтобы при установке ключей не прописывать повторяющиеся данные раз за разом, отредактируем документ vars:
nano /etc/openvpn/easy-rsa/vars
В конце документа редактируем блок:
В результате должно получиться:
Желательно вводить правдивые данные. Хотя можно задать любую информацию или оставить все как есть. Выходим и сохраняем документ. Далее переходим в каталог с файлом vars и активируем сделанные изменения:
cd /etc/openvpn/easy-rsa/
source vars
Мы провели необходимые подготовительные работы, можно генерировать новые ключи, которые появятся во вложенном каталоге /keys. Директория создается автоматически и переходить никуда не нужно. Но сначала очищаем папку от имеющихся ключей и конфигов:
./clean-all
Формируем корневой сертификат:
./build-ca
Ключ сервера:
./build-key-server server
В ходе установки система предлагает задать пароль (по желанию поле можно оставить пустым). Дважды соглашаемся с сертификацией ( Y и Enter ).
Теперь формируем клиентский сертификат. В дальнейшем его нужно будет скопировать на свой компьютер:
./build-key user
На данном этапе система вновь предлагает задать пароль, просто пропускаем.
Формируем криптографический ключ Диффи-Хеллмана:
./build-dh
Формируем ключ tls-аутентификации:
openvpn --genkey --secret keys/ta.key
Появившиеся ключи копируем в /etc/openvpn - непосредственно к этой директории подает запросы сервер OpenVPN:
cd keys
cp server.crt server.key ca.crt dh1024.pem ta.key /etc/openvpn/
Обратите внимание, в папке остались файлы: user.crt, user.key, ca.crt, ta.key. Они будут использоваться на локальном ПК, с которого мы хотим получить анонимный доступ в глобальную сеть. Последний (ta.key) используется для tls-аутентификации.
Настраиваем OpenVPN-сервер
Формируем документ server.conf, содержащий основные настройки VPN-сервера: путь к файлам ключей, количество максимальных подключений, и др. В пакет поставки уже входит файл с рабочей конфигурацией, однако для запуска OpenVPN-сервера нужно изменить несколько параметров.
Копируем файл с конфигурациями в рабочий каталог VPN-сервера:
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
Распаковываем документ из архива:
gzip -d /etc/openvpn/server.conf.gz
Открываем файл (команда – nano etc/openvpn/server.conf
). Нам нужны следующие строки:
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
Перед названием каждого ключа прописываем путь, в результате должно получиться:
ca etc/openvpn/ca.crt
cert etc/openvpn/server.crt
key etc/openvpn/server.key
dh etc/openvpn/dh1024.pem
Теперь включаем шифрование и перенаправляем трафик с компьютера через VPN-сервер.
Для активизации tsl-шифрования нам нужны строки:
tls-auth ta.key 0
cipher DES-EDE3-CBC
Удаляем перед ними знак “;” (раскомментируем) – это необходимо, чтобы включить строку в обработку, а также добавляем путь к расположению ключа, чтобы получилось: tls-auth /etc/openvpn/ta.key 0
.
Остается перенаправить трафик. Раскомментируем строки:
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 193.183.98.154"
push "dhcp-option DNS 217.12.210.54"
Первая строка разрешает выход в интернет. Если ее не раскоментировать в файле конфигурации, то мы будем иметь доступ только к компьютерам, входящих в локальную сеть. Вторая и третья строки - общедоступные DNS-серверы. Можно подобрать и другие серверы.
Задаем правило маршрутизации трафика:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
OpenVPN-сервер установлен и настроен. Для запуска вводим:
openvpn /etc/openvpn/server.conf
Обратите внимание! На некоторых VPS-серверах может быть отключен сетевой драйвер TUN, необходимый для работы OpenVPN-сервера. Чтобы проверить – введите команды:openvpn --dev tun1 --ifconfig 10.9.8.1 10.9.8.2
ifconfig –a
Если система выдает ошибку, нужно обратится к провайдеру для запуска драйвера.
Настраиваем Windows-клиент
Сначала скопируем пользовательские ключи с сервера к себе на компьютер. Для этой цели можно воспользоваться программой WinSCP. Запускаем приложение:
В поле «Имя хоста» вводим IP-адрес сервера, «Имя пользователя» - по умолчанию root, вставляем пароль, нажимаем кнопку «Войти». Перед нами открывается графический клиент, напоминающий Norton Commander. Слева – содержимое локального ПК, справа – сервера. Заходим в /etc/openvpn/easy-rsa/keys (на сервере) и простым перетаскиванием в предварительно открытую папку копируем файлы (user.crt, user.key, ca.crt, ta.key) на свой ПК.
Скачиваем OpenVPN-клиент с официального сайта.
Устанавливаем программу, оставляя стандартные настройки. По завершении заходим в папку с программой, в подкаталог openvpn/sample-config. Здесь содержатся примеры конфигов. Данные одинаковы для разных платформ. Открываем документ client.ovpn – в нем приведены конфигурации для работы клиента. Находим строку:
remote my-server-1 1194
Здесь указываем IP-адрес VPN-сервера заменяя «my-server-1». Сохраняем изменения и копируем файл в корневую папку OpenVPN. Сюда же копируем заранее скопированные ключи: user.crt, user.key, ca.crt. Переименовываем файлы: заменяем «user» на «client».
Также нужно найти и раскоментировать следующие строки, ничего менять не нужно:
tls-auth ta.key 1
cipher DES-EDE3-CBC
Обратите внимание! Параметр tls-auth ta.key на клиентском компьютере заканчивается единицей, тогда как на сервере – 0.
Для запуска соединения щелкаем правой кнопкой мыши на файле client.ovpn → Start OpenVPN.
Соединение установлено, теперь весь трафик с ПК будет проходить через удаленный VPN-сервер.