Настраиваем openvpn сервер на подключение клиентов

Введение

Идея настроить мониторинг openvpn подключений с помощью zabbix витала у меня давно, но никак не доходили руки. Когда выбрал время и сел настраивать, сходу не придумал, а как же лучше это сделать. Так как в задаче много нюансов, то и подходов тоже может быть несколько.

Изначально я думал как-нибудь распарсить лог openvpn и вытаскивать подключенных пользователей оттуда. После того, как внимательно посмотрел на основной лог, понял, что это не самая простая задача, пришлось бы повозиться, чтобы все отладить.

Перед настройкой решил погуглить и посмотреть, что уже есть из готового. И сразу же нашел вот этот проект – https://github.com/Grifagor/zabbix-openvpn. Идею быстро понял, оценил все плюсы и минусы и решил не заморачиваться сам, а взять готовое, благо тут все в комплекте:

  • Скрипты
  • Конфиги
  • Шаблон с автообнаружением, графиками и триггерами.

Шаблон имеет следующие элементы в своем составе:

  1. Итемы для мониторинга за полученным и переданным трафиком пользователя.
  2. Итемы для мониторинга за статусом подключения, отключения пользователя.
  3. Триггер со срабатыванием на подключение и отключение пользователя.
  4. График полученных, отправленных данных в байтах.
  5. График со статусом подключения пользователя.
  6. Количество подключенных пользователей к openvpn серверу.

Все эти итемы, графики и триггеры создаются автоматически для каждого пользователя.

Минус один и весьма существенный – добавление итемов в виде отдельных пользователей работает через автообнаружение конфигураций пользователей в директории с ccd. Для того, чтобы приведенный способ мониторинга openvpn подключений работал, у вас должны существовать индивидуальные конфигурации пользователей, заданные в конфиге openvpn параметром client-config-dir.

Сами конфигурации пользователей могут быть пустыми. Их содержимое не используется. Они нужны только для того, чтобы получить имя пользователя и затем по этому имени анализировать лог файл состояния openvpn, настроенный с помощью параметра status в конфигурации openvpn сервера.

В принципе, скрипт обнаружения пользователей можно переделать и искать логины по сертификатам, если они у вас хранятся на сервере. Но с этим тоже есть нюансы. Какие-то сертификаты могут быть отозваны, либо вообще не храниться на сервере. Им там, по большому счету, делать нечего.

С учетом указанных особенностей мониторинга openvpn, переходим к настройке. Возможно, у меня что-то не будет совпадать точь в точь с тем, что есть в репозитории github, так как редактировал под свои реалии, причем достаточно давно. Нюансов уже не помню, буду приводить свои конфиги как есть.

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

  1. Установка CentOS 8.
  2. Настройка CentOS 8.
  3. Установка и настройка zabbix сервера.

То же самое на Debian 10, если предпочитаете его:

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

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

На сервере:

На сервере генерируем сертификат для клиента. Для этого сначала чистим файл index.txt в папке C:Program FilesOpenVPNeasy-rsakeys.

Затем запускаем командную строку от имени администратора:

Переходим в каталог easy-rsa:

И генерируем сертификат первого пользователя:

* на все запросы наживаем Enter, кроме Common Name — в данном поле вводим имя клиента (в нашем случае, просто client1). В конце подтверждаем введенную информацию — y. ** На каждого клиента нужно сгенерировать свой сертификат, в противном случае, им будет присваиваться один и тот же IP-адрес, что будет приводить к конфликту.

Получиться, что-то на подобие:

Теперь из папки keys копируем файлы client1.crt, client1.key, ca.crt и dh2048.pem и переносим их на клиентский компьютер.

На клиенте:

Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:

* по сути, это тот же файл, который скачивался для сервера.

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

Переходим в папку C:Program FilesOpenVPNconfig. И копируем в нее сертификаты, которые перенесли с сервера.

Теперь открываем блокнот от имени администратора и вставляем следующие строки:

client resolv-retry infinite nobind remote 192.168.0.15 443 proto udp dev tun comp-lzo ca ca.crt cert client1.crt key client1.key dh dh2048.pem float cipher DES-CBC keepalive 10 120 persist-key persist-tun verb 0

* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы. Для боевой среды это будет внешний адрес.

Сохраняем файл с именем config.ovpn в папке C:Program FilesOpenVPNconfig.

Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно). Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.

Настроим сам сервер

zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
nano /etc/openvpn/server.conf
local IP_АДРЕС_ВАШЕГО_СЕРВЕРА
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client # раскомментируйте, если хотите иметь доступ между клиентами внутри вашего VPN
log /var/log/openvpn.log # раскомментируйте, если нужны логи
duplicate-cn # раскомментируйте, если хотите использовать один сертификат для всех пользователей

# Для включения tls-auth, необходимо добавить (без #)
# tls-auth ta.key 0

# Если хотите спрятать сервер от китайских ботов, поменяйте стандартный порт на любой другой. Только не забудьте прописать этот же порт в настройках клиента.
port 1194
nano /etc/rc.local
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
nano /etc/sysctl.conf
net.ipv4.ip_forward=1
reboot

Настройка OpenVPN на Windows 7

пошаговая инструкция с картинками

Настройка VPN на Windows 7: OpenVPN · PPTP · L2TP · PPPoE

Рады приветствовать Вас на нашем сайте! Настоящая инструкция призвана помочь Вам настроить VPN-подключение при помощи клиента OpenVPN для операционной системы Windows 7.

Организация VPN-сервера на Windows 7 может понадобиться по разным причинам, но чаще всего VPN-сервер необходим для организации удаленного доступа к другому компьютеру дома или в офисе. Однако, перед созданием VPN-канала вы должны обладать правами администратора на своем компьютере, а также иметь доступ к своему роутеру, если понадобится в процессе настройки произвести проброс портов (port forward).

Для того, что бы настроить VPN-канал через OpenVPN для ОС Windows 7 Вам нужны:

  • Операционная система Windows 7;
  • программа OpenVPN;
  • конфигурационный файл от провайдера.
Ищите VPN провайдера? Мы поможем с выбором!

Посмотрите наш рейтинг VPN сервисов с 5-ю лучшими предложениями на рынке.

Итак, приступим к настройке VPN-подключения с помощью OpenVPN.

1. Первое, что Вам нужно сделать, это скачать на свой компьютер установщик программы OpenVPN (взять ее можно на официальном сайте). Установщик либо скачиваем на свой компьютер, либо сразу нажимаем кнопку «Запустить», как показано на скриншоте ниже

2. После того, как вы нажали «Запустить», начнется собственно сам процесс скачивания установщика

3. После завершения загрузки Вам предложат установить программу на Ваш компьютер, Вы соглашаетесь и нажимаете снова кнопку «Запустить», смотрим рисунок ниже

4. В самом начале установки нажимаем кнопку C:Program FilesOpenVPN.

5. Затем Вам будет предложено ознакомиться с лицензией на использование устанавливаемого программного обеспечения, после прочтения которого кликаете «I Agree» («Принимаю»)

6. В следующем окне перечислен набор компонентов, которые будут установлены на Ваш компьютер, здесь ничего не меняете и нажимаете снова «Next» («Далее»)

7. В этом окне вы можете выбрать путь, куда устанавливать программу, по умолчанию OpenVPN будет установлена в папку C:Program FilesOpenVPN. Если Вас этот путь устраивает, нажимаете кнопку «Install» («Установить»)

8. Во время установки программы на экран будет выведено окно, где Вам нужно подтвердить установку драйвера, нажимаете «Установить»

9. Ждете окончания процесс установки программы и нажимаете в очередной раз кнопку «Next» («Далее»)

10. После того, как установка завершится, нажимаете кнопку «Finish» («Завершить»)

11. Теперь Вам нужно скопировать конфигурационный файл, полученный от провайдера, в папку по этому пути: C:Program FilesOpenVPNconfig, для этого заходите в указанную папку, вызываете контекстное меню и выбираете «Вставить»

12. После этого у вас на экране появится запрос о доступе, где Вы нажимаете «Продолжить»

13. Для того, что бы OpenVPN работал корректно, его нужно запускать с администраторскими правами. В операционной системе для этого Вы должны изменить свойства совместимости. Для этого заходите в меню «Пуск» и щелкаете по ярлыку OpenVPN-GUI правой кнопкой мыши и выбираете пункт «Свойства»

14. Переходите во вкладку «Совместимость» и выставляете «Галочку» напротив пункта «Выполнять эту программу от имени администратора», затем нажимаете «ОК»

15. Запускаете OpenVPN-GUI из меню «Пуск»

16. Открываете меню программы в трее (справа в углу) и выбираете пункт «Connect» («Подключить»)

17. После этого у Вас на экране должно запуститься окно с содержимым лога подключения

18. Если Вы все сделали верно, в трее появится подсказка о подключении VPN

Выполнив эти восемнадцать простых пунктов, теперь Вы сможете самостоятельно настроить VPN-канал через протокол OpenVPN для операционной системы Windows 7.

Создание клиента

Создание ключей и сертификатов

Ключи клиента создаются на сервере

Переходим в созданную директорию, где и замёмся генерацией ключей и сертификатов

cd /etc/openvpn/easy-rsa/2.0

Загружаем переменные

source vars

Создаем ключ клиента

В данном случае название ключа — client. Каждый ключ должен быть со своим именем.

./build-key client

Если хотим защитить ключ паролем, то генерируем его другой командой

./build-key-pass client

В этом случае при запуске соединения нужно будет каждый раз вводить пароль на ключ.

Теперь нужно не забыть скопировать ключи (ca.crt, client.crt, client.key, ta.key) на клиента OpenVPN в /etc/openvpn/keys/

Если планируется на клиенте импортировать файл настроек .ovpn вместе с сертификатами и ключами, например, для Android, важно в конфигурации клиента исключить строку tls-auth, вместо нее добавить key-direction 1. В противном случае будет ошибка вида tls error: incoming packet authentication failed from

Создание файла конфигурации клиента

/etc/openvpn/client.conf

client
dev tun
proto udp

# Внеший IP, на или за которым находится ваш сервер OpenVPN и порт (на сервере или роутере, за которым стоит сервер)
remote 111.222.333.444 1194

# необходимо для DynDNS
resolv-retry infinite

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/client.crt
key /etc/openvpn/keys/client.key
tls-client
tls-auth /etc/openvpn/keys/ta.key 1
auth SHA1
cipher AES-256-CBC
remote-cert-tls server
comp-lzo
persist-key
persist-tun

status openvpn-status.log
log /var/log/openvpn.log
verb 3
mute 20

ИЛИ единый файл конфигурации клиента client.ovpn с сертификатами и ключами для импорта

client
dev tun
proto udp

# Внеший IP, на или за которым находится ваш сервер OpenVPN и порт (на сервере или роутере, за которым стоит сервер)
remote 111.222.333.444 1194

# необходимо для DynDNS
resolv-retry infinite

tls-client

# Строка tls-auth /etc/openvpn/keys/ta.key 1, как выше говорилось, заменяется на 
key-direction 1

auth SHA1
cipher AES-256-CBC
remote-cert-tls server
comp-lzo
persist-key
persist-tun

verb 3
mute 20

# Далее идут сертификаты и ключи которые берутся из соответствующих файлов сгенерированных выше

# Из ca.crt
<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>

# Из client.crt
<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>

# Из client.key
<key>
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
</key>

# Из ta.key
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
...
-----END OpenVPN Static key V1-----
</tls-auth>

Можно запускать наш клиент OpenVPN

service openvpn restart

Настройка маршрутизации на стороне клиента

Машина с openvpn уже готова работать с сервером в чём можно убедится

ping -c 2 10.8.0.1
ping -c 2 192.168.1.100

Но для того, чтобы пользоваться туннелем в другой офис могли другие устройства в локальной сети нужно указать им, чтобы доступ в подсеть 192.168.1.0/24 осуществляется через 192.168.0.100. Или, что часто проще и быстрее прописать это правило маршрутизации на роутере, который является шлюзом для устройств в сети.

Как установить и настроить OpenVPN клиент

В этой статье мы приведём подробную инструкцию, как установить и настроить OpenVPN клиент. Программа позволяет пускать весь интернет трафик через сторонние VPN серверы. Он изменяет ваше реальное «местоположение», шифрует передаваемые данные и даёт возможность посещать заблокированные сайты.

  1. Бесплатные — эти файлы доступны в свободном доступе. Большой минус их в том, что ими пользуются много людей. Поэтому их скорость, долговечность и безопасность желает ждать лучшего. Плюс в том, что они бесплатны и вы можете без труда выбрать любую страну.
  2. Собственный сервер VPN. Вы покупаете свой собственный виртуальный сервер и создаёте на нём свой VPN. Никто кроме Вас не имеет к нему доступа (если вы сами не создадите клиентов). Здесь и скорость хорошая и работает пока вы сами его не удалите. Как создать свой собственный VPN сервер вы можете прочитать здесь.

Как работает OpenVPN?

Протокол OpenVPN отвечает за поддержание коммуникации между клиентом и сервером. Как правило, он используется для создания защищённого “туннеля” между VPN-клиентом и VPN-сервером.

Для шифрования и аутентификации OpenVPN использует библиотеку OpenSSL. Кроме того, для передачи данных OpenVPN может использовать UDP (User Datagram Protocol) или TCP (Transmission Control Protocol).

Если вы не знакомы с TCP и UDP, то это протоколы транспортного уровня, которые используются для передачи данных в интернете. TCP считается более стабильным, так как предлагает функцию исправления ошибок (после отправки сетевого пакета TCP ожидает подтверждения перед его повторной отправкой или отправкой нового пакета). UDP исправляет ошибки, что делает его менее стабильным, но намного быстрее.

OpenVPN лучше всего работает по UDP (согласно данным OpenVPN.net), поэтому сервер доступа OpenVPN сначала пытается установить UDP-соединения. Если это не удаётся, только тогда сервер пробует создать соединение по протоколу TCP. Большинство VPN-Сервисов по умолчанию предоставляют OpenVPN через UDP.

Благодаря своей структуре кода (это кастомный протокол безопасности), протокол OpenVPN может легко обходить HTTP и NAT.

В отличие от большинства VPN-протоколов, OpenVPN — это протокол с открытым исходным кодом. Это означает, что код никому не принадлежит, и третьи стороны всегда могут его проверить или модернизировать (улучшить).

Разные вопросы

В. Чем отличаются виртуальные устройства tun и tap?О. TUN — туннель, соединение по которому указывается по типу: локальный IP < — > удаленный IP. Например, при явном указании ifconfig:
—ifconfig 10.3.0.2 10.3.0.1
в этом примере 10.3.0.2 — локальный IP, 10.3.0.1 — удаленный IP
TAP — эмулирует виртуальную ethernet карточку, для которой требуется указывать локальный IP и маску подсети. Например:
—ifconfig 10.3.0.2 255.255.255.0

В. Для чего нужны файлы serial и index.txt при генерации ключей с easy-rsa?О. Эти два файла используются в качестве временной базы данных, используемой при генерации ключей. Должны находиться в том каталоге, где и ключи.

Авторизуйтесь для добавления комментариев!

OpenVPN сервер

Настройка сервера

Выполним повышение прав текущего пользователя, так как для всех дальнейших действий требуется root доступ.

Устанавливаем необходимые пакеты. Пакет “Easy-RSA” нужен для управления ключами шифрования.

Создаем символическую ссылку на конфигурационный файл OpenSSL, в противном случае система выдаст ошибку при загрузке переменных.

Переходим в рабочий каталог утилиты easy-rsa, загружаем переменные и очищаем старые конфигурации.

Приступаем к созданию ключей. Генерируем ключ Диффи-Хеллмана, процесс может занять некоторое время.

Генерируем центр сертификации.

В процессе необходимо ответить на вопросы и ввести информацию о владельце ключа. Вы можете оставить значения по умолчанию, которые указаны в квадратных скобках. Для завершения ввода нажимаем “Enter”.

Генерируем ключи для сервера, в качестве аргумента указываем произвольное название, в нашем случае это “vpn-server”

Как и на предыдущем шаге отвечаем на вопросы или оставляем значения по умолчанию. На завершающем этапе дважды нажимаем “y”.

Генерация ключей сервера завершена, все файлы находятся в папке “/usr/share/easy-rsa/keys”.

Создадим в рабочем каталоге OpenVPN папку “keys” для хранения ключей и скопируем туда необходимые файлы.

Копируем и распаковываем в каталог “/etc/openvpn/” шаблон конфигурационного файла.

Открываем на редактирование файл “/etc/openvpn/server.conf” и убеждаемся в наличии следующих строк, при необходимости корректируем.


Остальные параметры оставляем без изменений.
Перезапускаем службу OpenVPN для применения конфигурации.

Настройка сервера завершена!

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

и скачиваем инсталлятор для своей версии операционной системы. В нашем случае это Windows 10.

Устанавливаем приложение, оставляя все параметры по умолчанию.


На следующем этапе необходимо подготовить на сервере и передать на компьютер клиента следующие файлы:

  • публичный и приватный ключи;
  • копия ключа центра сертификации;
  • шаблон конфигурационного файла.

Подключаемся к серверу, повышаем права,переходим в рабочий каталог утилиты “easy-rsa” и загружаем переменные.

Генерируем ключевую пару для клиента, в качестве аргумента указываем произвольное имя, в нашем случае “client1”.

Отвечая на вопросы вводим свои данные или просто нажимаем “ENTER”, оставляя значения по умолчанию. После этого дважды нажимаем “y”

Сгенерированные ключи клиента также находятся в папке “/usr/share/easy-rsa/keys/” Для удобства создадим в домашнем каталоге папку “client1” и скопируем в нее все файлы предназначенные для переноса на клиентский компьютер.

Скопируем в эту же папку шаблон клиентского конфигурационного файла. При копировании меняем расширение файла на “ovpn”.

Изменим владельца каталога “~/client1/” и всех файлов находящихся в нем, для того, чтобы получить возможность перенести их на клиентский компьютер. В нашем случае сделаем владельцем пользователя “mihail”


Переходим на клиентский компьютер и копируем с сервера содержимое папки “~/client1/” любым доступным способом, например с помощью утилиты “PSCP”, которая входит в состав клиента Putty.

Файлы ключей “ca.crt”, “client1.crt”, “client1.key” можно хранить в любом месте, в нашем случае это папка “c:\Program Files\OpenVPN\keys”, а конфигурационный файл “client.ovpn” переносим в директорию “c:\Program Files\OpenVPN\config”.

Приступаем к конфигурированию клиента. Открываем в блокноте файл “c:\Program Files\OpenVPN\config\client.ovpn” и отредактируем следующие строки

Остальные параметры оставляем без изменений.

Сохраняем файл и запускаем клиентское приложение “OpenVPN GUI”.


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

С помощью любого онлайн сервиса убеждаемся, что внешний ip адрес клиента изменился и совпадает с IP адресом сервера.


Инструкция по установке и настройке

  • Заходим на официальный ресурс разработчика и загружаем редакцию приложения, подходящую под разрядность вашей Windows.
  • Запускаем инсталлятор, чтобы началась установка программы.
  • Жмем на кнопку «Next».

Знакомимся с условиями лицензии, после чего жмем «I Agree».

Отмечаем галочками все компоненты для установки и кликаем по кнопке «Далее».

Задаем каталог установки, если стандартные настройки не устраивают, и жмем «Установить».

Установку выполняем в каталог «OpenVPN», расположенный в корневой папке системного раздела.

Подтверждаем установку драйвера.

По окончании инсталляции жмем «Next».

По завершению установки сервера для создания VPN жмем «Finish».

Полученный у провайдера конфигурационный файл размещаем в каталоге «config».

Чтобы server правильно функционировал, его необходимо запускать с администраторскими привилегиями.

Вызываем «Свойства» ярлыка OpenVPNGUI.

Во вкладке «Совместимость» ставим флажок возле опции, как показано на скриншоте.

В трее вызываем контекстное меню приложения и жмем «Connect».

Установка OpenVPN на Windows завершена.

Настройка сервера

Для установки OpenVPN-сервера выполните:

emerge openvpn

Подготовка ключей и сертификатов

Создайте директорию сертификатов:

mkdir /etc/openvpn/keys

Скопируйте созданные ранее PKI-ключи и сертификаты. Если сервер OpenVPN находится на той же машине, где создавались ключи, выполните:

cp /var/calculate/easy-rsa/pki/ca.crt /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/dh.pem /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/issued/server.crt /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/private/server.key /etc/openvpn/keys/

cp /var/calculate/easy-rsa/pki/ta.key /etc/openvpn/keys/

Настройка сервера

Отредактируйте файл настроек OpenVPN-сервера следующим образом:

/etc/openvpn/openvpn.conf

# порт, протокол, устройство, метод сжатия
port 1194
proto udp
dev tun
compress lzo
# ключи и сертификаты
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh.pem
tls-auth keys/ta.key 
# диапазон выделяемых IP, маршрут по умолчанию, DNS
server 192.168.10.0 255.255.255.0
# топология сети
topology subnet
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
# перезапуск туннеля при необходимости
keepalive 10 120
# права демона openvpn
user openvpn
group openvpn
# оставлять без изменений устройство и файлы ключей при перезапуске туннеля
persist-tun
persist-key
# информация о текущих соединениях
status /var/log/openvpn-status.log

При использовании OpenVPN-клиенты будут направлять DNS-запросы через VPN, а VPN-сервер должны уметь обрабатывать их. Это может быть достигнуто путем передачи подключающимся клиентам адреса DNS-сервера, который заменит их обычные настройки для DNS-сервера, пока VPN будет оставаться активным. В примере конфигурационного файла за это отвечает , где адрес 8.8.8.8 — DNS Google.

Важно

Многие подсоединенные к Интернет машины с OpenVPN-клиентом будут периодически взаимодействовать с сервером DHCP, чтобы возобновить аренду своих IP-адресов. Опция может мешать клиенту связаться с локальным DHCP-сервером (потому что DHCP-сообщения будут направляться через VPN), приводя к потере аренды IP-адреса.

Запустите сервер и добавьте в автозапуск:

/etc/init.d/openvpn start

rc-update add openvpn

Настройка маршрутизации

Разрешите пересылку пакетов между сетевыми интерфейсами:

/etc/sysctl.conf

net.ipv4.ip_forward = 1

Для принятия изменений выполните:

sysctl -p /etc/sysctl.conf

Передача клиенту опции заставит весь IP-трафик, порождаемый на клиентской машине, пройти через сервер OpenVPN. Сервер должен быть настроен на обработку этого трафика — например, путем отправки в Интернет через NAT. Чтобы направить трафик клиента в Интернет через NAT, выполните:

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

Вместо eth0 укажите локальный сетевой интерфейс сервера.

Сохраните правила маршрутизации и добавьте их в автозапуск:

/etc/init.d/iptables save

rc-update add iptables

Подготовка и первичная настройка

После покупки сервера и установки системы нам нужно попасть на сервер. Я буду делать это с помощью SSH. Вся конфигурация будет проходить в два этапа: настройка на сервере (включает в себя первичную настройку) и настройка клиентов.

После покупки, скорее всего, тебе дадут доступ по SSH с логином и паролем. Позже лучше создать обычного пользователя, а рутовые команды выполнять после . Нужно это в том числе для защиты от брутфорса — пользователь общеизвестный, и при попытках брута, вероятней всего, будет использоваться именно он.

Для начала нам понадобится подключить репозиторий EPEL — пакет лежит именно там.

На RHEL, CentOS, Fedora, OpenSUSE и, возможно, других установлен и включен по умолчанию SELinux. Проверить это можно командой или . Чтобы не нырять в дебри его настроек и спастись от возможной головной боли, мы переведем его в режим . В этом режиме он будет оповещать нас о нарушениях политик безопасности, но предпринимать никаких действий не станет. Таким образом, у тебя всегда будет возможность его поизучать. Для этого нужно изменить следующую директиву в файле :

Перезагружаемся и ставим необходимые пакеты:

  • — файлы для управления утилитой ;
  • — сам сервер OpenVPN;
  • зачем нужен , попробуй догадаться сам.

Базовая защита

Поскольку китайские боты и скрипт-киддиз не дремлют и, скорее всего, уже сейчас пробуют подобрать пароль к твоему серверу, перенесем на другой порт и запретим логин от рута. Перед тем как это сделать, нужно убедиться, что в системе существует другой пользователь с доступом по SSH, или добавить нового и установить для него пароль.

где — имя пользователя. В идеале нужно использовать ключи SSH, но в этом случае обойдемся паролем. Не забудь проверить, раскомментирована ли строчка в файле . Теперь изменим следующие директивы в файле :

Перечитаем конфиги (), убедимся, что sshd поднялся без проблем (), и попробуем открыть дополнительную сессию SSH, не закрывая текущей.

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку!
Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя!
Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Я уже участник «Xakep.ru»

Клиент

Ключи

Создание запроса запароленного ключа для клиента (потребуется вводить при каждом подключении) с именем User:

cd ~/easy-rsa-master/easyrsa3
./easyrsa gen-req User

Если авторизация будет внешней (например ADшная), то пароль не потребуется. Создание запроса без парольного ключа для клиента:

./easyrsa gen-req User nopass

Создание ключа пользователя (по дефолту из vars сроком на 10 лет):

./easyrsa sign-req client User

Или с ограничением действия сертификата в 90 дней (после истечения срока можно только перевыпустить):

./easyrsa sign-req client User -days 90

Клиенту передать эти файлы:

~/easy-rsa-master/easyrsa3/pki/issued/User.crt
~/easy-rsa-master/easyrsa3/pki/private/User.key
~/easy-rsa-master/easyrsa3/pki/ca.crt
/etc/openvpn/keys/ta.key

Конфиг

client
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194
cipher AES-256-CBC
tls-client
ca "ca.crt"
tls-auth "ta.key" 1
cert "User.crt"
key "User.key"
remote-cert-tls server
comp-lzo
tun-mtu 1500
mssfix 1450
verb 3
nobind
resolv-retry infinite

Для удобства все пять клиентских файлов можно объединить в один

Настройка OpenVPN сервера для второго примера

Подключаемся к нашему серверу, входим под рутом и скачиваем openvpn:

aptitude install openvpn openssl

После установки копируем скрипты в папку программы:

cp -r /usr/share/easy-rsa /etc/openvpn/

Далее переходим в папку /etc/openvpn/easy-rsa и открываем файл vars текстовым редактором. Здесь нас интересуют следующие опции:

export KEY_SIZE=1024

export KEY_COUNTRY="RU"

export KEY_PROVINCE="CA"

export KEY_CITY="Moscow"

export KEY_ORG="barnak VPN"

export KEY_EMAIL="test"

export KEY_OU="test"

Соответственно что делать с этими полями вы уже знаете :)

export KEY_SIZE=1024 — длина ключа. Можно указать 2048, но особого смысла в этом не будет, только VPN медленнее станет работать.

Теперь эти переменные надо инициировать:

source ./vars

Мы получим предупреждение, что при запуске скрипта clean-all оно удалит все содержимое папки с ключами (а это папка с программой). Но нам ничего чистить не нужно, так что не обращаем внимания.

Теперь создаем сертификат УЦ:

./build-ca

После этого ключи DH:

./build-dh

Сертификат и ключи сервера:

./build-key-server debian-srv

И клиента:

./build-key client

Теперь создаем файл конфигурации сервера:

vim.tiny /etc/openvpn/server.conf

Добавляем туда следующее:

port 1194

proto tcp

dev tun

ca ca.crt

cert debian-srv.crt

key debian-srv.key

dh dh1024.pem

server 10.10.20.0 255.255.255.0

keepalive 10 120

cipher AES-128-CBC # AES

comp-lzo

max-clients 10

persist-key

persist-tun

client-to-client

status openvpn-status.log

log /var/log/openvpn.log

verb 4

mute 20

sndbuf 0

rcvbuf 0

push "route 10.10.20.0 255.255.255.0"

push "redirect-gateway def1"

Из новых настроек здесь следующие:

  • persist-key, — позволяет избежать некоторых проблем с доступностью при понижении прав (только для Linux);
  • persist-tun, — аналогично;
  • client-to-client, — позволяет клиентам видеть друг друга. Без этой опции клиенты смогут видеть только сервер и его ресурсы, но не других клиентов (аналог AP Isolation);
  • log /var/log/openvpn.log, — где будет храниться журнал событий openvpn;
  • push «redirect-gateway def1», — добавляет клиентам маршрут к VPN серверу, чтобы весь трафик ходил через него.

Теперь, чтобы мы все-таки могли открывать сайты, будучи подключенным к VPN, надо на сервере прописать правило NAT:

iptables -t nat -A POSTROUTING -s 10.10.20.0/24 -o eth0 -j MASQUERADE

Где 10.10.20.0/24 — ваша виртуальная VPN подсеть.

Сохраняем правило NAT в файл:

iptables-save > /etc/network/iptables.conf

Теперь открываем текстовым редактором настройки сетевых интерфейсов:

vim.tiny /etc/network/interfaces

И добавляем к интерфейсу eth0 (или какой вы используете) строчку для автозагрузки правила:

post-up /sbin/iptables-restore < /etc/network/iptables.conf

Вот как это выглядит у меня:

Это нужно для того, чтобы при перезагрузке сервера правила NAT не удалилось.

И последний штрих. нужно включить IP Forwarding. Без этого скорее всего ваш NAT не заработает. Открываем текстовым редактором файл  /etc/sysctl.conf, находим строчку net.ipv4.ip_forward=1, раскомментируем ее (либо выставляем 1) и применяем командой:

sysctl -p

Теперь можно запускать OpenVPN. делается это довольно просто командой:

openvpn server.conf

Теперь сервер настроен и переходим к клиенту.

Setting Time Period and Filtering

To set the time interval of interest, carry out the following steps:

  1. Expand Filters
  2. From the Filter period dropdown select either the preset values of ‘last 24 hours’, ‘last 7 days’, ‘last 30 days’, or select ‘custom’ to provide a start and end date within the last 30-days
  3. Click on the Apply button
  4. The screen will be refreshed with the data of VPN Connections that occurred during the selected time period

To see the VPN connections for a specific Connector, Group/User/Device, Status, Disconnect Reason, or the public or VPN IP address, carry out the following steps:

  1. Expand Filters
  2. Choose the field corresponding to the criteria that you want to filter with, and either select a value from the dropdown or enter the value
  3. Click on the Apply button
  4. The screen will be refreshed with the data of VPN Connections that match the filter criteria

А можно ли таким способом раздавать интернет?

Наверное большинство из вас хочет спросить «А можно ли посредством OpenVPN раздавать интернет, например, через локальную сеть провайдера?» и ответ скорее всего порадует вас. Можно! Рассмотрим пример. Допустим провайдер выдает всем «серые» адреса в своей локальной сети, а подключение к интернет идет через VPN или PPPoE, при этом пользователи локальной сети провайдера «видят» друг-друга в ней и могут свободно обмениваться файлами и т.п. напрямую через локальную сеть провайдера без подключения к интернет

Рассмотрим пример, как можно «поделиться» своим интернетом с друзьями (обращаем ваше внимание на то, что у большинства провайдеров перепродажа, равно как и другие способы передачи траффика интернет третьим лицам запрещены условиями договора, поэтому прежде чем настраивать подобную схему — убедитесь в ее легитимности в вашем случае). Допустим у пользователя у которого установлен OpenVPN сервер подключение к интернет и локальной сети провайдера осуществляется через роутер (!) IP адрес которого 172.31.1.1, также роутер выдает адреса для ПК подключенных к нему из диапазона 172.31.1.0/24

Таким образом для ПК с OpenVPN сервером получаем два интерфейса, один из них WAN (интерфейс подключенный к роутеру, на котором доступна локальная сеть провайдера и интернет), а другой — VPN, т.е. интерфейс OpenVPN сервера. Намомним, что в этом случае для корректной работы OpenVPN сервера (если вы настраивали все согласно приведенной выше инструкции) на роутере необходимо пробросить порт TCP 7777 из локальной сети провайдера (именно по этому IP к вам будут подключаться удаленные клиенты) на машину с OpenVPN-сервером.

Настройка клиента OpenVPN для первого примера

С сервером мы закончили, теперь переходим к клиенту. Скачиваем все то же приложение, устанавливаем где нам удобнее. Переносим сертификат и ключ клиента, сертификат УЦ (у меня это: ca.crt, barnak-client.crt, barnak-client.key) в любое удобное для вас место.

Заходим в папку Config (у меня это C:\Program Files\OpenVPN\Config), создаем файл client.ovpn со следующим содержимым:

client
dev tun
dev-node OpenVPN
proto tcp
remote 87.215.46.32 1120
resolv-retry infinite
nobind
ca C:\\Program files\\OpenVPN\\keys\\ca.crt
cert C:\\Program files\\OpenVPN\\keys\\barnak-client.crt
key C:\\Program files\\OpenVPN\\keys\\barnak-client.key
ns-cert-type server
cipher AES-128-CBC
comp-lzo
verb 3
mute 20

Что у нас появилось нового:

  • client, — означает, что мы являемся клиентом;
  • remote 89.215.46.32 1120, — здесь указываем IP адрес (или DNS имя) нашего сервера и его порт;
  • resolv-retry infinite, — программа будет каждый раз узнавать IP адрес по DNS имени (если мы указывали DNS имя). Удобно тем, кто пользуется ноутбуками и не всегда подключен к сети;
  • nobind, — указываем, что мы не используем определенный локальный порт (т.е. программа будет выбирать случайный доступный порт);
  • ;http-proxy , — если вы используете прокси, то уберите «;». Здесь можно указать адрес (или DNS имя) прокси сервера и его порт;
  • ;http-proxy-retry # retry on connection failures,- переподключаться к прокси при обрыве связи. Также уберите «;», если вы собираетесь использовать прокси;
  • ns-cert-type server, — проверяем, что в сертификате сервера написано, что он сервер, а не клиент.

Теперь сохраняем настройки и запускаем VPN клиент. Через пару минут он подключится:

Следом настроим наше файловое хранилище.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Союз-Маркет
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: