Кілька днів тому випущена нова версія OpenVPN 2.4.9, будучи цим коригуюча версія що було запущено з метою виправлення вразливості CVE-2.020-11.810, що дозволяє перекласти сеанс клієнта на нову IP-адресу, яка до того часу не була зареєстрована.
Проблему можна використати для переривання щойно підключеного клієнта на етапі, коли ідентифікація однорангової мережі вже була сформована, але узгодження ключів сеансу ще не завершено (клієнт може зупинити сеанси інших клієнтів).
Про OpenVPN
Тим, хто не знайомий з OpenVPN, ви повинні це знати це безкоштовний інструмент підключення на основі програмного забезпечення, SSL (рівень захищених сокетів), віртуальна приватна мережа VPN.
OpenVPN пропонує точкове з'єднання з ієрархічною перевіркою підключених користувачів та хостів віддалено. Це дуже хороший варіант у технологіях Wi-Fi (бездротові мережі IEEE 802.11) і підтримує широку конфігурацію, включаючи балансування навантаження.
OpenVPN - це мультиплатформенний інструмент, який спростив конфігурацію VPN у порівнянні зі старими і складнішими в налаштуванні, наприклад, IPsec, і робить його більш доступним для недосвідчених людей у цьому виді технологій.
Що нового в OpenVPN 2.4.9?
Окрім виправлення вищезгаданої помилки, ця нова версія також реалізує зміну процедури для перевірки інтерактивних послуг користувачів (У Windows спочатку перевіряється розташування конфігурації, а потім надсилається запит на контролер домену.)
При використанні опції "- файл автентифікації користувача", якщо у файлі є лише одне ім'я користувача для запиту пароля, дочас інтерфейсу потрібен для управління обліковими даними (Зупиніть запит пароля за допомогою OpenVPN через підказку консолі).
На платформі Windows дозволено використовувати рядки пошуку Unicode в опції "–cryptoapicert".
Також виправлена проблема з неможливістю завантаження декількох CRL (Список відкликаних сертифікатів), розміщений у тому самому файлі при використанні опції «–crl-verify» в системах OpenSSL.
І проблеми компіляції були вирішені на платформі FreeBSD за допомогою прапорця –enable-async-push.
Виправлено повідомлення про парольну фразу для приватного ключа OpenSSL а прострочені сертифікати передаються до сховища сертифікатів Windows.
Як встановити OpenVPN?
Для тих, хто зацікавлений у можливості встановити OpenVPN у своїй системі, вони можуть це зробити, дотримуючись інструкцій що ми ділимося нижче.
Першим ділом буде установка інструменту та Easy RSA Оскільки для видачі надійних сертифікатів потрібно налаштувати простий Центр сертифікації (ЦС):
sudo apt update sudo apt install openvpn easy-rsa
Зараз ми збираємось налаштувати центр сертифікації з:
make-cadir ~/openvpn-ca cd ~/openvpn-ca
Y давайте відредагуємо деякі змінні які допомагають вирішити, як створити сертифікати:
gedit vars
Шукайте розділ easy-rsa та редагуйте так, щоб він виглядав так:
Після деяких коригувань:
# These are the default values for fields # which will be placed in the certificate. # Don't leave any of these fields blank. export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="Tustin" export KEY_ORG="SSD Nodes" export KEY_EMAIL= class="hljs-string">"joel@example.com" export KEY_OU="Marketing" # X509 Subject Field export KEY_NAME="vpnserver"
Ви зберігаєте та вводите в терміналі:
source vars ./build-ca
Буде створено новий ключ RSA, і вас попросять підтвердити дані, які ви ввели у файл. Зроблено це тепер настав час створити відкриті / приватні ключі клієнта, де на [сервер] вони вводять ім’я, яке хочуть.
./build-key-server [server]
Далі їм потрібно побудувати ключі Діффі-Хеллмана.
./build-dh
Нарешті, вони повинні сформувати підпис HMAC для посилення сертифіката.
openvpn --genkey --secret keys/ta.key source vars ./build-key client1
Y якщо ви хочете створити захищені паролем облікові дані:
джерело вар
./build-key-pass client1
Тепер ми збираємося налаштувати сервер OpenVPN
cd ~/openvpn-ca/keys sudo cp ca.crt ca.key vpnserver.crt vpnserver.key ta.key dh2048.pem /etc/openvpn gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
Тепер нам потрібно внести деякі зміни у файл конфігурації.
sudo nano /etc/openvpn/server.conf
Спочатку переконаймося, що OpenVPN шукає потрібні файли .crt та .key.
До:
ca ca.crt cert server.crt key server.key # This file should be kept secret
Після:
ca ca.crt cert vpnserver.crt key vpnserver.key # This file should be kept secret
Потім ми застосовуємо однаковий HMAC між клієнтами та сервером.
До:
;tls-auth ta.key 0 # This file is secret
Після:
tls-auth ta.key 0 # This file is secret key-direction 0
Якщо ви віддаєте перевагу використовувати DNS, відмінний від відкритих, ви повинні змінити два рядки, які починаються з натискання «dhcp-option.
До:
# If enabled, this directive will configure # all clients to redirect their default # network gateway through the VPN, causing # all IP traffic such as web browsing and # and DNS lookups to go through the VPN # (The OpenVPN server machine may need to NAT # or bridge the TUN/TAP interface to the internet # in order for this to work properly). ;push "redirect-gateway def1 bypass-dhcp" # Certain Windows-specific network settings # can be pushed to clients, such as DNS # or WINS server addresses. CAVEAT: # http://openvpn.net/faq.html#dhcpcaveats # The addresses below refer to the public # DNS servers provided by opendns.com. ;push "dhcp-option DNS 208.67.222.222" ;push "dhcp-option DNS 208.67.220.220"
Після:
# If enabled, this directive will configure # all clients to redirect their default # network gateway through the VPN, causing # all IP traffic such as web browsing and # and DNS lookups to go through the VPN # (The OpenVPN server machine may need to NAT # or bridge the TUN/TAP interface to the internet # in order for this to work properly). push "redirect-gateway def1" # Certain Windows-specific network settings # can be pushed to clients, such as DNS # or WINS server addresses. CAVEAT: # http://openvpn.net/faq.html#dhcpcaveats # The addresses below refer to the public # DNS servers provided by opendns.com. push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
Потім ми повинні вибрати шифри для використання:
До:
# Select a cryptographic cipher. # This config item must be copied to # the client config file as well. ;cipher BF-CBC # Blowfish (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES
Після:
# Select a cryptographic cipher. # This config item must be copied to # the client config file as well. ;cipher BF-CBC # Blowfish (default) cipher AES-256-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES auth SHA512
Нарешті, давайте змусимо OpenVPN використовувати непривілейований обліковий запис користувача замість root, що не особливо безпечно.
user openvpn group nogroup
Тепер ми можемо зберегти та закрити цей файл, щоб створити цього користувача:
sudo adduser --system --shell /usr/sbin/nologin --no-create-home openvpn
І ми активуємо послугу за допомогою:
sudo systemctl enable openvpn@server sudo systemctl start openvpn@server