6.14 Встановлення та налаштування OpenVPN сервера
OpenVPN – це надійне програмне забезпечення з відкритим кодом для створення захищених VPN-тунелів. Воно дозволяє безпечно передавати дані через публічні мережі, шифруючи весь трафік.
Використання VPN серверу надає можливість безпечно підключатися до корпоративної мережі віддалено, обходити географічні обмеження та захищати особисті дані при роботі через публічні Wi-Fi мережі.
Сьогодні OpenVPN вважається одним з найбезпечніших VPN рішень завдяки використанню потужних алгоритмів шифрування та відкритому коду, який постійно перевіряється спільнотою.
Важливо: перед початком встановлення переконайтеся що у Вас є наступні привелегії.
- У Вас є root-доступ до сервера.
- Ваш сервер має статичну IP-адресу.
- На сервері відкриті потрібні порти (за замовчуванням UDP 1194).
- Система оновлена до останньої версії.
Процедура встановлення
Процес встановлення OpenVPN залежить від операційної системи. Перед початком встановлення важливо переконатися, що система відповідає всім необхідним вимогам та має достатньо ресурсів для стабільної роботи VPN-сервера.
Встановлення OpenVPN включає не лише копіювання файлів, але й налаштування системи безпеки, створення сертифікатів та налаштування мережевих параметрів. Важливо виконувати всі кроки послідовно та уважно, оскільки помилки на цьому етапі можуть призвести до проблем з безпекою або працездатністю сервера.
Встановлення на Debian/Ubuntu:
- Оновлення системи:
- apt update && apt upgrade -y
- Встановлення OpenVPN та утиліти easy-rsa:
- apt install openvpn easy-rsa -y
- Налаштування PKI:
- make-cadir /etc/openvpn/easy-rsa
- cd /etc/openvpn/easy-rsa
- ./easyrsa init-pki
- ./easyrsa build-ca
Встановлення на CentOS:
- Оновлення системи:
- yum update -y
- Додавання EPEL репозиторію:
- yum install epel-release -y
- Встановлення OpenVPN:
- yum install openvpn easy-rsa -y
Налаштування файрволу
Налаштування файрволу включає створення правил для фільтрації вхідного та вихідного трафіку, налаштування 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 для VPN клієнтів
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# Дозвіл форвардингу VPN трафіку
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
Збереження правил Iptables:
Для Debian/Ubuntu:
- apt install iptables-persistent
- netfilter-persistent save
- netfilter-persistent reload
Для CentOS:
- service iptables save
- /etc/init.d/iptables restart
UFW на Ubuntu/Debian:
- ufw allow OpenSSH
- ufw allow 1194/udp
- ufw enable
Firewalld на CentOS:
- firewall-cmd --permanent --add-port=1194/udp
- firewall-cmd --permanent --add-service=openvpn
- firewall-cmd --reload
Маршрутизація трафіку
IP-форвардинг дозволяє передавати пакети між різними мережевими інтерфейсами, що необхідно для роботи VPN-тунелю. Без коректного налаштування форвардингу клієнти не зможуть отримати доступ до ресурсів через VPN.
Крім того, важливо правильно налаштувати NAT (Network Address Translation), щоб клієнти VPN могли отримати доступ до зовнішніх ресурсів через сервер. NAT дозволяє замінювати адреси джерела пакетів на адресу сервера, що забезпечує прозору маршрутизацію трафіку.
- Увімкнення форвардингу:
- echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
- sysctl -p
- Налаштування NAT: Налаштування для ОС сімейства Ubuntu/Debian.
- iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Налаштування для ОС сімейства CentOS:
- firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Конфігурація сервера
На цьому етапі конфігурації сервера створюються та налаштовуються криптографічні ключі, сертифікати та параметри з’єднання, які забезпечують безпечний обмін даними між сервером та клієнтами.
Важливим аспектом є правильне налаштування параметрів шифрування та аутентифікації. OpenVPN підтримує різні алгоритми шифрування та методи аутентифікації, вибір яких залежить від Ваших вимог до безпеки та продуктивності.
- Генерація сертифікатів:
- ./easyrsa gen-req server nopass
- ./easyrsa sign-req server server
- ./easyrsa gen-dh
- Створення конфігураційного файлу:
- cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Підключення клієнтів
Налаштування клієнтської частини OpenVPN вимагає особливої уваги до безпеки та зручності використання. Кожен клієнт повинен мати унікальний сертифікат та ключ для забезпечення безпечного з’єднання з сервером. При цьому важливо організувати безпечну передачу конфігураційних файлів та ключів клієнтам.
Процес створення клієнтських сертифікатів можна автоматизувати за допомогою скриптів, що особливо корисно при великій кількості користувачів. Також важливо передбачити процедуру відкликання сертифікатів у разі компрометації або звільнення співробітника.
- Генерація клієнтських сертифікатів:
- ./easyrsa gen-req client1 nopass
- ./easyrsa sign-req client client1
- Створення клієнтської конфігурації:
- cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/
Управління службою
Автоматичний запуск сервера при завантаженні системи забезпечує безперервність роботи VPN-сервісу навіть після перезавантаження сервера.
Крім налаштування автозапуску, важливо налаштувати моніторинг стану сервера та журналювання подій. Це допоможе вчасно виявляти та вирішувати можливі проблеми з продуктивністю або безпекою.
Включення автозапуска для Ubuntu/Debian:
- systemctl enable openvpn@server
- systemctl start openvpn@server
Включення автозапуска для CentOS:
- systemctl enable openvpn@server
- chkconfig openvpn on
Перевірка роботи
Після завершення всіх налаштувань необхідно провести комплексне тестування VPN-сервера. Це включає перевірку підключення клієнтів, тестування швидкості та стабільності з’єднання, а також перевірку правильності роботи всіх налаштованих служб та правил безпеки.
- systemctl status openvpn@server
- Перед застосуванням правил файрволу переконайтеся, що Ви маєте доступ до сервера через консоль.
- Замініть eth0 на Ваш реальний мережевий інтерфейс.
- Після встановлення перевірте працездатність VPN підключення з тестового клієнта.
- Рекомендується налаштувати моніторинг сервера та регулярне оновлення сертифікатів.
- Правила можуть потребувати модифікації залежно від Ваших потреб безпеки.
Для додаткової інформації рекомендуємо звернутися до офіційної документації OpenVPN та документації Вашого дистрибутиву Linux.