- Як налаштувати сервер OpenVPN в Ubuntu 16.04 Вступ
- Необхідні умови
- Крок 1. Встановлення OpenVPN
- Крок 2. Створення директорії центру сертифікації
- Крок 3. Налаштування змінних центру сертифікації
- Крок 4. Створення центру сертифікації
- Крок 5. Створення сертифіката, ключа і файлів шифрування для сервера
- Крок 6. Створення сертифіката і пари ключів для клієнта
- Крок 7. Налаштування сервісу OpenVPN
- Копіювання файлів в директорію OpenVPN
- Налаштування конфігурації OpenVPN
- Базова настройка
- (За бажанням) Проштовхування змін DNS для перенаправлення всього трафіку через VPN
- (За бажанням) Налаштування порту і протоколу
- (За бажанням) Використання кастомними імені сертифіката і ключа
- Крок 8. Налаштування мережевої конфігурації сервера
- Налаштування перенаправлення IP
- Налаштування правил UFW для приховування з'єднань клієнтів
- Відкриття порту OpenVPN і застосування змін
- Крок 9. Включення сервісу OpenVPN
- Крок 10. Створення інфраструктури настройки клієнтів
- Створення структури директорій конфігурації клієнтів
- Створення базової конфігурації
- Створення скрипта генерації файлів конфігурації
- Крок 11. Генерація конфігурацій клієнтів
- Доставка конфігурацій клієнтам
- Крок 12. Встановлення файлів конфігурацій клієнтів
- Windows
- з'єднання
- Mac OS
- з'єднання
- Linux
- налаштування
- iOS
- з'єднання
- Android
- з'єднання
- Крок 13. Тестування VPN з'єднання
- Крок 14. Відкликання клієнтських сертифікатів
- Висновок
- Як налаштувати сервер OpenVPN в Ubuntu 16.04
- Необхідні умови
- Крок 1. Встановлення OpenVPN
- Крок 2. Створення директорії центру сертифікації
- Крок 3. Налаштування змінних центру сертифікації
- Крок 4. Створення центру сертифікації
- Крок 5. Створення сертифіката, ключа і файлів шифрування для сервера
- Крок 6. Створення сертифіката і пари ключів для клієнта
- Крок 7. Налаштування сервісу OpenVPN
- Копіювання файлів в директорію OpenVPN
- Налаштування конфігурації OpenVPN
- Базова настройка
- (За бажанням) Проштовхування змін DNS для перенаправлення всього трафіку через VPN
- (За бажанням) Налаштування порту і протоколу
- (За бажанням) Використання кастомними імені сертифіката і ключа
- Крок 8. Налаштування мережевої конфігурації сервера
- Налаштування перенаправлення IP
- Налаштування правил UFW для приховування з'єднань клієнтів
- Відкриття порту OpenVPN і застосування змін
- Крок 9. Включення сервісу OpenVPN
- Крок 10. Створення інфраструктури настройки клієнтів
- Створення структури директорій конфігурації клієнтів
- Створення базової конфігурації
- Як налаштувати сервер OpenVPN в Ubuntu 16.04
- Необхідні умови
- Крок 1. Встановлення OpenVPN
- Крок 2. Створення директорії центру сертифікації
- Крок 3. Налаштування змінних центру сертифікації
- Крок 4. Створення центру сертифікації
- Крок 5. Створення сертифіката, ключа і файлів шифрування для сервера
- Крок 6. Створення сертифіката і пари ключів для клієнта
- Крок 7. Налаштування сервісу OpenVPN
- Копіювання файлів в директорію OpenVPN
- Налаштування конфігурації OpenVPN
- Базова настройка
- (За бажанням) Проштовхування змін DNS для перенаправлення всього трафіку через VPN
- (За бажанням) Налаштування порту і протоколу
- (За бажанням) Використання кастомними імені сертифіката і ключа
- Крок 8. Налаштування мережевої конфігурації сервера
- Налаштування перенаправлення IP
- Налаштування правил UFW для приховування з'єднань клієнтів
- Відкриття порту OpenVPN і застосування змін
- Крок 9. Включення сервісу OpenVPN
- Крок 10. Створення інфраструктури настройки клієнтів
- Створення структури директорій конфігурації клієнтів
- Створення базової конфігурації
- Як налаштувати сервер OpenVPN в Ubuntu 16.04
- Необхідні умови
- Крок 1. Встановлення OpenVPN
- Крок 2. Створення директорії центру сертифікації
- Крок 3. Налаштування змінних центру сертифікації
- Крок 4. Створення центру сертифікації
- Крок 5. Створення сертифіката, ключа і файлів шифрування для сервера
- Крок 6. Створення сертифіката і пари ключів для клієнта
- Крок 7. Налаштування сервісу OpenVPN
- Копіювання файлів в директорію OpenVPN
- Налаштування конфігурації OpenVPN
- Базова настройка
- (За бажанням) Проштовхування змін DNS для перенаправлення всього трафіку через VPN
- (За бажанням) Налаштування порту і протоколу
- (За бажанням) Використання кастомними імені сертифіката і ключа
- Крок 8. Налаштування мережевої конфігурації сервера
- Налаштування перенаправлення IP
- Налаштування правил UFW для приховування з'єднань клієнтів
- Відкриття порту OpenVPN і застосування змін
- Крок 9. Включення сервісу OpenVPN
- Крок 10. Створення інфраструктури настройки клієнтів
- Створення структури директорій конфігурації клієнтів
- Створення базової конфігурації
- Як налаштувати сервер OpenVPN в Ubuntu 16.04
- Необхідні умови
- Крок 1. Встановлення OpenVPN
- Крок 2. Створення директорії центру сертифікації
- Крок 3. Налаштування змінних центру сертифікації
- Крок 4. Створення центру сертифікації
- Крок 5. Створення сертифіката, ключа і файлів шифрування для сервера
- Крок 6. Створення сертифіката і пари ключів для клієнта
- Крок 7. Налаштування сервісу OpenVPN
- Копіювання файлів в директорію OpenVPN
- Налаштування конфігурації OpenVPN
- Базова настройка
- (За бажанням) Проштовхування змін DNS для перенаправлення всього трафіку через VPN
- (За бажанням) Налаштування порту і протоколу
- (За бажанням) Використання кастомними імені сертифіката і ключа
- Крок 8. Налаштування мережевої конфігурації сервера
- Налаштування перенаправлення IP
- Налаштування правил UFW для приховування з'єднань клієнтів
- Відкриття порту OpenVPN і застосування змін
- Крок 9. Включення сервісу OpenVPN
- Крок 10. Створення інфраструктури настройки клієнтів
- Створення структури директорій конфігурації клієнтів
- Створення базової конфігурації
- Створення скрипта генерації файлів конфігурації
- Крок 11. Генерація конфігурацій клієнтів
- Доставка конфігурацій клієнтам
- Крок 12. Встановлення файлів конфігурацій клієнтів
- Windows
- з'єднання
- Mac OS
- з'єднання
- Linux
- налаштування
- iOS
- з'єднання
- Android
- з'єднання
- Крок 13. Тестування VPN з'єднання
- Крок 14. Відкликання клієнтських сертифікатів
- Висновок
Як налаштувати сервер OpenVPN в Ubuntu 16.04 Вступ
Хочете мати безпечний і захищений доступ в Інтернет з вашого смартфона або ноутбука при підключенні до незахищеної мережі через WiFi готелю або кафе? Віртуальна приватна мережа (Virtual Private Network, VPN) дозволяє використовувати незахищені мережі таким чином, як якщо б ви працювали в приватній мережі. Весь ваш трафік в цьому випадку проходить через VPN-сервер.
У комбінації з використанням HTTPS-з'єднання описувані далі настройки дозволять вам убезпечити свою приватну інформацію, наприклад, логіни і паролі, а також ваші покупки. Більш того, ви зможете обходити регіональні обмеження і цензуру, а також приховувати своє місцезнаходження і незашифрований HTTP-трафік від незахищеною мережі.
OpenVPN являє собою потужний і гнучко настроюється програмне забезпечення з відкритим вихідним кодом для роботи з Secure Socket Layer (SSL) VPN. У цій статті ми встановимо і налаштуємо OpenVPN сервер, а також навчимося здійснювати до нього доступ з Windows, Mac OS, iOS і Android. Для цього ми виконаємо кілька простих кроків.
Необхідні умови
Перш за все вам необхідно мати сервер з Ubuntu 16.04.
Перед тим, як почати слідувати інструкції, наведені в цій статті, вам необхідно налаштувати окремий, чи не-рутовий (non-root) профіль користувача з привілеями sudo на вашому сервері. Ви можете зробити це згідно з інструкціями, описаним в статті про первинну налаштування сервера на Ubuntu 16.04 . У цій же статті описаний процес налаштування файрвола; далі ми будемо вважати, що файрвол налаштований на вашому сервері.
Коли ви будете готові почати, зайдіть на ваш сервер під створеним вами sudo-користувачем і виконуйте інструкції, наведені нижче.
Крок 1. Встановлення OpenVPN
Спочатку встановимо OpenVPN на наш сервер. OpenVPN доступний в стандартних репозиторіях Ubuntu, ми можемо використовувати apt для його установки. Також ми встановимо пакет easy-rsa, який дозволить нам налаштувати наш власний внутрішній центр сертифікації (certificate authority, CA) для використання з нашої VPN.
Оновимо список пакетів сервера і встановимо необхідні пакети наступними командами:
- sudo apt-get update
- sudo apt-get install openvpn easy-rsa
Необхідне програмне забезпечення встановлено і готове до налаштування.
Крок 2. Створення директорії центру сертифікації
OpenVPN це віртуальна приватна мережа, що використовує TLS / SSL. Це означає, що OpenVPN використовує сертифікати для шифрування трафіку між сервером і клієнтами. Для випуску довірених сертифікатів (trusted certificates) нам буде потрібно створити наш власний центр сертифікації.
Для початку скопіюємо шаблонну директорію easy-rsa в нашу домашню директорію за допомогою команди make-cadir:
Далі зайдемо в цю директорію для початку налаштування ЦС:
Крок 3. Налаштування змінних центру сертифікації
Для настройки змінних нашого центру сертифікації нам необхідно відредагувати файл vars. Відкрийте цей файл у текстовому редакторі:
Всередині файлу ви знайдете змінні, які можна відредагувати, і які задають параметри сертифікатів при їх створенні. Нам потрібно змінити лише кілька змінних.
Перейдіть ближче до кінця файлу і знайдіть налаштування полів, які використовуються за замовчуванням при створенні сертифікатів. Вони повинні виглядати приблизно так:
~ / Openvpn-ca / vars
. . . export KEY_COUNTRY = "US" export KEY_PROVINCE = "CA" export KEY_CITY = "SanFrancisco" export KEY_ORG = "Fort-Funston" export KEY_EMAIL = "[email protected]" export KEY_OU = "MyOrganizationalUnit". . .
Замініть значення, виділені червоним, на що-небудь інше, не залишайте їх не заповненими:
~ / Openvpn-ca / vars
. . . export KEY_COUNTRY = "US" export KEY_PROVINCE = "NY" export KEY_CITY = "New York City" export KEY_ORG = "DigitalOcean" export KEY_EMAIL = "[email protected]" export KEY_OU = "Community". . .
Поки ми в цьому файлі, відредагуємо значення KEY_NAME трохи нижче, яке заповнює поле суб'єкта сертифікатів. Для простоти задамо йому назву server:
~ / Openvpn-ca / vars
export KEY_NAME = "server"
Збережіть і закрийте файл.
Крок 4. Створення центру сертифікації
Тепер ми можемо використовувати задані нами змінні і утиліти easy-rsa для створення центру сертифікації.
Переконайтеся, що ви перебуваєте в директорії центру сертифікації і використовуйте команду source до файлу vars:
- cd ~ / openvpn-ca
- source vars
Ви повинні побачити наступний висновок:
висновок
NOTE: If you run ./clean-all, I will be doing a rm -rf on / home / sammy / openvpn-ca / keys
Переконаємося, що ми працюємо в "чистому середовищі" виконавши наступну команду:
Тепер ми можемо створити наш кореневої центр сертифікації командою:
Ця команда запустить процес створення ключа і сертифіката кореневого центру сертифікації. Оскільки ми задали всі змінні у файлі vars, всі необхідні значення будуть введені автоматично. Натискайте ENTER для підтвердження вибору:
висновок
Generating a 2048 bit RSA private key ........................................... ............................................... +++ ............................... +++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', The field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [NY]: Locality Name (eg, city) [New York City]: Organization Name (eg, company) [DigitalOcean ]: Organizational Unit Name (eg, section) [Community]: Common Name (eg, your name or your server's hostname) [DigitalOcean CA]: Name [server]: Email Address [[email protected]]:
Тепер у нас є центр сертифікації, який ми зможемо використовувати для створення всіх інших необхідних нам файлів.
Крок 5. Створення сертифіката, ключа і файлів шифрування для сервера
Далі створимо сертифікат, пару ключів і деякі додаткові файли, які використовуються для здійснення шифрування, для нашого сервера.
Почнемо зі створення сертифіката OpenVPN і ключів для сервера. Це можна зробити за допомогою такої команди:
Увага: Якщо раніше ви вибрали ім'я, відмінне від server, вам доведеться трохи змінити деякі інструкції. Наприклад, при копіюванні створених файлів в директорію / etc / openvpn вам доведеться замінити імена на задані вами. Вам також доведеться змінити файл /etc/openvpn/server.conf для того, щоб він вказував на коректні .crt і .key файли.
- ./build-key-server server
Висновок знову буде містити значення за замовчуванням, передані цій команді (server), а також значення з файлу vars.
Погодьтеся з усіма значеннями за замовчуванням, натискаючи ENTER. Не ставте challenge password. В кінці процесу два рази введіть y для підпису і підтвердження створення сертифіката:
висновок
. . . Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate? [Y / n]: y 1 out of 1 certificate requests certified, commit? [Y / n] y Write out database with 1 new entries Data Base Updated
Далі створимо залишилися файли. Ми можемо згенерувати сильні ключі протоколу Діффі-Хеллмана, використовувані при обміні ключами, командою:
Для завершення цієї команди може знадобитися кілька хвилин.
Далі ми можемо згенерувати підпис HMAC для посилення здатності сервера перевіряти цілісність TSL:
- openvpn --genkey --secret keys / ta.key
Крок 6. Створення сертифіката і пари ключів для клієнта
Далі ми можемо згенерувати сертифікат і пару ключів для клієнта. Взагалі це можна зробити і на клієнтській машині і потім підписати отриманий ключ центром сертифікації сервера, але в цій статті для простоти ми сгенерируем підписаний ключ на сервері.
У цій статті ми створимо ключ і сертифікат тільки для одного клієнта. Якщо у вас кілька клієнтів, ви можете повторювати цей процес скільки завгодно разів. Просто кожен раз передавайте унікальне значення скрипту.
Оскільки ми можемо повернутися до цього кроку пізніше, ми повторимо команду source для файлу vars. Ми будемо використовувати параметр client1 для створення першого сертифікату та ключа.
Для створення файлів без пароля для полегшення автоматичних з'єднань використовуйте команду build-key:
- cd ~ / openvpn-ca
- source vars
- ./build-key client1
Для створення файлів, захищених паролем, використовуйте команду build-key-pass:
- cd ~ / openvpn-ca
- source vars
- ./build-key-pass client1
В ході процесу створення файлів все значення за замовчуванням будуть введені, ви можете натискати ENTER. Не ставте challenge password і введіть y на запити про підписи і підтвердження створення сертифіката.
Крок 7. Налаштування сервісу OpenVPN
Далі налаштуємо сервіс OpenVPN з використанням створених раніше файлів.
Копіювання файлів в директорію OpenVPN
Нам необхідно скопіювати потрібні нам файли в директорію / etc / openvpn.
Спочатку скопіюємо створені нами файли. Вони знаходяться в директорії ~ / openvpn-ca / keys, в якій вони і були створені. Нам потрібно створити сертифікат і ключ центру сертифікації, сертифікат і ключ сервера, підпис HMAC і файл Diffie-Hellman:
- cd ~ / openvpn-ca / keys
- sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem / etc / openvpn
Далі нам необхідно скопіювати і розпакувати файл-приклад конфігурації OpenVPN в конфігураційну директорію, ми будемо використовувати цей файл в якості бази для наших налаштувань:
- gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
Налаштування конфігурації OpenVPN
Тепер, коли наші файли знаходяться на своєму місці, займемося налаштуванням конфігураційного файлу сервера:
- sudo nano /etc/openvpn/server.conf
Базова настройка
Спочатку знайдемо секцію HMAC пошуком директиви tls-auth. Видаліть ";" для того, щоб розкоментувати рядок з tls-auth. Далі додайте параметр key-direction і встановіть його значення в "0":
/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret key-direction 0
Далі знайдемо секцію шифрування, нас цікавлять закоментовані рядки cipher. Шифр AES-128-CBC забезпечує хороший рівень шифрування і широко підтримується іншими програмними продуктами. Видаліть ";" для раскомментірованія рядки AES-128-CBC:
/etc/openvpn/server.conf
cipher AES-128-CBC
Під цим рядком додайте рядок auth і виберіть алгоритм HMAC. Хорошим вибором буде SHA256:
/etc/openvpn/server.conf
auth SHA256
Нарешті, знайдіть налаштування user і group і видаліть ";" для раскомментірованія цих рядків:
/etc/openvpn/server.conf
user nobody group nogroup
(За бажанням) Проштовхування змін DNS для перенаправлення всього трафіку через VPN
Зроблені нами настройки створюють VPN з'єднання між двома машинами, але вони не змушують ці машини використовувати VPN з'єднання. Якщо ви хочете використовувати VPN з'єднання для всього свого трафіку, вам необхідно проштовхнути (push) настройки DNS на клієнтські машини.
Для цього вам необхідно розкоментувати кілька директив. Знайдіть секцію redirect-gateway і видаліть ";" з початку рядка для расскоментірованія redirect-gateway:
/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"
Трохи нижче знаходиться секція dhcp-option. Видаліть ";" для обох рядків:
/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
Це дозволить клієнтам конфігурувати свої настройки DNS для використання VPN з'єднання в якості основного.
(За бажанням) Налаштування порту і протоколу
За замовчуванням OpenVPN використовує порт 1194 і протокол UDP для з'єднання з клієнтами. Якщо вам необхідно змінити порт через будь-яких обмежень для ваших клієнтів, ви можете зробити це змінивши налаштування port. Якщо ви не хостів веб-контент на вашому OpenVPN сервері, ви можете використовувати порт 443, оскільки цей порт зазвичай дозволений для використання в більшості файрволов.
/etc/openvpn/server.conf
# Optional! port 443
Використовуваний протокол може мати обмеження по номеру порту. В цьому випадку змініть proto з UDP на TCP:
/etc/openvpn/server.conf
# Optional! proto tcp
Якщо у вас немає явної необхідності використовувати інший порт, краще залишити обидві ці настройки зі значеннями за замовчуванням.
(За бажанням) Використання кастомними імені сертифіката і ключа
Якщо під час використання команди ./build-key-server трохи вище ви вказали параметр, відмінний від server, поміняйте налаштування cert і key, щоб вони вказували на правильні файли .crt і .key. Якщо ви використовували server, ці настройки повинні виглядати таким чином:
/etc/openvpn/server.conf
cert server .crt key server .key
Збережіть і закрийте файл.
Крок 8. Налаштування мережевої конфігурації сервера
Далі нам необхідно налаштувати мережеву конфігурацію сервера, щоб OpenVPN міг коректно перенаправляти трафік.
Налаштування перенаправлення IP
Спочатку вирішимо сервера перенаправляти трафік. Це ключова функціональність нашого VPN сервера.
Налаштуємо це в файлі /etc/sysctl.conf:
- sudo nano /etc/sysctl.conf
Знайдіть рядок настройки net.ipv4.ip_forward. Видаліть "#" з початку рядка, щоб розкоментувати її:
/etc/sysctl.conf
net.ipv4.ip_forward = 1
Збережіть і закрийте файл.
Для застосування налаштувань до поточної сесії наберіть команду:
Налаштування правил UFW для приховування з'єднань клієнтів
Якщо ви слідували статті про налаштування Ubuntu 16.04, згаданої на початку цієї статті, у вас повинен бути встановлений і налаштований файрвол UFW. Незалежно від того, чи використовуєте ви файрвол для блокування небажаного трафіку (що вам варто робити практично завжди), в цій статті нам буде потрібно файрвол для маніпулювання з вхідним на сервер трафіком. Ми повинні змінити файл налаштувань для приховування з'єднань (masquerading).
Перед тим, як змінити цей файл, ми повинні знайти публічний інтерфейс мережі (public network interface). Для цього наберіть команду:
Публічний інтерфейс повинен слідувати за словом "dev". Наприклад, в нашому випадку цей інтерфейс називається wlp11s0:
висновок
default via 203.0.113.1 dev wlp11s0 proto static metric 600
Знаючи назву інтерфейсу відкриємо файл /etc/ufw/before.rules і додамо туди відповідні налаштування:
- sudo nano /etc/ufw/before.rules
Це файл містить настройки UFW, яке застосовуються перед застосуванням правил UFW. Додайте в початок файлу виділені червоним рядки. Це налаштує правила, що застосовуються за замовчуванням, до ланцюжку POSTROUTING в таблиці nat і буде приховувати весь трафік від VPN:
Увага: не забудьте замінити eth0 в рядку -A POSTROUTING на ім'я інтерфейсу, що знайшли ми раніше.
/etc/ufw/before.rules
# # Rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules * nat: POSTROUTING ACCEPT [0: 0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES # Do not delete these required lines, otherwise there will be errors * filter. . .
Збережіть і закрийте файл.
Тепер ми повинні повідомити UFW, що йому за замовчуванням необхідно вирішувати переслані пакети. Для цього відкрийте файл / etc / default / ufw:
- sudo nano / etc / default / ufw
Знайдіть у файлі директиву DEFAULT_FORWARD_POLICY. Ми змінимо значення з DROP на ACCEPT:
/ Etc / default / ufw
DEFAULT_FORWARD_POLICY = "ACCEPT"
Збережіть і закрийте файл.
Відкриття порту OpenVPN і застосування змін
Далі налаштуємо сам файрвол для дозволу трафіку в OpenVPN.
Якщо ви не змінювали порт і протокол в файлі /etc/openvpn/server.conf, вам необхідно дозволити трафік UDP для порту 1194. Якщо ви змінили ці настройки, введіть зазначені вами значення.
Навіть ми додамо порт SSH на випадок, якщо ви не зробили цього раніше.
- sudo ufw allow 1194 / udp
- sudo ufw allow OpenSSH
Тепер деактивувавши і активуємо UFW для застосування внесених змін:
- sudo ufw disable
- sudo ufw enable
Тепер наш сервер налаштований для обробки трафіку OpenVPN.
Крок 9. Включення сервісу OpenVPN
Ми готові включить сервіс OpenVPN на нашому сервері. Ми можемо зробити це за допомогою systemd.
Нам необхідно запустити сервер OpenVPN вказавши ім'я нашого файлу конфігурації в якості змінної після імені файлу systemd. Файл конфігурації для нашого сервера називається / etc / openvpn / server .conf, тому ми додамо @server в кінець імені файлу при його виклику:
- sudo systemctl start openvpn @ server
Переконаємося, що сервіс успішно запущений командою:
- sudo systemctl status openvpn @ server
Якщо все вийшло, висновок повинен виглядати приблизно так:
висновок
● [email protected] - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (running) since Tue 2016-05-03 15:30 : 05 EDT; 47s ago Docs: man: openvpn (8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 5852 ExecStart = / usr / sbin / openvpn --daemon ovpn-% i --status /run/openvpn/%i.status 10 --cd / etc / openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid / run / openvpn /% i.pid (code = exited, sta Main PID: 5856 (openvpn) Tasks: 1 (limit: 512) CGroup: /system.slice/system-openvpn.slice/[email protected] └─5856 / usr / sbin / openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd / etc / openvpn --script-security 2 --config /etc/openvpn/server.conf - writepid /run/openvpn/server.pid May 03 15:30:05 openvpn2 ovpn-server [5856]: / sbin / ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 May 03 15:30:05 openvpn2 ovpn- server [5856]: / sbin / ip route add 10.8.0.0/24 via 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server [5856]: GID set to nogroup May 03 15:30:05 openvpn2 ovpn-server [5856]: UID set to nobody May 03 15:30:05 openvpn2 ovpn -server [5856]: UDPv4 link local (bound): [undef] May 03 15:30:05 openvpn2 ovpn-server [5856]: UDPv4 link remote: [undef] May 03 15:30:05 openvpn2 ovpn-server [ 5856]: MULTI: multi_init called, r = 256 v = 256 May 03 15:30:05 openvpn2 ovpn-server [5856]: IFCONFIG POOL: base = 10.8.0.4 size = 62, ipv6 = 0 May 03 15:30: 05 openvpn2 ovpn-server [5856]: IFCONFIG POOL LIST May 03 15:30:05 openvpn2 ovpn-server [5856]: Initialization Sequence Completed
Ви також можете перевірити доступність інтерфейсу OpenVPN tun0 наступною командою:
Ви повинні побачити конфігурацію інтерфейсу:
висновок
4: tun0: <POINTOPOINT, MULTICAST, NOARP, UP, LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link / none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever
Якщо все в порядку, настроєм сервіс на автоматичне включення при завантаженні сервера:
- sudo systemctl enable openvpn @ server
Крок 10. Створення інфраструктури настройки клієнтів
Далі налаштуємо систему для простого створення файлів конфігурації для клієнтів.
Створення структури директорій конфігурації клієнтів
В домашній директорії створіть структуру директорій для зберігання файлів:
- mkdir -p ~ / client-configs / files
Оскільки наші файли конфігурації будуть містити клієнтські ключі, ми повинні налаштувати права доступу для створених директорій:
- chmod 700 ~ / client-configs / files
Створення базової конфігурації
Далі скопіюємо конфігурацію-приклад в нашу директорію для використання в якості нашої базовій конфігурації:
- cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~ / client-configs / base.conf
Відкрийте цей файл у текстовому редакторі:
- nano ~ / client-configs / base.conf
Зробимо кілька змін в цьому файлі.
Спочатку знайдіть директиву remote. Ця директива повідомляє клієнту адресу нашого сервера OpenVPN. Це повинен бути публічний IP адреса вашого сервера OpenVPN. Якщо ви змінили порт, який слухає сервер OpenVPN, змініть порт за замовчуванням тисяча сто дев'яносто чотири на ваше значення:
~ / Client-configs / base.conf
. . . # The hostname / IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote server_IP_address 1194. . .
Переконайтеся, що протокол збігається з настройками сервера:
~ / Client-configs / base.conf
proto udp
Далі розкоментуйте директиви user і group видаляючи ";":
~ / Client-configs / base.conf
# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup
Знайдіть директиви ca, cert і key. Закоментуйте ці директиви, так як ми будемо додавати сертифікати і ключі в самому файлі:
~ / Client-configs / base.conf
# SSL / TLS parms. # See the server config file for more # description. It's best to use # a separate .crt / .key file pair # for each client. A single ca # file can be used for all clients. # Ca ca.crt # cert client.crt # key client.key
Додайте налаштування cipher і auth згідно із заданими у файлі /etc/openvpn/server.conf:
~ / Client-configs / base.conf
cipher AES-128-CBC auth SHA256
Далі додайте директиву key-direction в будь-яке місце в файлі. Вона повинна мати значення "1" для коректної роботи сервера:
~ / Client-configs / base.conf
key-direction 1
Нарешті, додайте кілька закоментувавши рядків. Ми ходимо додати ці рядки в кожен файл конфігурації, але вони будуть включені тільки для клієнтів на Linux, які використовують файл / etc / openvpn / update-resolv-conf. Цей скрипт використовує утиліту resolvconf для оновлення інформації DNS на клієнтах Linux.
~ / Client-configs / base.conf
# Script-security 2 # up / etc / openvpn / update-resolv-conf # down / etc / openvpn / update-resolv-conf
Якщо ваш клієнт працює на Linux і використовує файл / etc / openvpn / update-resolv-conf, ви повинні розкоментувати ці рядки в створеному клієнтському файлі конфігурації OpenVPN.
Збережіть і закрийте файл.
Створення скрипта генерації файлів конфігурації
Тепер створимо простий скрипт для генерації файлів конфігурації з релевантними сертифікатами, ключами і файлами шифрування. Він буде поміщати згенеровані файлу конфігурації в директорію ~ / client-configs / files.
Створіть і відкрийте файл make_config.sh всередині директорії ~ / client-configs:
- nano ~ / client-configs / make_config.sh
Вставте наступні текст в цей файл:
~ / Client-configs / make_config.sh
#! / Bin / bash # First argument: Client identifier KEY_DIR = ~ / openvpn-ca / keys OUTPUT_DIR = ~ / client-configs / files BASE_CONFIG = ~ / client-configs / base.conf cat $ {BASE_CONFIG} \ <(echo -e '<ca>') \ $ {KEY_DIR} /ca.crt \ <(echo -e '</ ca> \ n <cert>') \ $ {KEY_DIR} / $ {1} .crt \ <( echo -e '</ cert> \ n <key>') \ $ {KEY_DIR} / $ {1} .key \ <(echo -e '</ key> \ n <tls-auth>') \ $ { KEY_DIR} /ta.key \ <(echo -e '</ tls-auth>') \> $ {OUTPUT_DIR} / $ {1} .ovpn
Збережіть і закрийте файл.
Зробіть його виконуваним файлом командою:
- chmod 700 ~ / client-configs / make_config.sh
Крок 11. Генерація конфігурацій клієнтів
Тепер ми можемо легко згенерувати файли конфігурації клієнтів.
Якщо ви дотримувалися всіх кроків цієї статті, ви створили сертифікат client1.crt і ключ клієнта client1.key командою ./build-key client1 на кроці 6. Ви можете згенерувати конфігурацію для цих файлів перейшовши в директорію ~ / client-configs і використовуючи тільки що створений нами скрипт:
- cd ~ / client-configs
- ./make_config.sh client1
Якщо все пройшло успішно, ми повинні отримати файл client1.ovpn в директорії ~ / client-configs / files:
- ls ~ / client-configs / files
Висновок
client1.ovpn
Доставка конфігурацій клієнтам
Тепер ми повинні перемістити файл конфігурації на клієнтський пристрій. Наприклад, на комп'ютер або смартфон.
Спосіб доставки файлу залежить від операційної системи вашого пристрою і програмного забезпечення, яке ви захочете використовувати для переміщення файлу. Ми рекомендуємо передавати файл по захищеному з'єднанню, наприклад, з використанням SFTP або SCP.
Нижче ми наводимо приклад передачі файлу client1.ovpn з використанням SFTP. Наступну команду можна використовувати на вашому локальному комп'ютері під керуванням Mac OS або Linux. Вона переміщує файл .ovpn в вашу домашню директорію:
- sftp sammy @ openvpn_server_ip: client-configs / files / client1.ovpn ~ /
Нижче представлено кілька посилань на інструменти та статті про безпечне перенесення файлів з сервера на локальний комп'ютер:
Крок 12. Встановлення файлів конфігурацій клієнтів
Тепер ми поговоримо про те, як встановлювати клієнтські профілі VPN на Windows, Mac OS, iOS і Android. Процес установки унікальний для кожної платформи, тому пропускайте платформи, які ви не плануєте використовувати.
Назва з'єднання OpenVPN залежить від того, як ви називали свій .ovpn файл. У нашому прикладі це буде client1.ovpn.
Windows
установка
Ви можете завантажити клієнт для роботи з OpenVPN для Windows зі сторінки завантажень OpenVPN . Виберіть необхідну вам версію програми.
Увага: установка OpenVPN вимагає адміністраторській облікового запису.
Після установки OpenVPN скопіюйте ваш .ovpn файл в цю директорію:
C: \ Program Files \ OpenVPN \ config
Запустіть OpenVPN, клієнт повинен автоматично побачити ваш профіль.
Клієнт OpenVPN вимагає запуску з правами адміністратора навіть для акаунтів адміністратора. Для запуску зробіть клацання правою кнопкою миші на клієнті і виберіть Run as administrator кожен раз при запуску клієнта. Це також означає, що звичайні користувачі повинні будуть вводити пароль адміністратора для використання OpenVPN.
Для того, щоб додаток OpenVPN завжди запускалося з правами адміністратора, зробіть клацання правою кнопкою миші на іконці клієнта і перейдіть в розділ Properties. У нижній частині вкладки Compatibility натисніть на кнопку Change settings for all users. У вікні, виберіть Run this program as an administrator.
з'єднання
Кожен раз при запуску клієнта OpenVPN Windows буде питати, чи хочете ви дозволити програмі внести зміни в налаштування вашого комп'ютера. Натісніть Так. Запуск клієнта OpenVPN просто поміщає додаток в системний трей, при цьому саме з'єднання не встановлюється автоматично.
Для установки з'єднання зробіть клацання правою кнопкою миші на іконці OpenVPN в системному треї. У контекстному меню виберіть client1 (це наш профіль client1.ovpn) і натисніть Connect.
Відкриється вікно статусу, яке буде відображати лог з'єднання. Коли буде припинено з'єднання ви побачите відповідне повідомлення.
Закрити VPN з'єднання можна точно так же: зробіть клацання правою кнопкою миші на іконці OpenVPN в системному треї, виберіть профіль клієнта і натисніть Disconnect.
Mac OS
установка
Tunnelblick - це безкоштовний OpenVPN клієнт для Mac OS з відкритим вихідним кодом. Ви можете завантажити його з сторінки завантажень Tunnelblick . Зробіть подвійне клацання на завантаженому .dmg файлі і виконуйте вказівки в процесі установки.
В кінці процесу установки Tunnelblick запитає, чи є у вас конфігураційні файли. Найпростіше відповісти No і завершити установку Tunnelblick. Відкрийте Finder і зробіть подвійне клацання на client1.ovpn. Tunnelblick встановить клієнтський профіль. Для цього необхідно мати права адміністратора.
з'єднання
Запустіть Tunnelblick подвійним клацанням з папки Applications. Після запуску в панелі меню в правій верхній частині екрану з'явиться іконка Tunnelblick. Для установки з'єднання натисніть на іконку, а потім Connect. Далі виберіть з'єднання client1.
Linux
установка
Залежно від використовуваної вами версії Linux, ви можете використовувати найрізноманітніші програми для установки з'єднання. Можливо, це вміє робити навіть ваш менеджер вікон.
Найбільш універсальним способом установки з'єднання, тим не менш, є програмне забезпечення OpenVPN.
В Ubuntu або Debian ви можете встановити його точно так само, як і на сервері:
- sudo apt-get update
- sudo apt-get install openvpn
У CentOS ви можете активувати EPEL репозиторії і потім ввести наступні команди:
- sudo yum install epel-release
- sudo yum install openvpn
налаштування
Спочатку перевірте, чи містить ваш дистрибутив скрипт / etc / openvpn / update-resolv-conf:
Висновок
update-resolve-conf
Далі відредагуйте отриманий з сервера файл конфігурації клієнта OpenVPN:
Якщо вам вдалося знайти файл update-resolv-conf, розкоментуйте наступні рядки файлу:
client1.ovpn
script-security 2 up / etc / openvpn / update-resolv-conf down / etc / openvpn / update-resolv-conf
Якщо ви використовуєте CentOS, змініть group з nogroup на nobody:
client1.ovpn
group nobody
Збережіть і закрийте файл.
Тепер ви можете з'єднатися з VPN використовуючи команду openvpn наступним чином:
- sudo openvpn --config client1 .ovpn
В результаті ви підключіться до сервера.
iOS
установка
Знайдіть в iTunes App Store офіційний клієнт OpenVPN Connect і встановіть його. Для перенесення файлу конфігурації клієнта на ваш пристрій, підключіть пристрій до комп'ютера.
Запустіть iTunes на комп'ютері і виберіть iPhone> apps. Знайдіть секцію File Sharing і натисніть на додаток OpenVPN. Перенесіть ваш файл .ovpn в праву частину вікна OpenVPN Documents.
Далі запустіть додаток OpenVPN на iPhone. Ви отримаєте повідомлення, що новий профіль готовий до імпорту. Натисніть на зелений плюсик для імпорту профілю.
з'єднання
OpenVPN готовий до використання з новим профілем. Для установки з'єднання потягніть слайдер Connect в позицію On. Для зупинки з'єднання перемістіть цей же слайдер в положення Off.
Увага
Перемикач VPN в додатку Settings можна використовувати для установки з'єднання з VPN. Якщо ви спробуєте це зробити, ви отримаєте повідомлення про те, що це можливо тільки в додатку OpenVPN.
Android
установка
Відкрийте Google Play Store. Знайдіть і встановіть офіційний додаток OpenVPN Android OpenVPN Connect .
Передати профіль з комп'ютера на телефон можна підключивши Android пристрій до комп'ютера через USB і скопіювавши файл. Ви також можете перемістити файл профілю за допомогою SD карти, скопіювавши профіль на карту і вставивши карту в Android пристрій.
Відкрийте програму OpenVPN і натисніть на меню для імпорту профілю.
Далі знайдіть файл в файловій системі (в нашому прикладі це / sdcard / Download /) і виберіть знайдений файл. Додаток повідомить, що профіль був імпортований.
з'єднання
Для установки з'єднання натисніть кнопку Connect. Вам буде поставлено питання, чи довіряєте ви з додатком OpenVPN. Дайте відповідь OK для установки з'єднання. Для зупинки з'єднання зайдіть в додаток OpenVPN і виберіть Disconnect.
Крок 13. Тестування VPN з'єднання
Після того, як все встановлено і налаштовано, переконаємося, що все працює правильно. Без установки з'єднання з VPN відкрийте браузер і зайдіть на DNSLeakTest .
Цей сайт поверне IP адреса, призначений вам вашим Інтернет-провайдером. Для того, щоб перевірити, які DNS сервера використовуються, натисніть на Extended Test.
Тепер встановіть з'єднання, використовуючи ваш VPN клієнт і обновіть сторінку в браузері. Що видається вам IP адреса повинна бути зовсім іншою. Тепер для всіх в Інтернеті ви використовуєте цей новий IP адреса. Натисніть Extended Test ще раз, щоб перевірити ваші настройки DNS і переконайтеся, що тепер ви використовуєте DNS сервера вашого VPN.
Крок 14. Відкликання клієнтських сертифікатів
Час від часу, вам може знадобитися відкликати клієнтський сертифікат для запобігання доступу до сервера VPN &
Для цього треба зайти в вашу директорію центру сертифікації і введіть команди:
- cd ~ / openvpn-ca
- source vars
Далі використовуйте команду revoke-full з ім'ям клієнта, сертифікат якого ви хочете відкликати:
Висновок результатів роботи цієї команди буде закінчуватися помилкою 23. Це нормально. В результаті роботи буде створено файл crl.pem в директорії keys з необхідною для відкликання сертифікату інформацією.
Перемістіть цей файл в директорію / etc / openvpn:
- sudo cp ~ / openvpn-ca / keys / crl.pem / etc / openvpn
Далі відкрийте файл конфігурації сервера OpenVPN:
- sudo nano /etc/openvpn/server.conf
Додайте в кінець файлу рядок crl-verify. Сервер OpenVPN перевірятиме список відкликаних сертифікатів кожен раз, коли хтось встановлює з'єднання з сервером.
/etc/openvpn/server.conf
crl-verify crl.pem
Збережіть і закрийте файл.
Перезапустіть OpenVPN для завершення процесу відкликання сертифікату:
- sudo systemctl restart openvpn @ server
Тепер клієнт не зможе встановлювати з'єднання з сервером OpenVPN використовуючи старий сертифікат.
Для відкликання додаткових сертифікатів виконайте наступні кроки:
Згенеруйте новий список відкликаних сертифікатів використовуючи команду source vars в директорії ~ / openvpn-ca і виконуючи команду revoke-full з ім'ям клієнта.
Скопіюйте новий список відкликаних сертифікатів в директорію / etc / openvpn перезаписавши тим самим старий список.
Перезапустіть сервіс OpenVPN.
Ця процедура може бути використана для відкликання будь-яких створених вами раніше сертифікатів.
Висновок
Вітаємо! Тепер ви можете безпечно виходити в Інтернет, весь ваш трафік захищений від прослушки цензорів і зловмисників.
Для конфігурації додаткових клієнтів повторіть кроки 6 і 11-13 для кожного нового пристрою. Для відкликання доступу того чи іншого клієнта використовуйте крок 14.
Як налаштувати сервер OpenVPN в Ubuntu 16.04
Вступ
Хочете мати безпечний і захищений доступ в Інтернет з вашого смартфона або ноутбука при підключенні до незахищеної мережі через WiFi готелю або кафе? Віртуальна приватна мережа (Virtual Private Network, VPN) дозволяє використовувати незахищені мережі таким чином, як якщо б ви працювали в приватній мережі. Весь ваш трафік в цьому випадку проходить через VPN-сервер.
У комбінації з використанням HTTPS-з'єднання описувані далі настройки дозволять вам убезпечити свою приватну інформацію, наприклад, логіни і паролі, а також ваші покупки. Більш того, ви зможете обходити регіональні обмеження і цензуру, а також приховувати своє місцезнаходження і незашифрований HTTP-трафік від незахищеною мережі.
OpenVPN являє собою потужний і гнучко настроюється програмне забезпечення з відкритим вихідним кодом для роботи з Secure Socket Layer (SSL) VPN. У цій статті ми встановимо і налаштуємо OpenVPN сервер, а також навчимося здійснювати до нього доступ з Windows, Mac OS, iOS і Android. Для цього ми виконаємо кілька простих кроків.
Необхідні умови
Перш за все вам необхідно мати сервер з Ubuntu 16.04.
Перед тим, як почати слідувати інструкції, наведені в цій статті, вам необхідно налаштувати окремий, чи не-рутовий (non-root) профіль користувача з привілеями sudo на вашому сервері. Ви можете зробити це згідно з інструкціями, описаним в статті про первинну налаштування сервера на Ubuntu 16.04 . У цій же статті описаний процес налаштування файрвола; далі ми будемо вважати, що файрвол налаштований на вашому сервері.
Коли ви будете готові почати, зайдіть на ваш сервер під створеним вами sudo-користувачем і виконуйте інструкції, наведені нижче.
Крок 1. Встановлення OpenVPN
Спочатку встановимо OpenVPN на наш сервер. OpenVPN доступний в стандартних репозиторіях Ubuntu, ми можемо використовувати apt для його установки. Також ми встановимо пакет easy-rsa, який дозволить нам налаштувати наш власний внутрішній центр сертифікації (certificate authority, CA) для використання з нашої VPN.
Оновимо список пакетів сервера і встановимо необхідні пакети наступними командами:
- sudo apt-get update
- sudo apt-get install openvpn easy-rsa
Необхідне програмне забезпечення встановлено і готове до налаштування.
Крок 2. Створення директорії центру сертифікації
OpenVPN це віртуальна приватна мережа, що використовує TLS / SSL. Це означає, що OpenVPN використовує сертифікати для шифрування трафіку між сервером і клієнтами. Для випуску довірених сертифікатів (trusted certificates) нам буде потрібно створити наш власний центр сертифікації.
Для початку скопіюємо шаблонну директорію easy-rsa в нашу домашню директорію за допомогою команди make-cadir:
Далі зайдемо в цю директорію для початку налаштування ЦС:
Крок 3. Налаштування змінних центру сертифікації
Для настройки змінних нашого центру сертифікації нам необхідно відредагувати файл vars. Відкрийте цей файл у текстовому редакторі:
Всередині файлу ви знайдете змінні, які можна відредагувати, і які задають параметри сертифікатів при їх створенні. Нам потрібно змінити лише кілька змінних.
Перейдіть ближче до кінця файлу і знайдіть налаштування полів, які використовуються за замовчуванням при створенні сертифікатів. Вони повинні виглядати приблизно так:
~ / Openvpn-ca / vars
. . . export KEY_COUNTRY = "US" export KEY_PROVINCE = "CA" export KEY_CITY = "SanFrancisco" export KEY_ORG = "Fort-Funston" export KEY_EMAIL = "[email protected]" export KEY_OU = "MyOrganizationalUnit". . .
Замініть значення, виділені червоним, на що-небудь інше, не залишайте їх не заповненими:
~ / Openvpn-ca / vars
. . . export KEY_COUNTRY = "US" export KEY_PROVINCE = "NY" export KEY_CITY = "New York City" export KEY_ORG = "DigitalOcean" export KEY_EMAIL = "[email protected]" export KEY_OU = "Community". . .
Поки ми в цьому файлі, відредагуємо значення KEY_NAME трохи нижче, яке заповнює поле суб'єкта сертифікатів. Для простоти задамо йому назву server:
~ / Openvpn-ca / vars
export KEY_NAME = "server"
Збережіть і закрийте файл.
Крок 4. Створення центру сертифікації
Тепер ми можемо використовувати задані нами змінні і утиліти easy-rsa для створення центру сертифікації.
Переконайтеся, що ви перебуваєте в директорії центру сертифікації і використовуйте команду source до файлу vars:
- cd ~ / openvpn-ca
- source vars
Ви повинні побачити наступний висновок:
висновок
NOTE: If you run ./clean-all, I will be doing a rm -rf on / home / sammy / openvpn-ca / keys
Переконаємося, що ми працюємо в "чистому середовищі" виконавши наступну команду:
Тепер ми можемо створити наш кореневої центр сертифікації командою:
Ця команда запустить процес створення ключа і сертифіката кореневого центру сертифікації. Оскільки ми задали всі змінні у файлі vars, всі необхідні значення будуть введені автоматично. Натискайте ENTER для підтвердження вибору:
висновок
Generating a 2048 bit RSA private key ........................................... ............................................... +++ ............................... +++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', The field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [NY]: Locality Name (eg, city) [New York City]: Organization Name (eg, company) [DigitalOcean ]: Organizational Unit Name (eg, section) [Community]: Common Name (eg, your name or your server's hostname) [DigitalOcean CA]: Name [server]: Email Address [[email protected]]:
Тепер у нас є центр сертифікації, який ми зможемо використовувати для створення всіх інших необхідних нам файлів.
Крок 5. Створення сертифіката, ключа і файлів шифрування для сервера
Далі створимо сертифікат, пару ключів і деякі додаткові файли, які використовуються для здійснення шифрування, для нашого сервера.
Почнемо зі створення сертифіката OpenVPN і ключів для сервера. Це можна зробити за допомогою такої команди:
Увага: Якщо раніше ви вибрали ім'я, відмінне від server, вам доведеться трохи змінити деякі інструкції. Наприклад, при копіюванні створених файлів в директорію / etc / openvpn вам доведеться замінити імена на задані вами. Вам також доведеться змінити файл /etc/openvpn/server.conf для того, щоб він вказував на коректні .crt і .key файли.
- ./build-key-server server
Висновок знову буде містити значення за замовчуванням, передані цій команді (server), а також значення з файлу vars.
Погодьтеся з усіма значеннями за замовчуванням, натискаючи ENTER. Не ставте challenge password. В кінці процесу два рази введіть y для підпису і підтвердження створення сертифіката:
висновок
. . . Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate? [Y / n]: y 1 out of 1 certificate requests certified, commit? [Y / n] y Write out database with 1 new entries Data Base Updated
Далі створимо залишилися файли. Ми можемо згенерувати сильні ключі протоколу Діффі-Хеллмана, використовувані при обміні ключами, командою:
Для завершення цієї команди може знадобитися кілька хвилин.
Далі ми можемо згенерувати підпис HMAC для посилення здатності сервера перевіряти цілісність TSL:
- openvpn --genkey --secret keys / ta.key
Крок 6. Створення сертифіката і пари ключів для клієнта
Далі ми можемо згенерувати сертифікат і пару ключів для клієнта. Взагалі це можна зробити і на клієнтській машині і потім підписати отриманий ключ центром сертифікації сервера, але в цій статті для простоти ми сгенерируем підписаний ключ на сервері.
У цій статті ми створимо ключ і сертифікат тільки для одного клієнта. Якщо у вас кілька клієнтів, ви можете повторювати цей процес скільки завгодно разів. Просто кожен раз передавайте унікальне значення скрипту.
Оскільки ми можемо повернутися до цього кроку пізніше, ми повторимо команду source для файлу vars. Ми будемо використовувати параметр client1 для створення першого сертифікату та ключа.
Для створення файлів без пароля для полегшення автоматичних з'єднань використовуйте команду build-key:
- cd ~ / openvpn-ca
- source vars
- ./build-key client1
Для створення файлів, захищених паролем, використовуйте команду build-key-pass:
- cd ~ / openvpn-ca
- source vars
- ./build-key-pass client1
В ході процесу створення файлів все значення за замовчуванням будуть введені, ви можете натискати ENTER. Не ставте challenge password і введіть y на запити про підписи і підтвердження створення сертифіката.
Крок 7. Налаштування сервісу OpenVPN
Далі налаштуємо сервіс OpenVPN з використанням створених раніше файлів.
Копіювання файлів в директорію OpenVPN
Нам необхідно скопіювати потрібні нам файли в директорію / etc / openvpn.
Спочатку скопіюємо створені нами файли. Вони знаходяться в директорії ~ / openvpn-ca / keys, в якій вони і були створені. Нам потрібно створити сертифікат і ключ центру сертифікації, сертифікат і ключ сервера, підпис HMAC і файл Diffie-Hellman:
- cd ~ / openvpn-ca / keys
- sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem / etc / openvpn
Далі нам необхідно скопіювати і розпакувати файл-приклад конфігурації OpenVPN в конфігураційну директорію, ми будемо використовувати цей файл в якості бази для наших налаштувань:
- gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
Налаштування конфігурації OpenVPN
Тепер, коли наші файли знаходяться на своєму місці, займемося налаштуванням конфігураційного файлу сервера:
- sudo nano /etc/openvpn/server.conf
Базова настройка
Спочатку знайдемо секцію HMAC пошуком директиви tls-auth. Видаліть ";" для того, щоб розкоментувати рядок з tls-auth. Далі додайте параметр key-direction і встановіть його значення в "0":
/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret key-direction 0
Далі знайдемо секцію шифрування, нас цікавлять закоментовані рядки cipher. Шифр AES-128-CBC забезпечує хороший рівень шифрування і широко підтримується іншими програмними продуктами. Видаліть ";" для раскомментірованія рядки AES-128-CBC:
/etc/openvpn/server.conf
cipher AES-128-CBC
Під цим рядком додайте рядок auth і виберіть алгоритм HMAC. Хорошим вибором буде SHA256:
/etc/openvpn/server.conf
auth SHA256
Нарешті, знайдіть налаштування user і group і видаліть ";" для раскомментірованія цих рядків:
/etc/openvpn/server.conf
user nobody group nogroup
(За бажанням) Проштовхування змін DNS для перенаправлення всього трафіку через VPN
Зроблені нами настройки створюють VPN з'єднання між двома машинами, але вони не змушують ці машини використовувати VPN з'єднання. Якщо ви хочете використовувати VPN з'єднання для всього свого трафіку, вам необхідно проштовхнути (push) настройки DNS на клієнтські машини.
Для цього вам необхідно розкоментувати кілька директив. Знайдіть секцію redirect-gateway і видаліть ";" з початку рядка для расскоментірованія redirect-gateway:
/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"
Трохи нижче знаходиться секція dhcp-option. Видаліть ";" для обох рядків:
/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
Це дозволить клієнтам конфігурувати свої настройки DNS для використання VPN з'єднання в якості основного.
(За бажанням) Налаштування порту і протоколу
За замовчуванням OpenVPN використовує порт 1194 і протокол UDP для з'єднання з клієнтами. Якщо вам необхідно змінити порт через будь-яких обмежень для ваших клієнтів, ви можете зробити це змінивши налаштування port. Якщо ви не хостів веб-контент на вашому OpenVPN сервері, ви можете використовувати порт 443, оскільки цей порт зазвичай дозволений для використання в більшості файрволов.
/etc/openvpn/server.conf
# Optional! port 443
Використовуваний протокол може мати обмеження по номеру порту. В цьому випадку змініть proto з UDP на TCP:
/etc/openvpn/server.conf
# Optional! proto tcp
Якщо у вас немає явної необхідності використовувати інший порт, краще залишити обидві ці настройки зі значеннями за замовчуванням.
(За бажанням) Використання кастомними імені сертифіката і ключа
Якщо під час використання команди ./build-key-server трохи вище ви вказали параметр, відмінний від server, поміняйте налаштування cert і key, щоб вони вказували на правильні файли .crt і .key. Якщо ви використовували server, ці настройки повинні виглядати таким чином:
/etc/openvpn/server.conf
cert server .crt key server .key
Збережіть і закрийте файл.
Крок 8. Налаштування мережевої конфігурації сервера
Далі нам необхідно налаштувати мережеву конфігурацію сервера, щоб OpenVPN міг коректно перенаправляти трафік.
Налаштування перенаправлення IP
Спочатку вирішимо сервера перенаправляти трафік. Це ключова функціональність нашого VPN сервера.
Налаштуємо це в файлі /etc/sysctl.conf:
- sudo nano /etc/sysctl.conf
Знайдіть рядок настройки net.ipv4.ip_forward. Видаліть "#" з початку рядка, щоб розкоментувати її:
/etc/sysctl.conf
net.ipv4.ip_forward = 1
Збережіть і закрийте файл.
Для застосування налаштувань до поточної сесії наберіть команду:
Налаштування правил UFW для приховування з'єднань клієнтів
Якщо ви слідували статті про налаштування Ubuntu 16.04, згаданої на початку цієї статті, у вас повинен бути встановлений і налаштований файрвол UFW. Незалежно від того, чи використовуєте ви файрвол для блокування небажаного трафіку (що вам варто робити практично завжди), в цій статті нам буде потрібно файрвол для маніпулювання з вхідним на сервер трафіком. Ми повинні змінити файл налаштувань для приховування з'єднань (masquerading).
Перед тим, як змінити цей файл, ми повинні знайти публічний інтерфейс мережі (public network interface). Для цього наберіть команду:
Публічний інтерфейс повинен слідувати за словом "dev". Наприклад, в нашому випадку цей інтерфейс називається wlp11s0:
висновок
default via 203.0.113.1 dev wlp11s0 proto static metric 600
Знаючи назву інтерфейсу відкриємо файл /etc/ufw/before.rules і додамо туди відповідні налаштування:
- sudo nano /etc/ufw/before.rules
Це файл містить настройки UFW, яке застосовуються перед застосуванням правил UFW. Додайте в початок файлу виділені червоним рядки. Це налаштує правила, що застосовуються за замовчуванням, до ланцюжку POSTROUTING в таблиці nat і буде приховувати весь трафік від VPN:
Увага: не забудьте замінити eth0 в рядку -A POSTROUTING на ім'я інтерфейсу, що знайшли ми раніше.
/etc/ufw/before.rules
# # Rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules * nat: POSTROUTING ACCEPT [0: 0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES # Do not delete these required lines, otherwise there will be errors * filter. . .
Збережіть і закрийте файл.
Тепер ми повинні повідомити UFW, що йому за замовчуванням необхідно вирішувати переслані пакети. Для цього відкрийте файл / etc / default / ufw:
- sudo nano / etc / default / ufw
Знайдіть у файлі директиву DEFAULT_FORWARD_POLICY. Ми змінимо значення з DROP на ACCEPT:
/ Etc / default / ufw
DEFAULT_FORWARD_POLICY = "ACCEPT"
Збережіть і закрийте файл.
Відкриття порту OpenVPN і застосування змін
Далі налаштуємо сам файрвол для дозволу трафіку в OpenVPN.
Якщо ви не змінювали порт і протокол в файлі /etc/openvpn/server.conf, вам необхідно дозволити трафік UDP для порту 1194. Якщо ви змінили ці настройки, введіть зазначені вами значення.
Навіть ми додамо порт SSH на випадок, якщо ви не зробили цього раніше.
- sudo ufw allow 1194 / udp
- sudo ufw allow OpenSSH
Тепер деактивувавши і активуємо UFW для застосування внесених змін:
- sudo ufw disable
- sudo ufw enable
Тепер наш сервер налаштований для обробки трафіку OpenVPN.
Крок 9. Включення сервісу OpenVPN
Ми готові включить сервіс OpenVPN на нашому сервері. Ми можемо зробити це за допомогою systemd.
Нам необхідно запустити сервер OpenVPN вказавши ім'я нашого файлу конфігурації в якості змінної після імені файлу systemd. Файл конфігурації для нашого сервера називається / etc / openvpn / server .conf, тому ми додамо @server в кінець імені файлу при його виклику:
- sudo systemctl start openvpn @ server
Переконаємося, що сервіс успішно запущений командою:
- sudo systemctl status openvpn @ server
Якщо все вийшло, висновок повинен виглядати приблизно так:
висновок
● [email protected] - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (running) since Tue 2016-05-03 15:30 : 05 EDT; 47s ago Docs: man: openvpn (8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 5852 ExecStart = / usr / sbin / openvpn --daemon ovpn-% i --status /run/openvpn/%i.status 10 --cd / etc / openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid / run / openvpn /% i.pid (code = exited, sta Main PID: 5856 (openvpn) Tasks: 1 (limit: 512) CGroup: /system.slice/system-openvpn.slice/[email protected] └─5856 / usr / sbin / openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd / etc / openvpn --script-security 2 --config /etc/openvpn/server.conf - writepid /run/openvpn/server.pid May 03 15:30:05 openvpn2 ovpn-server [5856]: / sbin / ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 May 03 15:30:05 openvpn2 ovpn- server [5856]: / sbin / ip route add 10.8.0.0/24 via 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server [5856]: GID set to nogroup May 03 15:30:05 openvpn2 ovpn-server [5856]: UID set to nobody May 03 15:30:05 openvpn2 ovpn -server [5856]: UDPv4 link local (bound): [undef] May 03 15:30:05 openvpn2 ovpn-server [5856]: UDPv4 link remote: [undef] May 03 15:30:05 openvpn2 ovpn-server [ 5856]: MULTI: multi_init called, r = 256 v = 256 May 03 15:30:05 openvpn2 ovpn-server [5856]: IFCONFIG POOL: base = 10.8.0.4 size = 62, ipv6 = 0 May 03 15:30: 05 openvpn2 ovpn-server [5856]: IFCONFIG POOL LIST May 03 15:30:05 openvpn2 ovpn-server [5856]: Initialization Sequence Completed
Ви також можете перевірити доступність інтерфейсу OpenVPN tun0 наступною командою:
Ви повинні побачити конфігурацію інтерфейсу:
висновок
4: tun0: <POINTOPOINT, MULTICAST, NOARP, UP, LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link / none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever
Якщо все в порядку, настроєм сервіс на автоматичне включення при завантаженні сервера:
- sudo systemctl enable openvpn @ server
Крок 10. Створення інфраструктури настройки клієнтів
Далі налаштуємо систему для простого створення файлів конфігурації для клієнтів.
Створення структури директорій конфігурації клієнтів
В домашній директорії створіть структуру директорій для зберігання файлів:
- mkdir -p ~ / client-configs / files
Оскільки наші файли конфігурації будуть містити клієнтські ключі, ми повинні налаштувати права доступу для створених директорій:
- chmod 700 ~ / client-configs / files
Створення базової конфігурації
Далі скопіюємо конфігурацію-приклад в нашу директорію для використання в якості нашої базовій конфігурації:
- cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~ / client-configs / base.conf
Відкрийте цей файл у текстовому редакторі:
- nano ~ / client-configs / base.conf
Зробимо кілька змін в цьому файлі.
Спочатку знайдіть директиву remote. Ця директива повідомляє клієнту адресу нашого сервера OpenVPN. Це повинен бути публічний IP адреса вашого сервера OpenVPN. Якщо ви змінили порт, який слухає сервер OpenVPN, змініть порт за замовчуванням 1194 на ваше значення:
~ / Client-configs / base.conf
. . . # The hostname / IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote server_IP_address 1194. . .
Переконайтеся, що протокол збігається з настройками сервера:
~ / Client-configs / base.conf
proto udp
Далі розкоментуйте директиви user і group видаляючи ";":
~ / Client-configs / base.conf
# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup
Знайдіть директиви ca, cert і key. Закоментуйте ці директиви, так як ми будемо додавати сертифікати і ключі в самому файлі:
~ / Client-configs / base.conf
Як налаштувати сервер OpenVPN в Ubuntu 16.04
Вступ
Хочете мати безпечний і захищений доступ в Інтернет з вашого смартфона або ноутбука при підключенні до незахищеної мережі через WiFi готелю або кафе? Віртуальна приватна мережа (Virtual Private Network, VPN) дозволяє використовувати незахищені мережі таким чином, як якщо б ви працювали в приватній мережі. Весь ваш трафік в цьому випадку проходить через VPN-сервер.
У комбінації з використанням HTTPS-з'єднання описувані далі настройки дозволять вам убезпечити свою приватну інформацію, наприклад, логіни і паролі, а також ваші покупки. Більш того, ви зможете обходити регіональні обмеження і цензуру, а також приховувати своє місцезнаходження і незашифрований HTTP-трафік від незахищеною мережі.
OpenVPN являє собою потужний і гнучко настроюється програмне забезпечення з відкритим вихідним кодом для роботи з Secure Socket Layer (SSL) VPN. У цій статті ми встановимо і налаштуємо OpenVPN сервер, а також навчимося здійснювати до нього доступ з Windows, Mac OS, iOS і Android. Для цього ми виконаємо кілька простих кроків.
Необхідні умови
Перш за все вам необхідно мати сервер з Ubuntu 16.04.
Перед тим, як почати слідувати інструкції, наведені в цій статті, вам необхідно налаштувати окремий, чи не-рутовий (non-root) профіль користувача з привілеями sudo на вашому сервері. Ви можете зробити це згідно з інструкціями, описаним в статті про первинну налаштування сервера на Ubuntu 16.04 . У цій же статті описаний процес налаштування файрвола; далі ми будемо вважати, що файрвол налаштований на вашому сервері.
Коли ви будете готові почати, зайдіть на ваш сервер під створеним вами sudo-користувачем і виконуйте інструкції, наведені нижче.
Крок 1. Встановлення OpenVPN
Спочатку встановимо OpenVPN на наш сервер. OpenVPN доступний в стандартних репозиторіях Ubuntu, ми можемо використовувати apt для його установки. Також ми встановимо пакет easy-rsa, який дозволить нам налаштувати наш власний внутрішній центр сертифікації (certificate authority, CA) для використання з нашої VPN.
Оновимо список пакетів сервера і встановимо необхідні пакети наступними командами:
- sudo apt-get update
- sudo apt-get install openvpn easy-rsa
Необхідне програмне забезпечення встановлено і готове до налаштування.
Крок 2. Створення директорії центру сертифікації
OpenVPN це віртуальна приватна мережа, що використовує TLS / SSL. Це означає, що OpenVPN використовує сертифікати для шифрування трафіку між сервером і клієнтами. Для випуску довірених сертифікатів (trusted certificates) нам буде потрібно створити наш власний центр сертифікації.
Для початку скопіюємо шаблонну директорію easy-rsa в нашу домашню директорію за допомогою команди make-cadir:
Далі зайдемо в цю директорію для початку налаштування ЦС:
Крок 3. Налаштування змінних центру сертифікації
Для настройки змінних нашого центру сертифікації нам необхідно відредагувати файл vars. Відкрийте цей файл у текстовому редакторі:
Всередині файлу ви знайдете змінні, які можна відредагувати, і які задають параметри сертифікатів при їх створенні. Нам потрібно змінити лише кілька змінних.
Перейдіть ближче до кінця файлу і знайдіть налаштування полів, які використовуються за замовчуванням при створенні сертифікатів. Вони повинні виглядати приблизно так:
~ / Openvpn-ca / vars
. . . export KEY_COUNTRY = "US" export KEY_PROVINCE = "CA" export KEY_CITY = "SanFrancisco" export KEY_ORG = "Fort-Funston" export KEY_EMAIL = "[email protected]" export KEY_OU = "MyOrganizationalUnit". . .
Замініть значення, виділені червоним, на що-небудь інше, не залишайте їх не заповненими:
~ / Openvpn-ca / vars
. . . export KEY_COUNTRY = "US" export KEY_PROVINCE = "NY" export KEY_CITY = "New York City" export KEY_ORG = "DigitalOcean" export KEY_EMAIL = "[email protected]" export KEY_OU = "Community". . .
Поки ми в цьому файлі, відредагуємо значення KEY_NAME трохи нижче, яке заповнює поле суб'єкта сертифікатів. Для простоти задамо йому назву server:
~ / Openvpn-ca / vars
export KEY_NAME = "server"
Збережіть і закрийте файл.
Крок 4. Створення центру сертифікації
Тепер ми можемо використовувати задані нами змінні і утиліти easy-rsa для створення центру сертифікації.
Переконайтеся, що ви перебуваєте в директорії центру сертифікації і використовуйте команду source до файлу vars:
- cd ~ / openvpn-ca
- source vars
Ви повинні побачити наступний висновок:
висновок
NOTE: If you run ./clean-all, I will be doing a rm -rf on / home / sammy / openvpn-ca / keys
Переконаємося, що ми працюємо в "чистому середовищі" виконавши наступну команду:
Тепер ми можемо створити наш кореневої центр сертифікації командою:
Ця команда запустить процес створення ключа і сертифіката кореневого центру сертифікації. Оскільки ми задали всі змінні у файлі vars, всі необхідні значення будуть введені автоматично. Натискайте ENTER для підтвердження вибору:
висновок
Generating a 2048 bit RSA private key ........................................... ............................................... +++ ............................... +++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', The field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [NY]: Locality Name (eg, city) [New York City]: Organization Name (eg, company) [DigitalOcean ]: Organizational Unit Name (eg, section) [Community]: Common Name (eg, your name or your server's hostname) [DigitalOcean CA]: Name [server]: Email Address [[email protected]]:
Тепер у нас є центр сертифікації, який ми зможемо використовувати для створення всіх інших необхідних нам файлів.
Крок 5. Створення сертифіката, ключа і файлів шифрування для сервера
Далі створимо сертифікат, пару ключів і деякі додаткові файли, які використовуються для здійснення шифрування, для нашого сервера.
Почнемо зі створення сертифіката OpenVPN і ключів для сервера. Це можна зробити за допомогою такої команди:
Увага: Якщо раніше ви вибрали ім'я, відмінне від server, вам доведеться трохи змінити деякі інструкції. Наприклад, при копіюванні створених файлів в директорію / etc / openvpn вам доведеться замінити імена на задані вами. Вам також доведеться змінити файл /etc/openvpn/server.conf для того, щоб він вказував на коректні .crt і .key файли.
- ./build-key-server server
Висновок знову буде містити значення за замовчуванням, передані цій команді (server), а також значення з файлу vars.
Погодьтеся з усіма значеннями за замовчуванням, натискаючи ENTER. Не ставте challenge password. В кінці процесу два рази введіть y для підпису і підтвердження створення сертифіката:
висновок
. . . Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate? [Y / n]: y 1 out of 1 certificate requests certified, commit? [Y / n] y Write out database with 1 new entries Data Base Updated
Далі створимо залишилися файли. Ми можемо згенерувати сильні ключі протоколу Діффі-Хеллмана, використовувані при обміні ключами, командою:
Для завершення цієї команди може знадобитися кілька хвилин.
Далі ми можемо згенерувати підпис HMAC для посилення здатності сервера перевіряти цілісність TSL:
- openvpn --genkey --secret keys / ta.key
Крок 6. Створення сертифіката і пари ключів для клієнта
Далі ми можемо згенерувати сертифікат і пару ключів для клієнта. Взагалі це можна зробити і на клієнтській машині і потім підписати отриманий ключ центром сертифікації сервера, але в цій статті для простоти ми сгенерируем підписаний ключ на сервері.
У цій статті ми створимо ключ і сертифікат тільки для одного клієнта. Якщо у вас кілька клієнтів, ви можете повторювати цей процес скільки завгодно разів. Просто кожен раз передавайте унікальне значення скрипту.
Оскільки ми можемо повернутися до цього кроку пізніше, ми повторимо команду source для файлу vars. Ми будемо використовувати параметр client1 для створення першого сертифікату та ключа.
Для створення файлів без пароля для полегшення автоматичних з'єднань використовуйте команду build-key:
- cd ~ / openvpn-ca
- source vars
- ./build-key client1
Для створення файлів, захищених паролем, використовуйте команду build-key-pass:
- cd ~ / openvpn-ca
- source vars
- ./build-key-pass client1
В ході процесу створення файлів все значення за замовчуванням будуть введені, ви можете натискати ENTER. Не ставте challenge password і введіть y на запити про підписи і підтвердження створення сертифіката.
Крок 7. Налаштування сервісу OpenVPN
Далі налаштуємо сервіс OpenVPN з використанням створених раніше файлів.
Копіювання файлів в директорію OpenVPN
Нам необхідно скопіювати потрібні нам файли в директорію / etc / openvpn.
Спочатку скопіюємо створені нами файли. Вони знаходяться в директорії ~ / openvpn-ca / keys, в якій вони і були створені. Нам потрібно створити сертифікат і ключ центру сертифікації, сертифікат і ключ сервера, підпис HMAC і файл Diffie-Hellman:
- cd ~ / openvpn-ca / keys
- sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem / etc / openvpn
Далі нам необхідно скопіювати і розпакувати файл-приклад конфігурації OpenVPN в конфігураційну директорію, ми будемо використовувати цей файл в якості бази для наших налаштувань:
- gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
Налаштування конфігурації OpenVPN
Тепер, коли наші файли знаходяться на своєму місці, займемося налаштуванням конфігураційного файлу сервера:
- sudo nano /etc/openvpn/server.conf
Базова настройка
Спочатку знайдемо секцію HMAC пошуком директиви tls-auth. Видаліть ";" для того, щоб розкоментувати рядок з tls-auth. Далі додайте параметр key-direction і встановіть його значення в "0":
/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret key-direction 0
Далі знайдемо секцію шифрування, нас цікавлять закоментовані рядки cipher. Шифр AES-128-CBC забезпечує хороший рівень шифрування і широко підтримується іншими програмними продуктами. Видаліть ";" для раскомментірованія рядки AES-128-CBC:
/etc/openvpn/server.conf
cipher AES-128-CBC
Під цим рядком додайте рядок auth і виберіть алгоритм HMAC. Хорошим вибором буде SHA256:
/etc/openvpn/server.conf
auth SHA256
Нарешті, знайдіть налаштування user і group і видаліть ";" для раскомментірованія цих рядків:
/etc/openvpn/server.conf
user nobody group nogroup
(За бажанням) Проштовхування змін DNS для перенаправлення всього трафіку через VPN
Зроблені нами настройки створюють VPN з'єднання між двома машинами, але вони не змушують ці машини використовувати VPN з'єднання. Якщо ви хочете використовувати VPN з'єднання для всього свого трафіку, вам необхідно проштовхнути (push) настройки DNS на клієнтські машини.
Для цього вам необхідно розкоментувати кілька директив. Знайдіть секцію redirect-gateway і видаліть ";" з початку рядка для расскоментірованія redirect-gateway:
/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"
Трохи нижче знаходиться секція dhcp-option. Видаліть ";" для обох рядків:
/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
Це дозволить клієнтам конфігурувати свої настройки DNS для використання VPN з'єднання в якості основного.
(За бажанням) Налаштування порту і протоколу
За замовчуванням OpenVPN використовує порт 1194 і протокол UDP для з'єднання з клієнтами. Якщо вам необхідно змінити порт через будь-яких обмежень для ваших клієнтів, ви можете зробити це змінивши налаштування port. Якщо ви не хостів веб-контент на вашому OpenVPN сервері, ви можете використовувати порт 443, оскільки цей порт зазвичай дозволений для використання в більшості файрволов.
/etc/openvpn/server.conf
# Optional! port 443
Використовуваний протокол може мати обмеження по номеру порту. В цьому випадку змініть proto з UDP на TCP:
/etc/openvpn/server.conf
# Optional! proto tcp
Якщо у вас немає явної необхідності використовувати інший порт, краще залишити обидві ці настройки зі значеннями за замовчуванням.
(За бажанням) Використання кастомними імені сертифіката і ключа
Якщо під час використання команди ./build-key-server трохи вище ви вказали параметр, відмінний від server, поміняйте налаштування cert і key, щоб вони вказували на правильні файли .crt і .key. Якщо ви використовували server, ці настройки повинні виглядати таким чином:
/etc/openvpn/server.conf
cert server .crt key server .key
Збережіть і закрийте файл.
Крок 8. Налаштування мережевої конфігурації сервера
Далі нам необхідно налаштувати мережеву конфігурацію сервера, щоб OpenVPN міг коректно перенаправляти трафік.
Налаштування перенаправлення IP
Спочатку вирішимо сервера перенаправляти трафік. Це ключова функціональність нашого VPN сервера.
Налаштуємо це в файлі /etc/sysctl.conf:
- sudo nano /etc/sysctl.conf
Знайдіть рядок настройки net.ipv4.ip_forward. Видаліть "#" з початку рядка, щоб розкоментувати її:
/etc/sysctl.conf
net.ipv4.ip_forward = 1
Збережіть і закрийте файл.
Для застосування налаштувань до поточної сесії наберіть команду:
Налаштування правил UFW для приховування з'єднань клієнтів
Якщо ви слідували статті про налаштування Ubuntu 16.04, згаданої на початку цієї статті, у вас повинен бути встановлений і налаштований файрвол UFW. Незалежно від того, чи використовуєте ви файрвол для блокування небажаного трафіку (що вам варто робити практично завжди), в цій статті нам буде потрібно файрвол для маніпулювання з вхідним на сервер трафіком. Ми повинні змінити файл налаштувань для приховування з'єднань (masquerading).
Перед тим, як змінити цей файл, ми повинні знайти публічний інтерфейс мережі (public network interface). Для цього наберіть команду:
Публічний інтерфейс повинен слідувати за словом "dev". Наприклад, в нашому випадку цей інтерфейс називається wlp11s0:
висновок
default via 203.0.113.1 dev wlp11s0 proto static metric 600
Знаючи назву інтерфейсу відкриємо файл /etc/ufw/before.rules і додамо туди відповідні налаштування:
- sudo nano /etc/ufw/before.rules
Це файл містить настройки UFW, яке застосовуються перед застосуванням правил UFW. Додайте в початок файлу виділені червоним рядки. Це налаштує правила, що застосовуються за замовчуванням, до ланцюжку POSTROUTING в таблиці nat і буде приховувати весь трафік від VPN:
Увага: не забудьте замінити eth0 в рядку -A POSTROUTING на ім'я інтерфейсу, що знайшли ми раніше.
/etc/ufw/before.rules
# # Rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules * nat: POSTROUTING ACCEPT [0: 0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES # Do not delete these required lines, otherwise there will be errors * filter. . .
Збережіть і закрийте файл.
Тепер ми повинні повідомити UFW, що йому за замовчуванням необхідно вирішувати переслані пакети. Для цього відкрийте файл / etc / default / ufw:
- sudo nano / etc / default / ufw
Знайдіть у файлі директиву DEFAULT_FORWARD_POLICY. Ми змінимо значення з DROP на ACCEPT:
/ Etc / default / ufw
DEFAULT_FORWARD_POLICY = "ACCEPT"
Збережіть і закрийте файл.
Відкриття порту OpenVPN і застосування змін
Далі налаштуємо сам файрвол для дозволу трафіку в OpenVPN.
Якщо ви не змінювали порт і протокол в файлі /etc/openvpn/server.conf, вам необхідно дозволити трафік UDP для порту 1194. Якщо ви змінили ці настройки, введіть зазначені вами значення.
Навіть ми додамо порт SSH на випадок, якщо ви не зробили цього раніше.
- sudo ufw allow 1194 / udp
- sudo ufw allow OpenSSH
Тепер деактивувавши і активуємо UFW для застосування внесених змін:
- sudo ufw disable
- sudo ufw enable
Тепер наш сервер налаштований для обробки трафіку OpenVPN.
Крок 9. Включення сервісу OpenVPN
Ми готові включить сервіс OpenVPN на нашому сервері. Ми можемо зробити це за допомогою systemd.
Нам необхідно запустити сервер OpenVPN вказавши ім'я нашого файлу конфігурації в якості змінної після імені файлу systemd. Файл конфігурації для нашого сервера називається / etc / openvpn / server .conf, тому ми додамо @server в кінець імені файлу при його виклику:
- sudo systemctl start openvpn @ server
Переконаємося, що сервіс успішно запущений командою:
- sudo systemctl status openvpn @ server
Якщо все вийшло, висновок повинен виглядати приблизно так:
висновок
● [email protected] - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (running) since Tue 2016-05-03 15:30 : 05 EDT; 47s ago Docs: man: openvpn (8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 5852 ExecStart = / usr / sbin / openvpn --daemon ovpn-% i --status /run/openvpn/%i.status 10 --cd / etc / openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid / run / openvpn /% i.pid (code = exited, sta Main PID: 5856 (openvpn) Tasks: 1 (limit: 512) CGroup: /system.slice/system-openvpn.slice/[email protected] └─5856 / usr / sbin / openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd / etc / openvpn --script-security 2 --config /etc/openvpn/server.conf - writepid /run/openvpn/server.pid May 03 15:30:05 openvpn2 ovpn-server [5856]: / sbin / ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 May 03 15:30:05 openvpn2 ovpn- server [5856]: / sbin / ip route add 10.8.0.0/24 via 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server [5856]: GID set to nogroup May 03 15:30:05 openvpn2 ovpn-server [5856]: UID set to nobody May 03 15:30:05 openvpn2 ovpn -server [5856]: UDPv4 link local (bound): [undef] May 03 15:30:05 openvpn2 ovpn-server [5856]: UDPv4 link remote: [undef] May 03 15:30:05 openvpn2 ovpn-server [ 5856]: MULTI: multi_init called, r = 256 v = 256 May 03 15:30:05 openvpn2 ovpn-server [5856]: IFCONFIG POOL: base = 10.8.0.4 size = 62, ipv6 = 0 May 03 15:30: 05 openvpn2 ovpn-server [5856]: IFCONFIG POOL LIST May 03 15:30:05 openvpn2 ovpn-server [5856]: Initialization Sequence Completed
Ви також можете перевірити доступність інтерфейсу OpenVPN tun0 наступною командою:
Ви повинні побачити конфігурацію інтерфейсу:
висновок
4: tun0: <POINTOPOINT, MULTICAST, NOARP, UP, LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link / none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever
Якщо все в порядку, настроєм сервіс на автоматичне включення при завантаженні сервера:
- sudo systemctl enable openvpn @ server
Крок 10. Створення інфраструктури настройки клієнтів
Далі налаштуємо систему для простого створення файлів конфігурації для клієнтів.
Створення структури директорій конфігурації клієнтів
В домашній директорії створіть структуру директорій для зберігання файлів:
- mkdir -p ~ / client-configs / files
Оскільки наші файли конфігурації будуть містити клієнтські ключі, ми повинні налаштувати права доступу для створених директорій:
- chmod 700 ~ / client-configs / files
Створення базової конфігурації
Далі скопіюємо конфігурацію-приклад в нашу директорію для використання в якості нашої базовій конфігурації:
- cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~ / client-configs / base.conf
Відкрийте цей файл у текстовому редакторі:
- nano ~ / client-configs / base.conf
Зробимо кілька змін в цьому файлі.
Спочатку знайдіть директиву remote. Ця директива повідомляє клієнту адресу нашого сервера OpenVPN. Це повинен бути публічний IP адреса вашого сервера OpenVPN. Якщо ви змінили порт, який слухає сервер OpenVPN, змініть порт за замовчуванням 1194 на ваше значення:
~ / Client-configs / base.conf
. . . # The hostname / IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote server_IP_address 1194. . .
Переконайтеся, що протокол збігається з настройками сервера:
~ / Client-configs / base.conf
proto udp
Далі розкоментуйте директиви user і group видаляючи ";":
~ / Client-configs / base.conf
# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup
Знайдіть директиви ca, cert і key. Закоментуйте ці директиви, так як ми будемо додавати сертифікати і ключі в самому файлі:
~ / Client-configs / base.conf
Як налаштувати сервер OpenVPN в Ubuntu 16.04
Вступ
Хочете мати безпечний і захищений доступ в Інтернет з вашого смартфона або ноутбука при підключенні до незахищеної мережі через WiFi готелю або кафе? Віртуальна приватна мережа (Virtual Private Network, VPN) дозволяє використовувати незахищені мережі таким чином, як якщо б ви працювали в приватній мережі. Весь ваш трафік в цьому випадку проходить через VPN-сервер.
У комбінації з використанням HTTPS-з'єднання описувані далі настройки дозволять вам убезпечити свою приватну інформацію, наприклад, логіни і паролі, а також ваші покупки. Більш того, ви зможете обходити регіональні обмеження і цензуру, а також приховувати своє місцезнаходження і незашифрований HTTP-трафік від незахищеною мережі.
OpenVPN являє собою потужний і гнучко настроюється програмне забезпечення з відкритим вихідним кодом для роботи з Secure Socket Layer (SSL) VPN. У цій статті ми встановимо і налаштуємо OpenVPN сервер, а також навчимося здійснювати до нього доступ з Windows, Mac OS, iOS і Android. Для цього ми виконаємо кілька простих кроків.
Необхідні умови
Перш за все вам необхідно мати сервер з Ubuntu 16.04.
Перед тим, як почати слідувати інструкції, наведені в цій статті, вам необхідно налаштувати окремий, чи не-рутовий (non-root) профіль користувача з привілеями sudo на вашому сервері. Ви можете зробити це згідно з інструкціями, описаним в статті про первинну налаштування сервера на Ubuntu 16.04 . У цій же статті описаний процес налаштування файрвола; далі ми будемо вважати, що файрвол налаштований на вашому сервері.
Коли ви будете готові почати, зайдіть на ваш сервер під створеним вами sudo-користувачем і виконуйте інструкції, наведені нижче.
Крок 1. Встановлення OpenVPN
Спочатку встановимо OpenVPN на наш сервер. OpenVPN доступний в стандартних репозиторіях Ubuntu, ми можемо використовувати apt для його установки. Також ми встановимо пакет easy-rsa, який дозволить нам налаштувати наш власний внутрішній центр сертифікації (certificate authority, CA) для використання з нашої VPN.
Оновимо список пакетів сервера і встановимо необхідні пакети наступними командами:
- sudo apt-get update
- sudo apt-get install openvpn easy-rsa
Необхідне програмне забезпечення встановлено і готове до налаштування.
Крок 2. Створення директорії центру сертифікації
OpenVPN це віртуальна приватна мережа, що використовує TLS / SSL. Це означає, що OpenVPN використовує сертифікати для шифрування трафіку між сервером і клієнтами. Для випуску довірених сертифікатів (trusted certificates) нам буде потрібно створити наш власний центр сертифікації.
Для початку скопіюємо шаблонну директорію easy-rsa в нашу домашню директорію за допомогою команди make-cadir:
Далі зайдемо в цю директорію для початку налаштування ЦС:
Крок 3. Налаштування змінних центру сертифікації
Для настройки змінних нашого центру сертифікації нам необхідно відредагувати файл vars. Відкрийте цей файл у текстовому редакторі:
Всередині файлу ви знайдете змінні, які можна відредагувати, і які задають параметри сертифікатів при їх створенні. Нам потрібно змінити лише кілька змінних.
Перейдіть ближче до кінця файлу і знайдіть налаштування полів, які використовуються за замовчуванням при створенні сертифікатів. Вони повинні виглядати приблизно так:
~ / Openvpn-ca / vars
. . . export KEY_COUNTRY = "US" export KEY_PROVINCE = "CA" export KEY_CITY = "SanFrancisco" export KEY_ORG = "Fort-Funston" export KEY_EMAIL = "[email protected]" export KEY_OU = "MyOrganizationalUnit". . .
Замініть значення, виділені червоним, на що-небудь інше, не залишайте їх не заповненими:
~ / Openvpn-ca / vars
. . . export KEY_COUNTRY = "US" export KEY_PROVINCE = "NY" export KEY_CITY = "New York City" export KEY_ORG = "DigitalOcean" export KEY_EMAIL = "[email protected]" export KEY_OU = "Community". . .
Поки ми в цьому файлі, відредагуємо значення KEY_NAME трохи нижче, яке заповнює поле суб'єкта сертифікатів. Для простоти задамо йому назву server:
~ / Openvpn-ca / vars
export KEY_NAME = "server"
Збережіть і закрийте файл.
Крок 4. Створення центру сертифікації
Тепер ми можемо використовувати задані нами змінні і утиліти easy-rsa для створення центру сертифікації.
Переконайтеся, що ви перебуваєте в директорії центру сертифікації і використовуйте команду source до файлу vars:
- cd ~ / openvpn-ca
- source vars
Ви повинні побачити наступний висновок:
висновок
NOTE: If you run ./clean-all, I will be doing a rm -rf on / home / sammy / openvpn-ca / keys
Переконаємося, що ми працюємо в "чистому середовищі" виконавши наступну команду:
Тепер ми можемо створити наш кореневої центр сертифікації командою:
Ця команда запустить процес створення ключа і сертифіката кореневого центру сертифікації. Оскільки ми задали всі змінні у файлі vars, всі необхідні значення будуть введені автоматично. Натискайте ENTER для підтвердження вибору:
висновок
Generating a 2048 bit RSA private key ........................................... ............................................... +++ ............................... +++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', The field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [NY]: Locality Name (eg, city) [New York City]: Organization Name (eg, company) [DigitalOcean ]: Organizational Unit Name (eg, section) [Community]: Common Name (eg, your name or your server's hostname) [DigitalOcean CA]: Name [server]: Email Address [[email protected]]:
Тепер у нас є центр сертифікації, який ми зможемо використовувати для створення всіх інших необхідних нам файлів.
Крок 5. Створення сертифіката, ключа і файлів шифрування для сервера
Далі створимо сертифікат, пару ключів і деякі додаткові файли, які використовуються для здійснення шифрування, для нашого сервера.
Почнемо зі створення сертифіката OpenVPN і ключів для сервера. Це можна зробити за допомогою такої команди:
Увага: Якщо раніше ви вибрали ім'я, відмінне від server, вам доведеться трохи змінити деякі інструкції. Наприклад, при копіюванні створених файлів в директорію / etc / openvpn вам доведеться замінити імена на задані вами. Вам також доведеться змінити файл /etc/openvpn/server.conf для того, щоб він вказував на коректні .crt і .key файли.
- ./build-key-server server
Висновок знову буде містити значення за замовчуванням, передані цій команді (server), а також значення з файлу vars.
Погодьтеся з усіма значеннями за замовчуванням, натискаючи ENTER. Не ставте challenge password. В кінці процесу два рази введіть y для підпису і підтвердження створення сертифіката:
висновок
. . . Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate? [Y / n]: y 1 out of 1 certificate requests certified, commit? [Y / n] y Write out database with 1 new entries Data Base Updated
Далі створимо залишилися файли. Ми можемо згенерувати сильні ключі протоколу Діффі-Хеллмана, використовувані при обміні ключами, командою:
Для завершення цієї команди може знадобитися кілька хвилин.
Далі ми можемо згенерувати підпис HMAC для посилення здатності сервера перевіряти цілісність TSL:
- openvpn --genkey --secret keys / ta.key
Крок 6. Створення сертифіката і пари ключів для клієнта
Далі ми можемо згенерувати сертифікат і пару ключів для клієнта. Взагалі це можна зробити і на клієнтській машині і потім підписати отриманий ключ центром сертифікації сервера, але в цій статті для простоти ми сгенерируем підписаний ключ на сервері.
У цій статті ми створимо ключ і сертифікат тільки для одного клієнта. Якщо у вас кілька клієнтів, ви можете повторювати цей процес скільки завгодно разів. Просто кожен раз передавайте унікальне значення скрипту.
Оскільки ми можемо повернутися до цього кроку пізніше, ми повторимо команду source для файлу vars. Ми будемо використовувати параметр client1 для створення першого сертифікату та ключа.
Для створення файлів без пароля для полегшення автоматичних з'єднань використовуйте команду build-key:
- cd ~ / openvpn-ca
- source vars
- ./build-key client1
Для створення файлів, захищених паролем, використовуйте команду build-key-pass:
- cd ~ / openvpn-ca
- source vars
- ./build-key-pass client1
В ході процесу створення файлів все значення за замовчуванням будуть введені, ви можете натискати ENTER. Не ставте challenge password і введіть y на запити про підписи і підтвердження створення сертифіката.
Крок 7. Налаштування сервісу OpenVPN
Далі налаштуємо сервіс OpenVPN з використанням створених раніше файлів.
Копіювання файлів в директорію OpenVPN
Нам необхідно скопіювати потрібні нам файли в директорію / etc / openvpn.
Спочатку скопіюємо створені нами файли. Вони знаходяться в директорії ~ / openvpn-ca / keys, в якій вони і були створені. Нам потрібно створити сертифікат і ключ центру сертифікації, сертифікат і ключ сервера, підпис HMAC і файл Diffie-Hellman:
- cd ~ / openvpn-ca / keys
- sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem / etc / openvpn
Далі нам необхідно скопіювати і розпакувати файл-приклад конфігурації OpenVPN в конфігураційну директорію, ми будемо використовувати цей файл в якості бази для наших налаштувань:
- gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
Налаштування конфігурації OpenVPN
Тепер, коли наші файли знаходяться на своєму місці, займемося налаштуванням конфігураційного файлу сервера:
- sudo nano /etc/openvpn/server.conf
Базова настройка
Спочатку знайдемо секцію HMAC пошуком директиви tls-auth. Видаліть ";" для того, щоб розкоментувати рядок з tls-auth. Далі додайте параметр key-direction і встановіть його значення в "0":
/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret key-direction 0
Далі знайдемо секцію шифрування, нас цікавлять закоментовані рядки cipher. Шифр AES-128-CBC забезпечує хороший рівень шифрування і широко підтримується іншими програмними продуктами. Видаліть ";" для раскомментірованія рядки AES-128-CBC:
/etc/openvpn/server.conf
cipher AES-128-CBC
Під цим рядком додайте рядок auth і виберіть алгоритм HMAC. Хорошим вибором буде SHA256:
/etc/openvpn/server.conf
auth SHA256
Нарешті, знайдіть налаштування user і group і видаліть ";" для раскомментірованія цих рядків:
/etc/openvpn/server.conf
user nobody group nogroup
(За бажанням) Проштовхування змін DNS для перенаправлення всього трафіку через VPN
Зроблені нами настройки створюють VPN з'єднання між двома машинами, але вони не змушують ці машини використовувати VPN з'єднання. Якщо ви хочете використовувати VPN з'єднання для всього свого трафіку, вам необхідно проштовхнути (push) настройки DNS на клієнтські машини.
Для цього вам необхідно розкоментувати кілька директив. Знайдіть секцію redirect-gateway і видаліть ";" з початку рядка для расскоментірованія redirect-gateway:
/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"
Трохи нижче знаходиться секція dhcp-option. Видаліть ";" для обох рядків:
/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
Це дозволить клієнтам конфігурувати свої настройки DNS для використання VPN з'єднання в якості основного.
(За бажанням) Налаштування порту і протоколу
За замовчуванням OpenVPN використовує порт 1194 і протокол UDP для з'єднання з клієнтами. Якщо вам необхідно змінити порт через будь-яких обмежень для ваших клієнтів, ви можете зробити це змінивши налаштування port. Якщо ви не хостів веб-контент на вашому OpenVPN сервері, ви можете використовувати порт 443, оскільки цей порт зазвичай дозволений для використання в більшості файрволов.
/etc/openvpn/server.conf
# Optional! port 443
Використовуваний протокол може мати обмеження по номеру порту. В цьому випадку змініть proto з UDP на TCP:
/etc/openvpn/server.conf
# Optional! proto tcp
Якщо у вас немає явної необхідності використовувати інший порт, краще залишити обидві ці настройки зі значеннями за замовчуванням.
(За бажанням) Використання кастомними імені сертифіката і ключа
Якщо під час використання команди ./build-key-server трохи вище ви вказали параметр, відмінний від server, поміняйте налаштування cert і key, щоб вони вказували на правильні файли .crt і .key. Якщо ви використовували server, ці настройки повинні виглядати таким чином:
/etc/openvpn/server.conf
cert server .crt key server .key
Збережіть і закрийте файл.
Крок 8. Налаштування мережевої конфігурації сервера
Далі нам необхідно налаштувати мережеву конфігурацію сервера, щоб OpenVPN міг коректно перенаправляти трафік.
Налаштування перенаправлення IP
Спочатку вирішимо сервера перенаправляти трафік. Це ключова функціональність нашого VPN сервера.
Налаштуємо це в файлі /etc/sysctl.conf:
- sudo nano /etc/sysctl.conf
Знайдіть рядок настройки net.ipv4.ip_forward. Видаліть "#" з початку рядка, щоб розкоментувати її:
/etc/sysctl.conf
net.ipv4.ip_forward = 1
Збережіть і закрийте файл.
Для застосування налаштувань до поточної сесії наберіть команду:
Налаштування правил UFW для приховування з'єднань клієнтів
Якщо ви слідували статті про налаштування Ubuntu 16.04, згаданої на початку цієї статті, у вас повинен бути встановлений і налаштований файрвол UFW. Незалежно від того, чи використовуєте ви файрвол для блокування небажаного трафіку (що вам варто робити практично завжди), в цій статті нам буде потрібно файрвол для маніпулювання з вхідним на сервер трафіком. Ми повинні змінити файл налаштувань для приховування з'єднань (masquerading).
Перед тим, як змінити цей файл, ми повинні знайти публічний інтерфейс мережі (public network interface). Для цього наберіть команду:
Публічний інтерфейс повинен слідувати за словом "dev". Наприклад, в нашому випадку цей інтерфейс називається wlp11s0:
висновок
default via 203.0.113.1 dev wlp11s0 proto static metric 600
Знаючи назву інтерфейсу відкриємо файл /etc/ufw/before.rules і додамо туди відповідні налаштування:
- sudo nano /etc/ufw/before.rules
Це файл містить настройки UFW, яке застосовуються перед застосуванням правил UFW. Додайте в початок файлу виділені червоним рядки. Це налаштує правила, що застосовуються за замовчуванням, до ланцюжку POSTROUTING в таблиці nat і буде приховувати весь трафік від VPN:
Увага: не забудьте замінити eth0 в рядку -A POSTROUTING на ім'я інтерфейсу, що знайшли ми раніше.
/etc/ufw/before.rules
# # Rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules * nat: POSTROUTING ACCEPT [0: 0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES # Do not delete these required lines, otherwise there will be errors * filter. . .
Збережіть і закрийте файл.
Тепер ми повинні повідомити UFW, що йому за замовчуванням необхідно вирішувати переслані пакети. Для цього відкрийте файл / etc / default / ufw:
- sudo nano / etc / default / ufw
Знайдіть у файлі директиву DEFAULT_FORWARD_POLICY. Ми змінимо значення з DROP на ACCEPT:
/ Etc / default / ufw
DEFAULT_FORWARD_POLICY = "ACCEPT"
Збережіть і закрийте файл.
Відкриття порту OpenVPN і застосування змін
Далі налаштуємо сам файрвол для дозволу трафіку в OpenVPN.
Якщо ви не змінювали порт і протокол в файлі /etc/openvpn/server.conf, вам необхідно дозволити трафік UDP для порту 1194. Якщо ви змінили ці настройки, введіть зазначені вами значення.
Навіть ми додамо порт SSH на випадок, якщо ви не зробили цього раніше.
- sudo ufw allow 1194 / udp
- sudo ufw allow OpenSSH
Тепер деактивувавши і активуємо UFW для застосування внесених змін:
- sudo ufw disable
- sudo ufw enable
Тепер наш сервер налаштований для обробки трафіку OpenVPN.
Крок 9. Включення сервісу OpenVPN
Ми готові включить сервіс OpenVPN на нашому сервері. Ми можемо зробити це за допомогою systemd.
Нам необхідно запустити сервер OpenVPN вказавши ім'я нашого файлу конфігурації в якості змінної після імені файлу systemd. Файл конфігурації для нашого сервера називається / etc / openvpn / server .conf, тому ми додамо @server в кінець імені файлу при його виклику:
- sudo systemctl start openvpn @ server
Переконаємося, що сервіс успішно запущений командою:
- sudo systemctl status openvpn @ server
Якщо все вийшло, висновок повинен виглядати приблизно так:
висновок
● [email protected] - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (running) since Tue 2016-05-03 15:30 : 05 EDT; 47s ago Docs: man: openvpn (8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 5852 ExecStart = / usr / sbin / openvpn --daemon ovpn-% i --status /run/openvpn/%i.status 10 --cd / etc / openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid / run / openvpn /% i.pid (code = exited, sta Main PID: 5856 (openvpn) Tasks: 1 (limit: 512) CGroup: /system.slice/system-openvpn.slice/[email protected] └─5856 / usr / sbin / openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd / etc / openvpn --script-security 2 --config /etc/openvpn/server.conf - writepid /run/openvpn/server.pid May 03 15:30:05 openvpn2 ovpn-server [5856]: / sbin / ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 May 03 15:30:05 openvpn2 ovpn- server [5856]: / sbin / ip route add 10.8.0.0/24 via 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server [5856]: GID set to nogroup May 03 15:30:05 openvpn2 ovpn-server [5856]: UID set to nobody May 03 15:30:05 openvpn2 ovpn -server [5856]: UDPv4 link local (bound): [undef] May 03 15:30:05 openvpn2 ovpn-server [5856]: UDPv4 link remote: [undef] May 03 15:30:05 openvpn2 ovpn-server [ 5856]: MULTI: multi_init called, r = 256 v = 256 May 03 15:30:05 openvpn2 ovpn-server [5856]: IFCONFIG POOL: base = 10.8.0.4 size = 62, ipv6 = 0 May 03 15:30: 05 openvpn2 ovpn-server [5856]: IFCONFIG POOL LIST May 03 15:30:05 openvpn2 ovpn-server [5856]: Initialization Sequence Completed
Ви також можете перевірити доступність інтерфейсу OpenVPN tun0 наступною командою:
Ви повинні побачити конфігурацію інтерфейсу:
висновок
4: tun0: <POINTOPOINT, MULTICAST, NOARP, UP, LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link / none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever
Якщо все в порядку, настроєм сервіс на автоматичне включення при завантаженні сервера:
- sudo systemctl enable openvpn @ server
Крок 10. Створення інфраструктури настройки клієнтів
Далі налаштуємо систему для простого створення файлів конфігурації для клієнтів.
Створення структури директорій конфігурації клієнтів
В домашній директорії створіть структуру директорій для зберігання файлів:
- mkdir -p ~ / client-configs / files
Оскільки наші файли конфігурації будуть містити клієнтські ключі, ми повинні налаштувати права доступу для створених директорій:
- chmod 700 ~ / client-configs / files
Створення базової конфігурації
Далі скопіюємо конфігурацію-приклад в нашу директорію для використання в якості нашої базовій конфігурації:
- cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~ / client-configs / base.conf
Відкрийте цей файл у текстовому редакторі:
- nano ~ / client-configs / base.conf
Зробимо кілька змін в цьому файлі.
Спочатку знайдіть директиву remote. Ця директива повідомляє клієнту адресу нашого сервера OpenVPN. Це повинен бути публічний IP адреса вашого сервера OpenVPN. Якщо ви змінили порт, який слухає сервер OpenVPN, змініть порт за замовчуванням 1194 на ваше значення:
~ / Client-configs / base.conf
. . . # The hostname / IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote server_IP_address 1194. . .
Переконайтеся, що протокол збігається з настройками сервера:
~ / Client-configs / base.conf
proto udp
Далі розкоментуйте директиви user і group видаляючи ";":
~ / Client-configs / base.conf
# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup
Знайдіть директиви ca, cert і key. Закоментуйте ці директиви, так як ми будемо додавати сертифікати і ключі в самому файлі:
~ / Client-configs / base.conf
Як налаштувати сервер OpenVPN в Ubuntu 16.04
Вступ
Хочете мати безпечний і захищений доступ в Інтернет з вашого смартфона або ноутбука при підключенні до незахищеної мережі через WiFi готелю або кафе? Віртуальна приватна мережа (Virtual Private Network, VPN) дозволяє використовувати незахищені мережі таким чином, як якщо б ви працювали в приватній мережі. Весь ваш трафік в цьому випадку проходить через VPN-сервер.
У комбінації з використанням HTTPS-з'єднання описувані далі настройки дозволять вам убезпечити свою приватну інформацію, наприклад, логіни і паролі, а також ваші покупки. Більш того, ви зможете обходити регіональні обмеження і цензуру, а також приховувати своє місцезнаходження і незашифрований HTTP-трафік від незахищеною мережі.
OpenVPN являє собою потужний і гнучко настроюється програмне забезпечення з відкритим вихідним кодом для роботи з Secure Socket Layer (SSL) VPN. У цій статті ми встановимо і налаштуємо OpenVPN сервер, а також навчимося здійснювати до нього доступ з Windows, Mac OS, iOS і Android. Для цього ми виконаємо кілька простих кроків.
Необхідні умови
Перш за все вам необхідно мати сервер з Ubuntu 16.04.
Перед тим, як почати слідувати інструкції, наведені в цій статті, вам необхідно налаштувати окремий, чи не-рутовий (non-root) профіль користувача з привілеями sudo на вашому сервері. Ви можете зробити це згідно з інструкціями, описаним в статті про первинну налаштування сервера на Ubuntu 16.04 . У цій же статті описаний процес налаштування файрвола; далі ми будемо вважати, що файрвол налаштований на вашому сервері.
Коли ви будете готові почати, зайдіть на ваш сервер під створеним вами sudo-користувачем і виконуйте інструкції, наведені нижче.
Крок 1. Встановлення OpenVPN
Спочатку встановимо OpenVPN на наш сервер. OpenVPN доступний в стандартних репозиторіях Ubuntu, ми можемо використовувати apt для його установки. Також ми встановимо пакет easy-rsa, який дозволить нам налаштувати наш власний внутрішній центр сертифікації (certificate authority, CA) для використання з нашої VPN.
Оновимо список пакетів сервера і встановимо необхідні пакети наступними командами:
- sudo apt-get update
- sudo apt-get install openvpn easy-rsa
Необхідне програмне забезпечення встановлено і готове до налаштування.
Крок 2. Створення директорії центру сертифікації
OpenVPN це віртуальна приватна мережа, що використовує TLS / SSL. Це означає, що OpenVPN використовує сертифікати для шифрування трафіку між сервером і клієнтами. Для випуску довірених сертифікатів (trusted certificates) нам буде потрібно створити наш власний центр сертифікації.
Для початку скопіюємо шаблонну директорію easy-rsa в нашу домашню директорію за допомогою команди make-cadir:
Далі зайдемо в цю директорію для початку налаштування ЦС:
Крок 3. Налаштування змінних центру сертифікації
Для настройки змінних нашого центру сертифікації нам необхідно відредагувати файл vars. Відкрийте цей файл у текстовому редакторі:
Всередині файлу ви знайдете змінні, які можна відредагувати, і які задають параметри сертифікатів при їх створенні. Нам потрібно змінити лише кілька змінних.
Перейдіть ближче до кінця файлу і знайдіть налаштування полів, які використовуються за замовчуванням при створенні сертифікатів. Вони повинні виглядати приблизно так:
~ / Openvpn-ca / vars
. . . export KEY_COUNTRY = "US" export KEY_PROVINCE = "CA" export KEY_CITY = "SanFrancisco" export KEY_ORG = "Fort-Funston" export KEY_EMAIL = "[email protected]" export KEY_OU = "MyOrganizationalUnit". . .
Замініть значення, виділені червоним, на що-небудь інше, не залишайте їх не заповненими:
~ / Openvpn-ca / vars
. . . export KEY_COUNTRY = "US" export KEY_PROVINCE = "NY" export KEY_CITY = "New York City" export KEY_ORG = "DigitalOcean" export KEY_EMAIL = "[email protected]" export KEY_OU = "Community". . .
Поки ми в цьому файлі, відредагуємо значення KEY_NAME трохи нижче, яке заповнює поле суб'єкта сертифікатів. Для простоти задамо йому назву server:
~ / Openvpn-ca / vars
export KEY_NAME = "server"
Збережіть і закрийте файл.
Крок 4. Створення центру сертифікації
Тепер ми можемо використовувати задані нами змінні і утиліти easy-rsa для створення центру сертифікації.
Переконайтеся, що ви перебуваєте в директорії центру сертифікації і використовуйте команду source до файлу vars:
- cd ~ / openvpn-ca
- source vars
Ви повинні побачити наступний висновок:
висновок
NOTE: If you run ./clean-all, I will be doing a rm -rf on / home / sammy / openvpn-ca / keys
Переконаємося, що ми працюємо в "чистому середовищі" виконавши наступну команду:
Тепер ми можемо створити наш кореневої центр сертифікації командою:
Ця команда запустить процес створення ключа і сертифіката кореневого центру сертифікації. Оскільки ми задали всі змінні у файлі vars, всі необхідні значення будуть введені автоматично. Натискайте ENTER для підтвердження вибору:
висновок
Generating a 2048 bit RSA private key ........................................... ............................................... +++ ............................... +++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', The field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [NY]: Locality Name (eg, city) [New York City]: Organization Name (eg, company) [DigitalOcean ]: Organizational Unit Name (eg, section) [Community]: Common Name (eg, your name or your server's hostname) [DigitalOcean CA]: Name [server]: Email Address [[email protected]]:
Тепер у нас є центр сертифікації, який ми зможемо використовувати для створення всіх інших необхідних нам файлів.
Крок 5. Створення сертифіката, ключа і файлів шифрування для сервера
Далі створимо сертифікат, пару ключів і деякі додаткові файли, які використовуються для здійснення шифрування, для нашого сервера.
Почнемо зі створення сертифіката OpenVPN і ключів для сервера. Це можна зробити за допомогою такої команди:
Увага: Якщо раніше ви вибрали ім'я, відмінне від server, вам доведеться трохи змінити деякі інструкції. Наприклад, при копіюванні створених файлів в директорію / etc / openvpn вам доведеться замінити імена на задані вами. Вам також доведеться змінити файл /etc/openvpn/server.conf для того, щоб він вказував на коректні .crt і .key файли.
- ./build-key-server server
Висновок знову буде містити значення за замовчуванням, передані цій команді (server), а також значення з файлу vars.
Погодьтеся з усіма значеннями за замовчуванням, натискаючи ENTER. Не ставте challenge password. В кінці процесу два рази введіть y для підпису і підтвердження створення сертифіката:
висновок
. . . Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate? [Y / n]: y 1 out of 1 certificate requests certified, commit? [Y / n] y Write out database with 1 new entries Data Base Updated
Далі створимо залишилися файли. Ми можемо згенерувати сильні ключі протоколу Діффі-Хеллмана, використовувані при обміні ключами, командою:
Для завершення цієї команди може знадобитися кілька хвилин.
Далі ми можемо згенерувати підпис HMAC для посилення здатності сервера перевіряти цілісність TSL:
- openvpn --genkey --secret keys / ta.key
Крок 6. Створення сертифіката і пари ключів для клієнта
Далі ми можемо згенерувати сертифікат і пару ключів для клієнта. Взагалі це можна зробити і на клієнтській машині і потім підписати отриманий ключ центром сертифікації сервера, але в цій статті для простоти ми сгенерируем підписаний ключ на сервері.
У цій статті ми створимо ключ і сертифікат тільки для одного клієнта. Якщо у вас кілька клієнтів, ви можете повторювати цей процес скільки завгодно разів. Просто кожен раз передавайте унікальне значення скрипту.
Оскільки ми можемо повернутися до цього кроку пізніше, ми повторимо команду source для файлу vars. Ми будемо використовувати параметр client1 для створення першого сертифікату та ключа.
Для створення файлів без пароля для полегшення автоматичних з'єднань використовуйте команду build-key:
- cd ~ / openvpn-ca
- source vars
- ./build-key client1
Для створення файлів, захищених паролем, використовуйте команду build-key-pass:
- cd ~ / openvpn-ca
- source vars
- ./build-key-pass client1
В ході процесу створення файлів все значення за замовчуванням будуть введені, ви можете натискати ENTER. Не ставте challenge password і введіть y на запити про підписи і підтвердження створення сертифіката.
Крок 7. Налаштування сервісу OpenVPN
Далі налаштуємо сервіс OpenVPN з використанням створених раніше файлів.
Копіювання файлів в директорію OpenVPN
Нам необхідно скопіювати потрібні нам файли в директорію / etc / openvpn.
Спочатку скопіюємо створені нами файли. Вони знаходяться в директорії ~ / openvpn-ca / keys, в якій вони і були створені. Нам потрібно створити сертифікат і ключ центру сертифікації, сертифікат і ключ сервера, підпис HMAC і файл Diffie-Hellman:
- cd ~ / openvpn-ca / keys
- sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem / etc / openvpn
Далі нам необхідно скопіювати і розпакувати файл-приклад конфігурації OpenVPN в конфігураційну директорію, ми будемо використовувати цей файл в якості бази для наших налаштувань:
- gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
Налаштування конфігурації OpenVPN
Тепер, коли наші файли знаходяться на своєму місці, займемося налаштуванням конфігураційного файлу сервера:
- sudo nano /etc/openvpn/server.conf
Базова настройка
Спочатку знайдемо секцію HMAC пошуком директиви tls-auth. Видаліть ";" для того, щоб розкоментувати рядок з tls-auth. Далі додайте параметр key-direction і встановіть його значення в "0":
/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret key-direction 0
Далі знайдемо секцію шифрування, нас цікавлять закоментовані рядки cipher. Шифр AES-128-CBC забезпечує хороший рівень шифрування і широко підтримується іншими програмними продуктами. Видаліть ";" для раскомментірованія рядки AES-128-CBC:
/etc/openvpn/server.conf
cipher AES-128-CBC
Під цим рядком додайте рядок auth і виберіть алгоритм HMAC. Хорошим вибором буде SHA256:
/etc/openvpn/server.conf
auth SHA256
Нарешті, знайдіть налаштування user і group і видаліть ";" для раскомментірованія цих рядків:
/etc/openvpn/server.conf
user nobody group nogroup
(За бажанням) Проштовхування змін DNS для перенаправлення всього трафіку через VPN
Зроблені нами настройки створюють VPN з'єднання між двома машинами, але вони не змушують ці машини використовувати VPN з'єднання. Якщо ви хочете використовувати VPN з'єднання для всього свого трафіку, вам необхідно проштовхнути (push) настройки DNS на клієнтські машини.
Для цього вам необхідно розкоментувати кілька директив. Знайдіть секцію redirect-gateway і видаліть ";" з початку рядка для расскоментірованія redirect-gateway:
/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"
Трохи нижче знаходиться секція dhcp-option. Видаліть ";" для обох рядків:
/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
Це дозволить клієнтам конфігурувати свої настройки DNS для використання VPN з'єднання в якості основного.
(За бажанням) Налаштування порту і протоколу
За замовчуванням OpenVPN використовує порт 1194 і протокол UDP для з'єднання з клієнтами. Якщо вам необхідно змінити порт через будь-яких обмежень для ваших клієнтів, ви можете зробити це змінивши налаштування port. Якщо ви не хостів веб-контент на вашому OpenVPN сервері, ви можете використовувати порт 443, оскільки цей порт зазвичай дозволений для використання в більшості файрволов.
/etc/openvpn/server.conf
# Optional! port 443
Використовуваний протокол може мати обмеження по номеру порту. В цьому випадку змініть proto з UDP на TCP:
/etc/openvpn/server.conf
# Optional! proto tcp
Якщо у вас немає явної необхідності використовувати інший порт, краще залишити обидві ці настройки зі значеннями за замовчуванням.
(За бажанням) Використання кастомними імені сертифіката і ключа
Якщо під час використання команди ./build-key-server трохи вище ви вказали параметр, відмінний від server, поміняйте налаштування cert і key, щоб вони вказували на правильні файли .crt і .key. Якщо ви використовували server, ці настройки повинні виглядати таким чином:
/etc/openvpn/server.conf
cert server .crt key server .key
Збережіть і закрийте файл.
Крок 8. Налаштування мережевої конфігурації сервера
Далі нам необхідно налаштувати мережеву конфігурацію сервера, щоб OpenVPN міг коректно перенаправляти трафік.
Налаштування перенаправлення IP
Спочатку вирішимо сервера перенаправляти трафік. Це ключова функціональність нашого VPN сервера.
Налаштуємо це в файлі /etc/sysctl.conf:
- sudo nano /etc/sysctl.conf
Знайдіть рядок настройки net.ipv4.ip_forward. Видаліть "#" з початку рядка, щоб розкоментувати її:
/etc/sysctl.conf
net.ipv4.ip_forward = 1
Збережіть і закрийте файл.
Для застосування налаштувань до поточної сесії наберіть команду:
Налаштування правил UFW для приховування з'єднань клієнтів
Якщо ви слідували статті про налаштування Ubuntu 16.04, згаданої на початку цієї статті, у вас повинен бути встановлений і налаштований файрвол UFW. Незалежно від того, чи використовуєте ви файрвол для блокування небажаного трафіку (що вам варто робити практично завжди), в цій статті нам буде потрібно файрвол для маніпулювання з вхідним на сервер трафіком. Ми повинні змінити файл налаштувань для приховування з'єднань (masquerading).
Перед тим, як змінити цей файл, ми повинні знайти публічний інтерфейс мережі (public network interface). Для цього наберіть команду:
Публічний інтерфейс повинен слідувати за словом "dev". Наприклад, в нашому випадку цей інтерфейс називається wlp11s0:
висновок
default via 203.0.113.1 dev wlp11s0 proto static metric 600
Знаючи назву інтерфейсу відкриємо файл /etc/ufw/before.rules і додамо туди відповідні налаштування:
- sudo nano /etc/ufw/before.rules
Це файл містить настройки UFW, яке застосовуються перед застосуванням правил UFW. Додайте в початок файлу виділені червоним рядки. Це налаштує правила, що застосовуються за замовчуванням, до ланцюжку POSTROUTING в таблиці nat і буде приховувати весь трафік від VPN:
Увага: не забудьте замінити eth0 в рядку -A POSTROUTING на ім'я інтерфейсу, що знайшли ми раніше.
/etc/ufw/before.rules
# # Rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules * nat: POSTROUTING ACCEPT [0: 0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES # Do not delete these required lines, otherwise there will be errors * filter. . .
Збережіть і закрийте файл.
Тепер ми повинні повідомити UFW, що йому за замовчуванням необхідно вирішувати переслані пакети. Для цього відкрийте файл / etc / default / ufw:
- sudo nano / etc / default / ufw
Знайдіть у файлі директиву DEFAULT_FORWARD_POLICY. Ми змінимо значення з DROP на ACCEPT:
/ Etc / default / ufw
DEFAULT_FORWARD_POLICY = "ACCEPT"
Збережіть і закрийте файл.
Відкриття порту OpenVPN і застосування змін
Далі налаштуємо сам файрвол для дозволу трафіку в OpenVPN.
Якщо ви не змінювали порт і протокол в файлі /etc/openvpn/server.conf, вам необхідно дозволити трафік UDP для порту 1194. Якщо ви змінили ці настройки, введіть зазначені вами значення.
Навіть ми додамо порт SSH на випадок, якщо ви не зробили цього раніше.
- sudo ufw allow 1194 / udp
- sudo ufw allow OpenSSH
Тепер деактивувавши і активуємо UFW для застосування внесених змін:
- sudo ufw disable
- sudo ufw enable
Тепер наш сервер налаштований для обробки трафіку OpenVPN.
Крок 9. Включення сервісу OpenVPN
Ми готові включить сервіс OpenVPN на нашому сервері. Ми можемо зробити це за допомогою systemd.
Нам необхідно запустити сервер OpenVPN вказавши ім'я нашого файлу конфігурації в якості змінної після імені файлу systemd. Файл конфігурації для нашого сервера називається / etc / openvpn / server .conf, тому ми додамо @server в кінець імені файлу при його виклику:
- sudo systemctl start openvpn @ server
Переконаємося, що сервіс успішно запущений командою:
- sudo systemctl status openvpn @ server
Якщо все вийшло, висновок повинен виглядати приблизно так:
висновок
● [email protected] - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (running) since Tue 2016-05-03 15:30 : 05 EDT; 47s ago Docs: man: openvpn (8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 5852 ExecStart = / usr / sbin / openvpn --daemon ovpn-% i --status /run/openvpn/%i.status 10 --cd / etc / openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid / run / openvpn /% i.pid (code = exited, sta Main PID: 5856 (openvpn) Tasks: 1 (limit: 512) CGroup: /system.slice/system-openvpn.slice/[email protected] └─5856 / usr / sbin / openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd / etc / openvpn --script-security 2 --config /etc/openvpn/server.conf - writepid /run/openvpn/server.pid May 03 15:30:05 openvpn2 ovpn-server [5856]: / sbin / ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 May 03 15:30:05 openvpn2 ovpn- server [5856]: / sbin / ip route add 10.8.0.0/24 via 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server [5856]: GID set to nogroup May 03 15:30:05 openvpn2 ovpn-server [5856]: UID set to nobody May 03 15:30:05 openvpn2 ovpn -server [5856]: UDPv4 link local (bound): [undef] May 03 15:30:05 openvpn2 ovpn-server [5856]: UDPv4 link remote: [undef] May 03 15:30:05 openvpn2 ovpn-server [ 5856]: MULTI: multi_init called, r = 256 v = 256 May 03 15:30:05 openvpn2 ovpn-server [5856]: IFCONFIG POOL: base = 10.8.0.4 size = 62, ipv6 = 0 May 03 15:30: 05 openvpn2 ovpn-server [5856]: IFCONFIG POOL LIST May 03 15:30:05 openvpn2 ovpn-server [5856]: Initialization Sequence Completed
Ви також можете перевірити доступність інтерфейсу OpenVPN tun0 наступною командою:
Ви повинні побачити конфігурацію інтерфейсу:
висновок
4: tun0: <POINTOPOINT, MULTICAST, NOARP, UP, LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link / none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever
Якщо все в порядку, настроєм сервіс на автоматичне включення при завантаженні сервера:
- sudo systemctl enable openvpn @ server
Крок 10. Створення інфраструктури настройки клієнтів
Далі налаштуємо систему для простого створення файлів конфігурації для клієнтів.
Створення структури директорій конфігурації клієнтів
В домашній директорії створіть структуру директорій для зберігання файлів:
- mkdir -p ~ / client-configs / files
Оскільки наші файли конфігурації будуть містити клієнтські ключі, ми повинні налаштувати права доступу для створених директорій:
- chmod 700 ~ / client-configs / files
Створення базової конфігурації
Далі скопіюємо конфігурацію-приклад в нашу директорію для використання в якості нашої базовій конфігурації:
- cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~ / client-configs / base.conf
Відкрийте цей файл у текстовому редакторі:
- nano ~ / client-configs / base.conf
Зробимо кілька змін в цьому файлі.
Спочатку знайдіть директиву remote. Ця директива повідомляє клієнту адресу нашого сервера OpenVPN. Це повинен бути публічний IP адреса вашого сервера OpenVPN. Якщо ви змінили порт, який слухає сервер OpenVPN, змініть порт за замовчуванням 1194 на ваше значення:
~ / Client-configs / base.conf
. . . # The hostname / IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote server_IP_address 1194. . .
Переконайтеся, що протокол збігається з настройками сервера:
~ / Client-configs / base.conf
proto udp
Далі розкоментуйте директиви user і group видаляючи ";":
~ / Client-configs / base.conf
# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup
Знайдіть директиви ca, cert і key. Закоментуйте ці директиви, так як ми будемо додавати сертифікати і ключі в самому файлі:
~ / Client-configs / base.conf
# SSL / TLS parms. # See the server config file for more # description. It's best to use # a separate .crt / .key file pair # for each client. A single ca # file can be used for all clients. # Ca ca.crt # cert client.crt # key client.key
Додайте налаштування cipher і auth згідно із заданими у файлі /etc/openvpn/server.conf:
~ / Client-configs / base.conf
cipher AES-128-CBC auth SHA256
Далі додайте директиву key-direction в будь-яке місце в файлі. Вона повинна мати значення "1" для коректної роботи сервера:
~ / Client-configs / base.conf
key-direction 1
Нарешті, додайте кілька закоментувавши рядків. Ми ходимо додати ці рядки в кожен файл конфігурації, але вони будуть включені тільки для клієнтів на Linux, які використовують файл / etc / openvpn / update-resolv-conf. Цей скрипт використовує утиліту resolvconf для оновлення інформації DNS на клієнтах Linux.
~ / Client-configs / base.conf
# Script-security 2 # up / etc / openvpn / update-resolv-conf # down / etc / openvpn / update-resolv-conf
Якщо ваш клієнт працює на Linux і використовує файл / etc / openvpn / update-resolv-conf, ви повинні розкоментувати ці рядки в створеному клієнтському файлі конфігурації OpenVPN.
Збережіть и закрійте файл.
Створення скрипта генерації файлів конфігурації
Тепер створимо простий скрипт для генерації файлів конфігурації з релевантними сертифікатами, ключами і файлами шифрування. Він буде поміщати згенеровані файлу конфігурації в директорію ~ / client-configs / files.
Створіть і відкрийте файл make_config.sh всередині директорії ~ / client-configs:
- nano ~ / client-configs / make_config.sh
Вставте наступні текст в цей файл:
~ / Client-configs / make_config.sh
#! / Bin / bash # First argument: Client identifier KEY_DIR = ~ / openvpn-ca / keys OUTPUT_DIR = ~ / client-configs / files BASE_CONFIG = ~ / client-configs / base.conf cat $ {BASE_CONFIG} \ <(echo -e '<ca>') \ $ {KEY_DIR} /ca.crt \ <(echo -e '</ ca> \ n <cert>') \ $ {KEY_DIR} / $ {1} .crt \ <( echo -e '</ cert> \ n <key>') \ $ {KEY_DIR} / $ {1} .key \ <(echo -e '</ key> \ n <tls-auth>') \ $ { KEY_DIR} /ta.key \ <(echo -e '</ tls-auth>') \> $ {OUTPUT_DIR} / $ {1} .ovpn
Збережіть и закрійте файл.
Зробіть його виконуваним файлом командою:
- chmod 700 ~ / client-configs / make_config.sh
Крок 11. Генерація конфігурацій клієнтів
Тепер ми можемо легко згенерувати файли конфігурації клієнтів.
Якщо ви дотримувалися всіх кроків цієї статті, ви створили сертифікат client1.crt і ключ клієнта client1.key командою ./build-key client1 на кроці 6. Ви можете згенерувати конфігурацію для цих файлів перейшовши в директорію ~ / client-configs і використовуючи тільки що створений нами скрипт:
- cd ~ / client-configs
- ./make_config.sh client1
Якщо все пройшло успішно, ми повинні отримати файл client1.ovpn в директорії ~ / client-configs / files:
- ls ~ / client-configs / files
Висновок
client1.ovpn
Доставка конфігурацій клієнтам
Тепер ми повинні перемістити файл конфігурації на клієнтський пристрій. Наприклад, на комп'ютер або смартфон.
Спосіб доставки файлу залежить від операційної системи вашого пристрою і програмного забезпечення, яке ви захочете використовувати для переміщення файлу. Ми рекомендуємо передавати файл по захищеному з'єднанню, наприклад, з використанням SFTP або SCP.
Нижче ми наводимо приклад передачі файлу client1.ovpn з використанням SFTP. Наступну команду можна використовувати на вашому локальному комп'ютері під керуванням Mac OS або Linux. Вона переміщує файл .ovpn в вашу домашню директорію:
- sftp sammy @ openvpn_server_ip: client-configs / files / client1.ovpn ~ /
Нижче представлено кілька посилань на інструменти та статті про безпечне перенесення файлів з сервера на локальний комп'ютер:
Крок 12. Встановлення файлів конфігурацій клієнтів
Тепер ми поговоримо про те, як встановлювати клієнтські профілі VPN на Windows, Mac OS, iOS і Android. Процес установки унікальний для кожної платформи, тому пропускайте платформи, які ви не плануєте використовувати.
Назва з'єднання OpenVPN залежить від того, як ви називали свій .ovpn файл. У нашому прикладі це буде client1.ovpn.
Windows
установка
Ви можете завантажити клієнт для роботи з OpenVPN для Windows зі сторінки завантажень OpenVPN . Виберіть необхідну вам версію програми.
Увага: установка OpenVPN вимагає адміністраторській облікового запису.
Після установки OpenVPN скопіюйте ваш .ovpn файл в цю директорію:
C: \ Program Files \ OpenVPN \ config
Запустіть OpenVPN, клієнт повинен автоматично побачити ваш профіль.
Клієнт OpenVPN вимагає запуску з правами адміністратора навіть для акаунтів адміністратора. Для запуску зробіть клацання правою кнопкою миші на клієнті і виберіть Run as administrator кожен раз при запуску клієнта. Це також означає, що звичайні користувачі повинні будуть вводити пароль адміністратора для використання OpenVPN.
Для того, щоб додаток OpenVPN завжди запускалося з правами адміністратора, зробіть клацання правою кнопкою миші на іконці клієнта і перейдіть в розділ Properties. У нижній частині вкладки Compatibility натисніть на кнопку Change settings for all users. У вікні, виберіть Run this program as an administrator.
з'єднання
Кожен раз при запуску клієнта OpenVPN Windows буде питати, чи хочете ви дозволити програмі внести зміни в налаштування вашого комп'ютера. Натісніть Так. Запуск клієнта OpenVPN просто поміщає додаток в системний трей, при цьому саме з'єднання не встановлюється автоматично.
Для установки з'єднання зробіть клацання правою кнопкою миші на іконці OpenVPN в системному треї. У контекстному меню виберіть client1 (це наш профіль client1.ovpn) і натисніть Connect.
Відкриється вікно статусу, яке буде відображати лог з'єднання. Коли буде припинено з'єднання ви побачите відповідне повідомлення.
Закрити VPN з'єднання можна точно так же: зробіть клацання правою кнопкою миші на іконці OpenVPN в системному треї, виберіть профіль клієнта і натисніть Disconnect.
Mac OS
установка
Tunnelblick - це безкоштовний OpenVPN клієнт для Mac OS з відкритим вихідним кодом. Ви можете завантажити його з сторінки завантажень Tunnelblick . Зробіть подвійне клацання на завантаженому .dmg файлі і виконуйте вказівки в процесі установки.
В кінці процесу установки Tunnelblick запитає, чи є у вас конфігураційні файли. Найпростіше відповісти No і завершити установку Tunnelblick. Відкрийте Finder і зробіть подвійне клацання на client1.ovpn. Tunnelblick встановить клієнтський профіль. Для цього необхідно мати права адміністратора.
з'єднання
Запустіть Tunnelblick подвійним клацанням з папки Applications. Після запуску в панелі меню в правій верхній частині екрану з'явиться іконка Tunnelblick. Для установки з'єднання натисніть на іконку, а потім Connect. Далі виберіть з'єднання client1.
Linux
установка
Залежно від використовуваної вами версії Linux, ви можете використовувати найрізноманітніші програми для установки з'єднання. Можливо, це вміє робити навіть ваш менеджер вікон.
Найбільш універсальним способом установки з'єднання, тим не менш, є програмне забезпечення OpenVPN.
В Ubuntu або Debian ви можете встановити його точно так само, як і на сервері:
- sudo apt-get update
- sudo apt-get install openvpn
У CentOS ви можете активувати EPEL репозиторії і потім ввести наступні команди:
- sudo yum install epel-release
- sudo yum install openvpn
налаштування
Спочатку перевірте, чи містить ваш дистрибутив скрипт / etc / openvpn / update-resolv-conf:
Висновок
update-resolve-conf
Далі відредагуйте отриманий з сервера файл конфігурації клієнта OpenVPN:
Якщо вам вдалося знайти файл update-resolv-conf, розкоментуйте наступні рядки файлу:
client1.ovpn
script-security 2 up / etc / openvpn / update-resolv-conf down / etc / openvpn / update-resolv-conf
Якщо ви використовуєте CentOS, змініть group з nogroup на nobody:
client1.ovpn
group nobody
Збережіть и закрійте файл.
Тепер ви можете з'єднатися з VPN використовуючи команду openvpn наступним чином:
- sudo openvpn --config client1 .ovpn
В результаті ви підключіться до сервера.
iOS
установка
Знайдіть в iTunes App Store офіційний клієнт OpenVPN Connect і встановіть його. Для перенесення файлу конфігурації клієнта на ваш пристрій, підключіть пристрій до комп'ютера.
Запустіть iTunes на комп'ютері і виберіть iPhone> apps. Знайдіть секцію File Sharing і натисніть на додаток OpenVPN. Перенесіть ваш файл .ovpn в праву частину вікна OpenVPN Documents.
Далі запустіть додаток OpenVPN на iPhone. Ви отримаєте повідомлення, що новий профіль готовий до імпорту. Натисніть на зелений плюсик для імпорту профілю.
з'єднання
OpenVPN готовий до використання з новим профілем. Для установки з'єднання потягніть слайдер Connect в позицію On. Для зупинки з'єднання перемістіть цей же слайдер в положення Off.
Увага
Перемикач VPN в додатку Settings можна використовувати для установки з'єднання з VPN. Якщо ви спробуєте це зробити, ви отримаєте повідомлення про те, що це можливо тільки в додатку OpenVPN.
Android
установка
Відкрийте Google Play Store. Знайдіть і встановіть офіційний додаток OpenVPN Android OpenVPN Connect .
Передати профіль з комп'ютера на телефон можна підключивши Android пристрій до комп'ютера через USB і скопіювавши файл. Ви також можете перемістити файл профілю за допомогою SD карти, скопіювавши профіль на карту і вставивши карту в Android пристрій.
Відкрийте програму OpenVPN і натисніть на меню для імпорту профілю.
Далі знайдіть файл в файловій системі (в нашому прикладі це / sdcard / Download /) і виберіть знайдений файл. Додаток повідомить, що профіль був імпортований.
з'єднання
Для установки з'єднання натисніть кнопку Connect. Вам буде поставлено питання, чи довіряєте ви з додатком OpenVPN. Дайте відповідь OK для установки з'єднання. Для зупинки з'єднання зайдіть в додаток OpenVPN і виберіть Disconnect.
Крок 13. Тестування VPN з'єднання
Після того, як все встановлено і налаштовано, переконаємося, що все працює правильно. Без установки з'єднання з VPN відкрийте браузер і зайдіть на DNSLeakTest .
Цей сайт поверне IP адреса, призначений вам вашим Інтернет-провайдером. Для того, щоб перевірити, які DNS сервера використовуються, натисніть на Extended Test.
Тепер встановіть з'єднання, використовуючи ваш VPN клієнт і обновіть сторінку в браузері. Що видається вам IP адреса повинна бути зовсім іншою. Тепер для всіх в Інтернеті ви використовуєте цей новий IP адреса. Натисніть Extended Test ще раз, щоб перевірити ваші настройки DNS і переконайтеся, що тепер ви використовуєте DNS сервера вашого VPN.
Крок 14. Відкликання клієнтських сертифікатів
Час від часу, вам може знадобитися відкликати клієнтський сертифікат для запобігання доступу до сервера VPN &
Для цього треба зайти в вашу директорію центру сертифікації і введіть команди:
- cd ~ / openvpn-ca
- source vars
Далі використовуйте команду revoke-full з ім'ям клієнта, сертифікат якого ви хочете відкликати:
Висновок результатів роботи цієї команди буде закінчуватися помилкою 23. Це нормально. В результаті роботи буде створено файл crl.pem в директорії keys з необхідною для відкликання сертифікату інформацією.
Перемістіть цей файл в директорію / etc / openvpn:
- sudo cp ~ / openvpn-ca / keys / crl.pem / etc / openvpn
Далі відкрийте файл конфігурації сервера OpenVPN:
- sudo nano /etc/openvpn/server.conf
Додайте в кінець файлу рядок crl-verify. Сервер OpenVPN перевірятиме список відкликаних сертифікатів кожен раз, коли хтось встановлює з'єднання з сервером.
/etc/openvpn/server.conf
crl-verify crl.pem
Збережіть и закрійте файл.
Перезапустіть OpenVPN для завершення процесу відкликання сертифікату:
- sudo systemctl restart openvpn @ server
Тепер клієнт не зможе встановлювати з'єднання з сервером OpenVPN використовуючи старий сертифікат.
Для відкликання додаткових сертифікатів виконайте наступні кроки:
Згенеруйте новий список відкликаних сертифікатів використовуючи команду source vars в директорії ~ / openvpn-ca і виконуючи команду revoke-full з ім'ям клієнта.
Скопіюйте новий список відкликаних сертифікатів в директорію / etc / openvpn перезаписавши тим самим старий список.
Перезапустіть сервіс OpenVPN.
Ця процедура може бути використана для відкликання будь-яких створених вами раніше сертифікатів.
Висновок
Вітаємо! Тепер ви можете безпечно виходити в Інтернет, весь ваш трафік захищений від прослушки цензорів і зловмисників.
Для конфігурації додаткових клієнтів повторіть кроки 6 і 11-13 для кожного нового пристрою. Для відкликання доступу того чи іншого клієнта використовуйте крок 14.
Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate?Y / n]: y 1 out of 1 certificate requests certified, commit?
Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate?
Y / n]: y 1 out of 1 certificate requests certified, commit?
Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate?
Y / n]: y 1 out of 1 certificate requests certified, commit?
Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate?
Y / n]: y 1 out of 1 certificate requests certified, commit?
Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate?
Y / n]: y 1 out of 1 certificate requests certified, commit?