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

Банер OpenVPN – это надежное программное обеспечение с открытым кодом для создания защищенных VPN-туннелей. Оно позволяет безопасно передавать данные через публичные сети, шифруя весь трафик.

Использование VPN сервера предоставляет возможность безопасно подключаться к корпоративной сети удаленно, обходить географические ограничения и защищать личные данные при работе через публичные Wi-Fi сети.

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

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

  • У Вас есть root-доступ к серверу.
  • Ваш сервер имеет статический IP-адрес.
  • На сервере открыты нужные порты (по умолчанию UDP 1194).
  • Система обновлена до последней версии.

Процедура установки

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

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

Установка на Debian/Ubuntu:
  1. Обновление системы:
  1. sudo apt update && sudo apt upgrade -y
  1. Установка OpenVPN и утилиты easy-rsa:
  1. sudo apt install openvpn easy-rsa -y
  1. Настройка PKI:
  1. mkdir -p /etc/openvpn/server/certs
  2. cd /etc/openvpn/server
  3. cp -r /usr/share/easy-rsa .
  4. cd easy-rsa
Установка на CentOS/AlmaLinux/RockyLinux:
  1. Обновление системы:
  1. sudo yum update -y
  1. Добавление EPEL репозитория:
  1. sudo yum install epel-release -y
  1. Установка OpenVPN:
  1. sudo yum install openvpn easy-rsa -y
  1. Подготовка директорий:
  1. mkdir -p /etc/openvpn/server/certs
  2. cd /etc/openvpn/server
  3. cp -r /usr/share/easy-rsa .
  4. cd easy-rsa

Подготовка PKI и сертификатов

Public Key Infrastructure (PKI) является критически важной составляющей безопасности OpenVPN. Она обеспечивает создание и управление цифровыми сертификатами, которые используются для аутентификации и шифрования соединений. Easy-RSA - это утилита для управления PKI, которая позволяет легко создавать сертификаты для сервера и клиентов.

В процессе настройки PKI создаются:

  • Корневой сертификат (CA) для подписи других сертификатов.
  • Сертификат и приватный ключ сервера.
  • Параметры Диффи-Хеллмана для безопасного обмена ключами.
  • Дополнительный ключ TLS для защиты от DOS-атак.

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

  1. Подтверждение действий. Если появится запрос подтверждения, введите yes и нажмите Enter. Подтверждение да
  2. Ввод пароля. Некоторые команды могут требовать пароль. Помните, что во время ввода пароля символы не отображаются в консоли. Просто введите пароль и нажмите Enter. Подтверждение пароля
  3. Запрос имени пользователя или commonName. В некоторых случаях система может запросить ввести имя пользователя или значение commonName. Это может быть название сервера или клиента. Введите нужное значение (например, server для сервера или client1 для клиента) и нажмите Enter.
  1. ./easyrsa init-pki
  1. ./easyrsa build-ca nopass
  1. ./easyrsa gen-req server nopass
  1. ./easyrsa sign-req server server
  1. ./easyrsa gen-dh
  1. openvpn --genkey secret ta.key

Конфигурация сервера

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

Создание базовой конфигурации:

  1. cat > /etc/openvpn/server/server.conf << EOF
  2. port 1194
  3. proto udp
  4. dev tun
  5. ca easy-rsa/pki/ca.crt
  6. cert easy-rsa/pki/issued/server.crt
  7. key easy-rsa/pki/private/server.key
  8. dh easy-rsa/pki/dh.pem
  9. tls-auth easy-rsa/ta.key 0
  10. server 10.8.0.0 255.255.255.0
  11. push "redirect-gateway def1 bypass-dhcp"
  12. push "dhcp-option DNS 8.8.8.8"
  13. push "dhcp-option DNS 8.8.4.4"
  14. keepalive 10 120
  15. cipher AES-256-GCM
  16. auth SHA256
  17. user nobody
  18. group nogroup
  19. persist-key
  20. persist-tun
  21. status openvpn-status.log
  22. verb 3
  23. EOF

Далее мы готовим операционную систему к работе с VPN-сервером, включая настройку IP-форвардинга, который позволяет передавать пакеты между различными сетевыми интерфейсами, что необходимо для функционирования VPN.

Включение IP форвардинга (для всех ОС):

  1. echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-openvpn.conf
  2. sysctl --system

Настройка файрвола

Настройка файрвола включает создание правил для фильтрации входящего и исходящего трафика, настройку NAT (Network Address Translation) для обеспечения доступа клиентов к внешним ресурсам, а также настройку маршрутизации трафика между различными сетевыми интерфейсами.

В данном разделе мы рассмотрим настройку различных типов файрволов, включая традиционный iptables, UFW (Uncomplicated Firewall) для Ubuntu/Debian и firewalld для CentOS. Каждый из этих инструментов имеет свои особенности и преимущества, поэтому выбор конкретного решения зависит от Ваших потребностей и опыта администрирования.

Настройка Iptables:

Важно: замените eth0 на Ваш реальный сетевой интерфейс.

# Очистка существующих правил
iptables -F
iptables -X
iptables -t nat -F

# Установка базовой политики
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Разрешение локального трафика
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Разрешение установленных соединений
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешение SSH (порт 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Разрешение OpenVPN (порт 1194 UDP)
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
  1. Настройка NAT и форвардинга:
# Определение внешнего интерфейса
INTERFACE=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)')

# Настройка NAT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o $INTERFACE -j MASQUERADE

# Настройка форвардинга
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -i $INTERFACE -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 -o $INTERFACE -j ACCEPT
  1. Сохранение правил Iptables.

Для Debian/Ubuntu:

  1. sudo apt install iptables-persistent -y
  2. netfilter-persistent save
  3. netfilter-persistent reload

Для CentOS/AlmaLinux/RockyLinux:

  1. service iptables save
  2. /etc/init.d/iptables restart
UFW на Ubuntu/Debian:
  1. Настройка UFW:
  1. ufw default deny incoming
  2. ufw default allow outgoing
  3. ufw allow ssh
  4. ufw allow 1194/udp
  5. ufw allow from 10.8.0.0/24
  1. Настройка форвардинга:
  1. echo 'net.ipv4.ip_forward=1' >> /etc/ufw/sysctl.conf
  2. echo '*nat' >> /etc/ufw/before.rules
  3. echo ':POSTROUTING ACCEPT [0:0]' >> /etc/ufw/before.rules
  4. echo '-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE' >> /etc/ufw/before.rules
  5. echo 'COMMIT' >> /etc/ufw/before.rules
  6. ufw enable
Firewalld на CentOS/AlmaLinux/RockyLinux:
  1. Базовые настройки:
  1. firewall-cmd --permanent --add-service=openvpn
  2. firewall-cmd --permanent --add-port=1194/udp
  3. firewall-cmd --permanent --add-masquerade
  1. Настройка форвардинга:
  1. firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
  1. Применение изменений:
  1. firewall-cmd --reload

Генерация клиентских сертификатов

  1. Генерация сертификатов для клиента:
  1. cd /etc/openvpn/server/easy-rsa
  2. ./easyrsa gen-req client1 nopass
  3. ./easyrsa sign-req client client1
  1. Создание клиентской конфигурации:
  1. mkdir -p /etc/openvpn/client
  2. cat > /etc/openvpn/client/client.ovpn << EOF
  3. client
  4. dev tun
  5. proto udp
  6. remote YOUR_SERVER_IP 1194
  7. resolv-retry infinite
  8. nobind
  9. persist-key
  10. persist-tun
  11. remote-cert-tls server
  12. cipher AES-256-GCM
  13. auth SHA256
  14. key-direction 1
  15. verb 3
  16. EOF
  1. Добавление сертификатов в конфигурацию:
  1. echo "<ca>" >> /etc/openvpn/client/client.ovpn
  2. cat pki/ca.crt >> /etc/openvpn/client/client.ovpn
  3. echo "</ca>" >> /etc/openvpn/client/client.ovpn
  4. echo "<cert>" >> /etc/openvpn/client/client.ovpn
  5. cat pki/issued/client1.crt >> /etc/openvpn/client/client.ovpn
  6. echo "</cert>" >> /etc/openvpn/client/client.ovpn
  7. echo "<key>" >> /etc/openvpn/client/client.ovpn
  8. cat pki/private/client1.key >> /etc/openvpn/client/client.ovpn
  9. echo "</key>" >> /etc/openvpn/client/client.ovpn
  10. echo "<tls-auth>" >> /etc/openvpn/client/client.ovpn
  11. cat ta.key >> /etc/openvpn/client/client.ovpn
  12. echo "</tls-auth>" >> /etc/openvpn/client/client.ovpn

Запуск сервера

Для Debian/Ubuntu:

  1. systemctl enable openvpn-server@server
  2. systemctl start openvpn-server@server

Для CentOS/AlmaLinux/RockyLinux:

  1. systemctl enable openvpn@server
  2. systemctl start openvpn@server

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

Проверка на Debian/Ubuntu:
  1. systemctl status openvpn-server@server
Проверка на CentOS/AlmaLinux/RockyLinux:
  1. systemctl status openvpn@server

Подключение на компьютере

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

Windows

Подключение на компьютерах с Windows можно выполнить с помощью официального клиента OpenVPN GUI. Этот клиент предлагает удобный графический интерфейс для управления VPN-соединениями и поддерживает все современные версии Windows. Процесс настройки включает установку программы и импорт конфигурационных файлов.

  1. Установка клиента:

    • Загрузите OpenVPN клиент.
    • Запустите инсталлятор и выполните стандартные шаги установки.
  2. Настройка:

    • Переместите конфигурационные файлы в C:\Users\Ваш_Пользователь\OpenVPN\config\ или C:\Program Files\OpenVPN\config\.
    • Необходимые файлы (может быть нужно от 1 до 4 файлов, в зависимости от настроек сервера):
      • Конфигурация (*.ovpn).
      • Сертификат клиента (*.crt).
      • Приватный ключ (*.key).
      • Сертификат CA (ca.crt).

Папка с файлами

Информируем: для удобства можно создавать отдельную папку под каждую конфигурацию.

  1. Подключение:
    • Запустите клиент OpenVPN GUI.
    • Кликните правой кнопкой на иконке в системном трее. Настройки
    • Выберите Connect. Подключение

Linux

Linux предоставляет гибкие возможности для настройки OpenVPN как через командную строку, так и через графический интерфейс. Благодаря встроенной поддержке OpenVPN в большинстве дистрибутивов, процесс настройки обычно не вызывает сложностей у пользователей, знакомых с Linux-системами.

Установка через терминал:
Для Ubuntu/Debian:
  1. sudo apt install openvpn -y
Для CentOS/AlmaLinux/RockyLinux:
  1. sudo yum install openvpn -y
  1. Настройка через терминал:
  1. sudo cp *.ovpn /etc/openvpn/client/
  2. sudo cp *.crt /etc/openvpn/client/
  3. sudo cp *.key /etc/openvpn/client/
  1. Запуск подключения:
  1. sudo openvpn --config /etc/openvpn/client/client.ovpn
Установка через графический интерфейс:
  1. Установите Network Manager OpenVPN плагин:
Для Ubuntu/Debian:
  1. sudo apt install network-manager-openvpn-gnome
Для CentOS:
  1. sudo yum install NetworkManager-openvpn-gnome
  1. Откройте настройки сети.
  2. Добавьте VPN-подключение.
  3. Импортируйте файл .ovpn.

MacOS

Для пользователей MacOS можно использовать специальную версию OpenVPN Connect, которая полностью интегрируется с системой и обеспечивает простой и надежный способ управления VPN-подключениями. Приложение поддерживает все современные версии MacOS и предлагает интуитивно понятный интерфейс.

  1. Установка:

    • Загрузите OpenVPN Connect
    • Запустите инсталлятор и выполните стандартные шаги установки.
  2. Настройка:

    • Откройте OpenVPN Connect.
    • Нажмите + для добавления профиля.
    • Импортируйте .ovpn файл перетаскиванием или через меню Browse.
    • Введите необходимые учетные данные.
    • Сохраните профиль.

Подключение на мобильных устройствах

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

Важно: большинство бесплатных мобильных клиентов OpenVPN не поддерживают протокол tap, который используется по умолчанию. Чтобы избежать проблем, настройте сервер OpenVPN для работы с протоколом tun.

Android

OpenVPN Connect для Android обеспечивает надежный и безопасный способ подключения к VPN-серверам. Приложение доступно через Google Play Market и поддерживает широкий спектр Android-устройств, включая смартфоны и планшеты различных производителей. Интерфейс программы оптимизирован для удобного использования на мобильных устройствах.

  1. Установка:

    • Загрузите OpenVPN Connect из Google Play Market.
  2. Настройка:

    • Перенесите .ovpn файл на устройство.
    • Откройте OpenVPN Connect.
    • Нажмите + и выберите способ импорта: URL или Upload File. Плюс
    • Мы используем Upload File, нажимаем Browse для выбора файла конфигурации Загрузка
    • Найдите и выберите ранее загруженный .ovpn файл.
    • Введите название подключения (Profile Name) и учетные данные (Username и Password). Ввод данных

iOS

Версия OpenVPN Connect для iOS разработана с учетом особенностей экосистемы Apple и обеспечивает бесперебойную работу на iPhone и iPad. Приложение полностью соответствует требованиям безопасности App Store и интегрируется с системными настройками iOS для максимального удобства использования.

  1. Установка:

    • Загрузите OpenVPN Connect из App Store.
  2. Настройка:

    • Импортируйте профиль одним из способов:
      • Через файл .ovpn (iCloud, Dropbox).
      • Через URL подключения.
      • Через прямой импорт от провайдера.
      • Введите название подключения и учетные данные.

Важно:

  • Убедитесь в наличии всех необходимых файлов сертификатов.
  • Используйте только официальные источники для загрузки клиентов.
  • Регулярно обновляйте программное обеспечение.
  • Храните конфигурационные файлы в надежном месте.

Информируем: для получения дополнительной информации обращайтесь к официальной документации OpenVPN и документации Вашего устройства.