Skip to main content

Установка і настройка OpenVPN на Debian 8



OpenVPN - це програмний комплекс, що дозволяє захистити від «прослушки» інтернет-трафік користувача, забезпечуючи зашифровану передачу даних від пристрою клієнта до сервера з встановленим OpenVPN. Дуже добре підходить при використання публічних wifi точок доступу, де інформація може бути перехоплена третіми особами. Або в разі, коли ваш ip заблокований на певному сайті і потрібно безпечно обійти це обмеження.



Крім установки і настройки ОпенВПН на сервері, необхідно вміти налаштувати клієнт для доступу з комп'ютера, де в якості операційної системи буде використовуватися Windows.

Використовуючи стандартний менеджер пакетів, встановимо openvpn.

  # Aptitude install openvpn 

Зміст статті:

створення сертифікатів

ОпенВПН в обов'язковому порядку вимагає генерації сертифікатів для сервера і клієнтів. Це і логічно, адже з'єднання від клієнта до сервера повинно бути зашифровано.



Перейдіть в папку openvpn:

  # Cd / etc / openvpn 

Генерувати ключі ми будемо за допомогою easy-rsa.

Створюємо папку з файлами і посиланнями на скрипти генерації сертифікатів:


  # Make-cadir rsa
 # Cd rsa 

Відкрийте конфігураційний файл vars і змініть параметри:

  export KEY_COUNTRY = "US"
 export KEY_PROVINCE = "CA"
 export KEY_CITY = "SanFrancisco"
 export KEY_ORG = "Fort-Funston"
 export KEY_EMAIL = "me@myhost.mydomain"

KEY_COUNTRY - вкажіть код країни (RU, UA і т.д.);
KEY_PROVINCE - даний пункт не актуальний, якщо ви не проживаєте в США. :) Можна замінити на XX;
KEY_CITY - ваше місто, де ви проживаєте;
KEY_EMAIL - адреса вашої електропошти.

А також розкоментуйте рядок export KEY_CN, як значення для якої вкажіть ім'я сервера:

  export KEY_CN = "example.com" 

Всі змінні заповнюються латиницею.

Збережіть файл і запустіть його виконання:

  #.  vars 

Потім запустіть видалення старих сертифікатів:

  # ./clean-all 

Створіть кореневий сертифікат:

  # ./build-ca 

Якщо при генерації кореневого сертифіката ви отримаєте помилку error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 198 , додайте в файл vars рядок:

  export KEY_ALTNAMES = "something" 

А після повторно здійснити попередні команди:. vars, ./clean-all, ./build-ca.

Наступний крок - створення ключа і сертифіката сервера.

  # ./Build-key-server server 

Після чого створіть сертифікат і ключ для клієнта:

  # ./Build-key client 

Зверніть увагу: для кожного клієнта слід генерувати власні сертифікат і ключ. Потрібно лише вказувати різні імена (замість client) і змінювати шляху до них в конфігураційних файлах. При цьому, ви можете захистити ключі клієнтів паролем, для цього використовуйте команду build-key-pass замість build-key.

Далі потрібно створити ключ Діффі-Хеллмана для можливості використання Forward Secrecy:

  # ./build-dh 

І ключ для tls-аутентифікації:

  # Openvpn --genkey --secret /etc/openvpn/ta.key 

Тепер необхідно скопіювати серверні сертифікати і ключі в папку налаштувань OpenVPN:

  # Cp keys / ca.crt keys / server.crt keys / server.key keys / dh2048.pem / etc / openvpn / 

А також виставити на них права, що дозволяють читання і зміна тільки для їх власника.

  # Chmod 0600 /etc/openvpn/ca.crt /etc/openvpn/server.crt /etc/openvpn/server.key /etc/openvpn/dh2048.pem /etc/openvpn/ta.key 

Обов'язково скопіюйте собі на комп'ютер, наприклад, на робочий стіл, з папки keys ключі, необхідні для підключення клієнта: client.crt, client.key, ca.crt, ta.key.

На цьому процес підготовки сертифікатів закінчений.

Налаштування сервера

У каталозі / usr / share / doc / openvpn / розташовується файл-приклад для настройки сервера Openvpn. Скопіюйте його в каталог / etc / openvpn / і розархівуйте:

  cd / etc / openvpn; cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn /; gunzip server.conf.gz 

Тепер розглянемо необхідні для роботи openvpn параметри.

Порт, на якому Openvpn буде приймати з'єднання. За замовчуванням, 1194. Рекомендую змінити його з метою приховування. Можна навіть замаскувати опенвпн під Web-сервер, вказавши порт 80.

  port 20100 

Прописуємо шляху до файлів сертифікатів і ключа сервера.

  ca ca.crt
 cert server.crt
 key server.key 

Шлях до ключу Діффі-Хеллмана.

  dh dh2048.pem 

Можуть бути вказані як шляху щодо каталогу / etc / openvpn (якщо файли розміщені в ньому), так і абсолютні.

Знаходимо і раскомментіруем рядок:

  push "redirect-gateway def1 bypass-dhcp" 

Вона потрібна для можливості виходу в інтернет через сервер ОпенВПН. Якщо її НЕ розкоментувати, то будуть доступні лише комп'ютери всередині мережі.

Також потрібно вказати dns-сервери для клієнтів, що підключаються.

  push "dhcp-option DNS 213.183.57.55"
 push "dhcp-option DNS 87.98.175.85" 

Залежно від місця розташування сервера, можна підібрати інші dns-сервери, наприклад, на проекті OpenNIC .

Далі знаходимо і раскомментіруем параметр tls-auth.

  tls-auth ta.key 0 

Увага! В налаштуваннях клієнта остання цифра цього параметра повинна бути замінена на 1 - tls-auth ta.key 1.

Трохи нижче в конфігураційному файлі слід перерахування доступних шифрів. Розкоментуйте шифр AES-128-CBC.

  cipher AES-128-CBC # AES 

При необхідності, його можна замінити на AES-256-CBC. У файлі конфігурації клієнта шифр повинен бути ідентичний серверного шифру.

Також додайте параметр auth. За замовчуванням, для аутентифікації використовуються ключі sha1 довжиною 160 біт, але алгоритм sha1 визнаний вразливим. При вказівці нижченаведеного параметра будуть використовуватися ключі SHA512 довжиною 512 біт.

  auth SHA512 

А також параметр tls-version-min, який визначає використовувану версію tls. В даному випадку, останню версію 1.2. Увага! Network Manager не підтримує (на момент написання статті) цей параметр. Тому, якщо ви плануєте підключатися до ВПН сервера через Network Manager, то цей параметр НЕ прописуємо в настройках сервера.

  tls-version-min 1.2 

OpenVPN не слід запускати від імені root. Тому розкоментуйте рядки:

  user nobody
 group nogroup 

Не зайвим буде включення логів для OpenVPN. Особливо, на перших порах використання після настройки для пошуку помилок і т.д.

  log /var/log/openvpn.log 

Всі інші параметри конфігураційного файлу /etc/openvpn/server.conf залиште зі значеннями за замовчуванням. На цьому настройка сервера OpenVPN закінчена.

Активуйте openvpn командою:

  # Systemctl enable openvpn 

І перезапустите:

  # Service openvpn restart 

Також не зайвим буде перевірити лог на наявність помилок.

Перенаправлення трафіку через OpenVPN

Щоб мати можливість виходу в інтернет через сервер опенвпн, необхідно дещо зробити для цього.

1. Налаштувати sysctl

В консолі запустіть команду:

  # Sysctl net.ipv4.ip_forward 

Якщо висновок команди буде рівним net.ipv4.ip_forward = 1, то змінювати що-небудь не потрібно. Якщо ж значення змінної буде дорівнює 0, то в файл /etc/sysctl.conf потрібно додати рядок:

  net.ipv4.ip_forward = 1 

І перезавантажити правила командою:

  # Sysctl -p 

2. Налаштувати iptables

По черзі виконайте в консолі наступні команди:

  # Iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED, RELATED -j ACCEPT
 # Iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT
 # Iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 

Таким чином, ми дозволимо пропускати трафік через сервер OpenVPN для підмережі 10.8.0.0 в рамках вже встановлених з'єднань.

Якщо клієнту openvpn потрібно присвоїти певний зовнішній ip адресу сервера, то замість останньої команди зі списку попередніх для iptables, необхідно виконати цю:

  -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 127.0.0.1 

Де після параметра -to-source слід вказати зовнішній ip сервера.

OpenVPN клієнт на Windows

Приступаємо до налаштування Openvpn клієнта на Windows. Тут все просто: завантажуємо клієнт з офіційного сайту, встановлюємо, створюємо конфігураційний файл і запускаємо.

Варто відзначити, що запускати опенвпн на Windows слід з правами адміністратора, якщо активний контроль облікових записів.

Якщо ви не змінювали шлях установки, то приклади конфігураційних файлів на вашому ПК розташовуються в каталозі C: \ Program Files \ OpenVPN \ sample-config. Скопіюйте звідси файл client.ovpn і помістіть його в каталог C: \ Program Files \ OpenVPN \ config.

Пам'ятайте про створених для клієнта сертифікатах? Їх теж слід завантажити з сервера і скопіювати в цей каталог.

Відкрийте конфігураційний файл client.ovpn і знайдіть параметр remote my-server-1 1194. Замість my-server вкажіть ip або доменне ім'я вашого сервера. Потім порт, який ми змінили раніше. В результаті рядок може виглядати так:

  remote 192.168.0.1 20100 

Далі потрібно вказати шляхи до сертифікатів, які ви згенерували на сервері. Для кожного клієнта створюється ключ з унікальним ім'ям, який слід вказувати нижче, замість client.

  ca ca.crt
 cert client.crt
 key client.key 

Також слід розкоментувати параметр, який вказує шлях до tls-ключу.

  tls-auth ta.key 1 

Раніше вже говорилося про те, що остання цифра на сервері повинна бути 0, на клієнті - 1.

І останні параметра - це шифри, які ви встановили на сервері.

  cipher AES-128-CBC
 auth SHA512
 tls-version-min 1.2 

Це все, що потрібно для налаштування клієнта. Спробуйте запустити клієнт OpenVPN і підключитися до вашого сервера. Необхідна інформація про підключення буде відображена в віконці openvpn gui.

OpenVPN спільно з NetworkManager

Встановлюємо графічний інтерфейс для Network Manager.

  # Aptitude install network-manager-openvpn-gnome 

І перезапускаємо.

  # Service network-manager restart 

Копіюємо згенеровані для клієнта сертифікати в довільну папку на ком'ютера. Наприклад, в /home/user/.openvpn/.

Натискаємо правою клавішею миші на значку network manager, вибираємо пункт «змінити з'єднання», додаємо нове підключення типу «OpenVPN».

добавить новое подключение network manager

вказуємо:

  • Назва з'єднання
  • Шлюз (домен або ip сервера)
  • Тип: сертифікати

Сертифікат користувача - сертифікат, який ми згенерували на початку для клієнта (client.crt).
Сертифікат ЦС - файл ca.crt.
Особистий ключ - ключ клієнта (client.key).

openvpn новое соединение

Натискаємо на кнопку «Додатково». У вікні, у вкладці «Загальні» буде потрібно змінити кілька пунктів.

  • Використовувати інший порт шлюзу (якщо ви вказали нестандартний при налаштуванні сервера)
  • Використовувати стиснення lzo

Перемикається на вкладку «Безпека». Вибираємо шифр, як в параметрах сервера. Як значення параметра «Аутентифікація hmac» слід вказати алгоритм, як в значенні auth сервера. У статті ми вибрали SHA512.

Відкриваємо вкладку «Аутентифікація TLS» і відзначаємо галочкою пункти:

  • Verify peer ...
  • Використовувати додаткову аутентифікацію TLS

Для останнього параметра вказуємо шлях до файлу ta.key, в якості напрямку ключа зі списку вибираємо 1. Аналогічно конфігураційного файлу для Windows.

Зберігаємо з'єднання і намагаємося підключитися. :)

Про всяк випадок, дивимося, що пише NM при підключенні в системний лог:

  # Tail -f / var / log / syslog 


Як ви оціните статтю?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (7 оцінок, середнє: 5,00 з 5)
Завантаження ...

” 14 Коментарі "Установка і настройка OpenVPN на Debian 8"

  1. Автор як я не намагався зробити дебаггінг щоб зрозуміти чому у мене клієнти не можуть підключитися, openvpn НЕ птішет логи! підкажи що зробити!

    1. Значить, потрібно перевірити логи клієнтів. OpenVPN GUI такий лог обов'язково веде. Правий клік миші -> показати журнал.

      Може бути, пропущений якийсь пункт з інструкції ...

  2. Спасибі, але як виявилося потрібно було зробити так #openvpn /opt/vp/vp.conf і додаток зачепило конфиг файл - логи пішли - я все переглянув і зробив ВПН робочим.

    Ещеби мануальчік автор у тебе запитати. Як зробити тунель між сервером на дебіане і мікротіком. З'єднати їх локальну мережу. 2 квартири.

    1. У себе на андроїд-смартфон використовую офіційний клієнт від розробника Openvpn - «Openvpn connect» https://play.google.com/store/apps/details?id=net.openvpn.openvpn

      Він досить простий в налаштуванні. Згенеровані файли для клієнта потрібно закинути в будь-яку папку на флешці телефону. Потім запустити Openvpn Connect, в меню вибрати пункт "Import", далі - «Import Profile from SD card». Відкриється файловий менеджер, де потрібно вибрати файл * .ovpn, клікнути на кнопку «Select». На підтвердження успішного імпорту на екрані відобразиться повідомлення «Profile imported».

      Для підключення натискаємо кнопку «Connect». От і все. :)

      Не знаю про інших клієнтів, але цей прекрасно працює.

      PS Якщо планується підключатися одночасно і з комп'ютера, і з телефону, то для останнього слід згенерувати власні ключ і сертифікат.

  3. upd.
    п.2 зважився установкою прав на ключ client.key (мабуть прогледів спочатку). + Знадобилося виставити тип підключення TCP явно і вказати тип адаптера - TAP / TUN

  4. Налаштував все за інструкцією, однак є така проблема:
    Клієнт з'єднується з сервером, але інету немає. З клієнта пінгуєтся як сервер VPN 10.8.0.1, так і виділений ip сервера. З самого сервера зовнішні сайти пінгуються без проблем. Виходить що собака зарита десь в IPtables і ip.frwarding. Є якісь думки? може що швидше порадите, ніж розбиратися з цим лісом?

    1. Треба прописати інші правила маршрутизації
      iptables -t nat -A POSTROUTING -o venet0 -j SNAT -to IP_АДРЕС_ВАШЕГО_СЕРВЕРА
      iptables -A FORWARD -i venet0 -o tun0 -m state -state RELATED, ESTABLISHED -j ACCEPT
      iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT

Додати коментар

Ваш e-mail не буде опублікований.