6.14 Встановлення та налаштування OpenVPN сервера
OpenVPN – це надійне програмне забезпечення з відкритим кодом для створення захищених VPN-тунелів. Воно дозволяє безпечно передавати дані через публічні мережі, шифруючи весь трафік.
Використання VPN серверу надає можливість безпечно підключатися до корпоративної мережі віддалено, обходити географічні обмеження та захищати особисті дані при роботі через публічні Wi-Fi мережі.
Сьогодні OpenVPN вважається одним з найбезпечніших VPN рішень завдяки використанню надійних алгоритмів шифрування та відкритому коду, який постійно перевіряється спільнотою.
Важливо: перед початком встановлення переконайтеся що у Вас є наступні привелегії.
- У Вас є root-доступ до сервера.
- Ваш сервер має статичну IP-адресу.
- На сервері відкриті потрібні порти (за замовчуванням UDP 1194).
- Система оновлена до останньої версії.
Процедура встановлення
Процес встановлення OpenVPN залежить від операційної системи. Перед початком встановлення важливо переконатися, що система відповідає всім необхідним вимогам та має достатньо ресурсів для стабільної роботи VPN-сервера.
Встановлення OpenVPN включає не лише копіювання файлів, але й налаштування системи безпеки, створення сертифікатів та налаштування мережевих параметрів. Важливо виконувати всі кроки послідовно та уважно, оскільки помилки на цьому етапі можуть призвести до проблем з безпекою або працездатністю сервера.
Встановлення на Debian/Ubuntu:
- Оновлення системи:
- sudo apt update && sudo apt upgrade -y
- Встановлення OpenVPN та утиліти easy-rsa:
- sudo apt install openvpn easy-rsa -y
- Налаштування PKI:
- mkdir -p /etc/openvpn/server/certs
- cd /etc/openvpn/server
- cp -r /usr/share/easy-rsa .
- cd easy-rsa
Встановлення на CentOS/AlmaLinux/RockyLinux:
- Оновлення системи:
- sudo yum update -y
- Додавання EPEL репозиторію:
- sudo yum install epel-release -y
- Встановлення OpenVPN:
- sudo yum install openvpn easy-rsa -y
- Підготовка директорій:
- mkdir -p /etc/openvpn/server/certs
- cd /etc/openvpn/server
- cp -r /usr/share/easy-rsa .
- cd easy-rsa
Підготовка PKI та сертифікатів
Public Key Infrastructure (PKI) є критично важливою складовою безпеки OpenVPN. Вона забезпечує створення та управління цифровими сертифікатами, які використовуються для аутентифікації та шифрування з’єднань. Easy-RSA - це утиліта для управління PKI, яка дозволяє легко створювати сертифікати для сервера та клієнтів.
В процесі налаштування PKI створюються:
- Кореневий сертифікат (CA) для підпису інших сертифікатів.
- Сертифікат та приватний ключ сервера.
- Параметри Діффі-Хеллмана для безпечного обміну ключами.
- Додатковий ключ TLS для захисту від DOS-атак.
Виконайте наведені команди по черзі. Під час виконання може виникнути одна з наведених нижче дій:
- Підтвердження дій. Якщо з’явиться запит підтвердження, введіть
yes
і натисніть Enter. - Введення пароля. Деякі команди можуть вимагати пароль. Пам’ятайте, що під час введення пароля символи не відображаються в консолі. Просто введіть пароль і натисніть
Enter
. - Запит імені користувача або
commonName
. У деяких випадках система може запросити ввести ім’я користувача чи значення commonName. Це може бути назва сервера або клієнта. Введіть потрібне значення (наприклад, server для сервера або client1 для клієнта) та натиснітьEnter
.
- ./easyrsa init-pki
- ./easyrsa build-ca nopass
- ./easyrsa gen-req server nopass
- ./easyrsa sign-req server server
- ./easyrsa gen-dh
- openvpn --genkey secret ta.key
Конфігурація сервера
Цей етап включає створення основного конфігураційного файлу OpenVPN, який визначає параметри роботи сервера, включаючи протокол, порт, методи шифрування та аутентифікації, а також налаштування мережі для клієнтів.
Створення базової конфігурації:
- cat > /etc/openvpn/server/server.conf << EOF
- port 1194
- proto udp
- dev tun
- ca easy-rsa/pki/ca.crt
- cert easy-rsa/pki/issued/server.crt
- key easy-rsa/pki/private/server.key
- dh easy-rsa/pki/dh.pem
- tls-auth easy-rsa/ta.key 0
- server 10.8.0.0 255.255.255.0
- push "redirect-gateway def1 bypass-dhcp"
- push "dhcp-option DNS 8.8.8.8"
- push "dhcp-option DNS 8.8.4.4"
- keepalive 10 120
- cipher AES-256-GCM
- auth SHA256
- user nobody
- group nogroup
- persist-key
- persist-tun
- status openvpn-status.log
- verb 3
- EOF
Далі ми готуємо операційну систему до роботи з VPN-сервером, включаючи налаштування IP-форвардингу, який дозволяє передавати пакети між різними мережевими інтерфейсами, що є необхідним для функціонування VPN.
Увімкнення IP форвардингу (для всіх ОС):
- echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-openvpn.conf
- 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
- Налаштування 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
- Збереження правил Iptables.
Для Debian/Ubuntu:
- sudo apt install iptables-persistent -y
- netfilter-persistent save
- netfilter-persistent reload
Для CentOS/AlmaLinux/RockyLinux:
- service iptables save
- /etc/init.d/iptables restart
UFW на Ubuntu/Debian:
- Налаштування UFW:
- ufw default deny incoming
- ufw default allow outgoing
- ufw allow ssh
- ufw allow 1194/udp
- ufw allow from 10.8.0.0/24
- Налаштування форвардингу:
- echo 'net.ipv4.ip_forward=1' >> /etc/ufw/sysctl.conf
- echo '*nat' >> /etc/ufw/before.rules
- echo ':POSTROUTING ACCEPT [0:0]' >> /etc/ufw/before.rules
- echo '-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE' >> /etc/ufw/before.rules
- echo 'COMMIT' >> /etc/ufw/before.rules
-
- ufw enable
Firewalld на CentOS/AlmaLinux/RockyLinux:
- Базові налаштування:
- firewall-cmd --permanent --add-service=openvpn
- firewall-cmd --permanent --add-port=1194/udp
- firewall-cmd --permanent --add-masquerade
- Налаштування форвардингу:
- firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
- Застосування змін:
- firewall-cmd --reload
Генерація клієнтських сертифікатів
- Генерація сертифікатів для клієнта:
- cd /etc/openvpn/server/easy-rsa
- ./easyrsa gen-req client1 nopass
- ./easyrsa sign-req client client1
- Створення клієнтської конфігурації:
- mkdir -p /etc/openvpn/client
- cat > /etc/openvpn/client/client.ovpn << EOF
- client
- dev tun
- proto udp
- remote YOUR_SERVER_IP 1194
- resolv-retry infinite
- nobind
- persist-key
- persist-tun
- remote-cert-tls server
- cipher AES-256-GCM
- auth SHA256
- key-direction 1
- verb 3
- EOF
- Додавання сертифікатів до конфігурації:
- echo "<ca>" >> /etc/openvpn/client/client.ovpn
- cat pki/ca.crt >> /etc/openvpn/client/client.ovpn
- echo "</ca>" >> /etc/openvpn/client/client.ovpn
-
- echo "<cert>" >> /etc/openvpn/client/client.ovpn
- cat pki/issued/client1.crt >> /etc/openvpn/client/client.ovpn
- echo "</cert>" >> /etc/openvpn/client/client.ovpn
-
- echo "<key>" >> /etc/openvpn/client/client.ovpn
- cat pki/private/client1.key >> /etc/openvpn/client/client.ovpn
- echo "</key>" >> /etc/openvpn/client/client.ovpn
-
- echo "<tls-auth>" >> /etc/openvpn/client/client.ovpn
- cat ta.key >> /etc/openvpn/client/client.ovpn
- echo "</tls-auth>" >> /etc/openvpn/client/client.ovpn
Запуск сервера
Для Debian/Ubuntu:
- systemctl enable openvpn-server@server
- systemctl start openvpn-server@server
Для CentOS/AlmaLinux/RockyLinux:
- systemctl enable openvpn@server
- systemctl start openvpn@server
Інформуємо: як перевірити статус сервіса:
- systemctl status openvpn-server@server
- systemctl status openvpn@server
Підключення на комп’ютері
Налаштування OpenVPN на персональному комп’ютері надає можливість безпечного віддаленого доступу до корпоративних ресурсів та захищеного з’єднання при роботі через публічні мережі. Процес налаштування відрізняється залежно від операційної системи, але загальні принципи залишаються незмінними.
Windows
Підключення на комп’ютерах з Windows можна виконати за допомогою офіційного клієнта OpenVPN GUI. Цей клієнт пропонує зручний графічний інтерфейс для управління VPN-з’єднаннями та підтримує всі сучасні версії Windows. Процес налаштування включає встановлення програми та імпорт конфігураційних файлів.
-
Встановлення клієнта:
- Завантажте OpenVPN клієнт.
- Запустіть інсталятор та виконайте стандартні кроки встановлення.
-
Налаштування:
- Перемістіть конфігураційні файли в
C:\Users\Ваш_Користувач\OpenVPN\config\
абоC:\Program Files\OpenVPN\config\
. - Необхідні файли (може бути потрібно від 1 до 4 файлів, в залежності від налаштувань сервера):
- Конфігурація (
*.ovpn
). - Сертифікат клієнта (
*.crt
). - Приватний ключ (
*.key
). - Сертифікат CA (
ca.crt
).
- Конфігурація (
- Перемістіть конфігураційні файли в
Інформуємо: для зручності можна створювати окрему папку під кожну конфігурацію.
- Підключення:
- Запустіть клієнт OpenVPN GUI.
- Клікніть правою кнопкою на іконці в системному треї.
- Виберіть
Connect
.
Linux
Linux надає гнучкі можливості для налаштування OpenVPN як через командний рядок, так і через графічний інтерфейс. Завдяки вбудованій підтримці OpenVPN у більшості дистрибутивів, процес налаштування зазвичай не викликає складнощів у користувачів, знайомих з Linux-системами.
Встановлення через термінал:
- sudo apt install openvpn -y
- sudo yum install openvpn -y
- Налаштування через термінал:
- sudo cp *.ovpn /etc/openvpn/client/
- sudo cp *.crt /etc/openvpn/client/
- sudo cp *.key /etc/openvpn/client/
- Запуск підключення:
- sudo openvpn --config /etc/openvpn/client/client.ovpn
Встановлення через графічний інтерфейс:
- Встановіть Network Manager OpenVPN плагін:
- sudo apt install network-manager-openvpn-gnome
- sudo yum install NetworkManager-openvpn-gnome
- Відкрийте налаштування мережі.
- Додайте VPN-підключення.
- Імпортуйте файл
.ovpn
.
MacOS
Для користувачів MacOS можна використовувати спеціальну версію OpenVPN Connect, яка повністю інтегрується з системою та забезпечує простий і надійний спосіб управління VPN-підключеннями. Додаток підтримує всі сучасні версії MacOS та пропонує інтуїтивно зрозумілий інтерфейс.
-
Встановлення:
- Завантажте OpenVPN Connect
- Запустіть інсталятор та виконайте стандартні кроки встановлення.
-
Налаштування:
- Відкрийте OpenVPN Connect.
- Натисніть
+
для додавання профілю. - Імпортуйте
.ovpn
файл перетягуванням або через менюBrowse
. - Введіть необхідні облікові дані.
- Збережіть профіль.
Підключення на мобільних пристроях
Мобільні пристрої стали важливою частиною нашого життя, тому безпечний доступ до мережі через VPN на смартфонах та планшетах може знадобитися для захисту даних. OpenVPN пропонує офіційні клієнти для всіх популярних мобільних платформ.
Важливо: більшість безкоштовних мобільних клієнтів OpenVPN не підтримують протокол tap
, який використовується за замовчуванням. Щоб уникнути проблем, налаштуйте сервер OpenVPN для роботи з протоколом tun
.
Android
OpenVPN Connect для Android забезпечує надійний та безпечний спосіб підключення до VPN-серверів. Додаток доступний через Google Play Market та підтримує широкий спектр Android-пристроїв, включаючи смартфони та планшети різних виробників. Інтерфейс програми оптимізовано для зручного використання на мобільних пристроях.
-
Встановлення:
- Завантажте OpenVPN Connect з Google Play Market.
-
Налаштування:
- Перенесіть
.ovpn
файл на пристрій. - Відкрийте OpenVPN Connect.
- Натисніть
+
та виберіть спосіб імпорту:URL
абоUpload File
. - Ми використовуємо
Upload File
, натискаємоBrowse
для вибору файла конфігурації - Знайдіть та виберіть раніше завантажений
.ovpn
файл. - Введіть назву підключення (
Profile Name
) та облікові дані (Username
таPassword
).
- Перенесіть
iOS
Версія OpenVPN Connect для iOS розроблена з урахуванням особливостей екосистеми Apple та забезпечує безперебійну роботу на iPhone та iPad. Додаток повністю відповідає вимогам безпеки App Store та інтегрується з системними налаштуваннями iOS для максимальної зручності використання.
-
Встановлення:
- Завантажте OpenVPN Connect з App Store.
-
Налаштування:
- Імпортуйте профіль одним із способів:
- Через файл
.ovpn
(iCloud, Dropbox). - Через URL підключення.
- Через прямий імпорт від провайдера.
- Введіть назву підключення та облікові дані.
- Через файл
- Імпортуйте профіль одним із способів:
Важливо:
- Переконайтеся в наявності всіх необхідних файлів сертифікатів.
- Використовуйте тільки офіційні джерела для завантаження клієнтів.
- Регулярно оновлюйте програмне забезпечення.
- Зберігайте конфігураційні файли в надійному місці.
Інформуємо: для отримання додаткової інформації звертайтеся до офіційної документації OpenVPN та документації Вашого пристрою.