Що таке Open VPN. OpenVPN: створення повноцінного openVPN gateway. Налаштування серверної частини

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

Так нам потрібно організувати VPN канал між двома офісами. Мережа Офіс 1 (назвемо його С_ОФ1) та Мережа Офіс 2 (назвемо його С_ОФ2).

Скажу відразу, що в моєму випадку OpenVPN в обох офісах встановлений на Windows 7.

С_ОФ1включає:
Машина куди ставимо OpenVPN Server має 2 мережні інтерфейси.
Також на ній встановлений проксі-сервер, який роздає інет у локалку, тим самим будучи для всіх машин у локалці основним шлюзом (192.168.0.100)
192.168.0.100 дивиться у мережу
192.168.1.2 дивиться у світ через роутер. Роутер має статичний IP скажімо 111.222.333.444. На роутері зроблено прокидання порту 1190 (у моєму випадку порт 1190 прокинуто на 192.168.1.2)
Користувач у мережі: 192.168.0.50

С_ОФ2включає:
Машина куди ставимо OpenVPN Client має 2 мережні інтерфейси.
Також на ній встановлений проксі-сервер, який роздає інет у локалку, тим самим будучи для всіх машин у локалці основним шлюзом (172.17.10.10)
172.17.10.10дивиться в мережу
192.168.1.2 дивиться у світ через роутер.
Користувач у мережі: 172.17.10.50

Завдання:Користувач С_ОФ1(192.168.0.50) повинен бачити розшарені ресурси на Користувачі С_ОФ2 (172.17.10.50) і навпаки.

Приступаємо до налаштування

Завантажуємо OpenVPN з відповідно до розрядності системи.

Запускаємо установку, на 3-му етапі активуємо неактивні пункти.

Наступний крок – шлях для встановлення. Щоб полегшити собі подальше життя, встановлюємо корінь диска С.

У процесі встановлення в систему встановлюється віртуальний мережевий адаптер TAP-Win32 Adapter V9та, відповідно, драйвер до нього. Цьому інтерфейсу програма OpenVPN якраз і призначатиме IP адресу та віртуальну маску. мережі OpenVPN. У нашому випадку йому призначено адресу 10.10.10.1 з маскою 255.255.255.0 на сервері С_ОФ1 та 10.10.10.2 з аналогічною маскою на клієнті С_ОФ2.

Перейменуємо його на "VPN"


У директорії "C: OpenVPN" слід відразу ж створити додатково папку ssl(тут ми зберігатимемо ключі аутентифікації) папку ccd(Тут буде конфігурація налаштувань сервера для клієнта).

В папці easy-rsaстворюємо файл vars.bat, даний пакетний файлбуде задавати змінні для сеансу генерації сертифікатів, в тій частині щодо організації та розташування заповнюємо своїми даними.

Set HOME=C:\OpenVPN\easy-rsa
set KEY_CONFIG=openssl-1.0.0.cnf
set KEY_DIR=C:\OpenVPN\ssl
set KEY_SIZE=1024
set KEY_COUNTRY=UA
set KEY_PROVINCE=Stavropol
set KEY_CITY = Stavropol
set KEY_ORG=ServerVPN
set KEY_EMAIL=admin@localhost
set KEY_CN=test
set KEY_NAME=test
set KEY_OU=test
set PKCS11_MODULE_PATH=test
set PKCS11_PIN=1234

Запускаємо командний рядоквід імені адміністратора.


Переходимо шляхом C:\OpenVPN\easy-rsa, набравши для переходу в командному рядку команду

Cd C:\OpenVPN\easy-rsa

Запускаємо vars.bat:

Тепер запускаємо build-ca.bat. Так як вся інформація про сервер у нас вже заповнена, все залишаємо без змін:

після цього у нас у папці ssl з'явиться два файли ca.crtі ca.key.

Запускаємо build-dh.bat:

в результаті у нас у папці ssl з'явиться файл dh1024.pem.

Створюємо серверний ключ, для цього вводимо команду:

Build-key-server.bat ServerVPN

де " ServerVPN" це назва нашого VPN сервера, як у моєму випадку,

Важливо!Вказуємо параметр "commonname" – пишемо ім'я нашого VPN сервера. Всі інші параметри залишаємо за промовчанням, на всі запитання відповідаємо yes

в результаті у нас у папці ssl з'являться файли ServerVPN.crt, ServerVPN.csr, ServerVPN.key.

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

Виконуємо команду:

Build-key.bat UserVPN_1

де " UserVPN_1ім'я нашого клієнта.

Важливо!Вказуємо параметр "commonname" – пишемо ім'я нашого VPN клієнта (UserVPN_1). Всі інші параметри залишаємо за промовчанням, на всі запитання відповідаємо yes

В результаті у нас у папці ssl з'являться файли UserVPN_1.crt, UserVPN_1.csr, UserVPN_1.key.

Якщо у вас є кілька клієнтів, то повторюємо формування ключів; не забуваючи кожному клієнту надавати свої імена

Build-key.bat UserVPN_2
build-key.bat UserVPN_3

Генерація ключа tls-auth (ta.key) для аутентифікації пакетів, для цього переходимо до кореневу папку OpenVPN:

та виконуємо команду:

Openvpn --genkey --secret ssl/ta.key

в результаті в папці ssl отримаємо файл ta.key.

Починаємо створення конфіга сервера. У папці config створюємо файл OpenVPN.ovpn:

#Порт для роботи OpenVPN
port 1190


proto udp

#Тип інтерфейсу
dev tun

#Ім'я інтерфейсу
dev-node "VPN"

#Сертифікат для шифрування підключення
dh C:\OpenVPN\ssl\dh1024.pem


ca C:\OpenVPN\ssl\ca.crt

#Сертифікат сервера
cert C:\OpenVPN\ssl\ServerVPN.crt

#ключ сервера
key C:\OpenVPN\ssl\ServerVPN.key

# Захист від DOS атак(Для сервера, після шляху до ключа, ставимо 0 а для клієнта 1)
tls-server
tls-auth C:\OpenVPN\keys\ta.key 0
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450

#Діапазон IP адрес для VPN мережі
server 10.10.10.0 255.255.255.0


cipher AES-256-CBC

#Логи

#Каталог, у якому лежить файл з назвою нашого клієнта, у моєму випадку UserVPN_1 без розширення, і в ньому записати команди, які будуть виконуватися на клієнті:
client-config-dir "C:\OpenVPN\ccd"


verb 3


mute 20

# Максимальна кількість одночасно підключених клієнтів ми хочемо дозволити
max-clients 2

#Час життя неактивної сесії
keepalive 10 120

#Дозволяємо клієнтам бачити один одного
client-to-client

#Включаємо стиск
comp-lzo
persist-key
persist-tun

#Маршрути додаються через.exe якщо без нього, то не у всіх прописуються маршрути
route-method exe

#Затримка перед додаванням маршруту
route-delay 5

#Команда яка повідомляє клієнтам що за сервером локальна мережаз адресами 192.168.0.0 255.255.255.0
push "route 192.168.0.0 255.255.255.0"

#Прописує маршрут на сервері, щоб бачити мережу за клієнтом
route 172.17.10.0 255.255.255.0 10.10.10.2

#Шлюз
route-gateway 10.10.10.1

кожному клієнту видається за 1 адресою, без віртуальних портів маршрутизатора
topology subnet

В папці ccdстворюємо файл без розширення і називаємо його точно як клієнта UserVPN_1, відкриваємо його блокнотом і пишемо наступне:

#Привласнюємо клієнту постійний IP 10.10.10.2
ifconfig-push 10.10.10.2 255.255.255.0

#повідомляємо серверу, що за клієнтом мережа 172.17.10.0
iroute 172.17.10.0 255.255.255.0

#якщо розкоментувати наступний рядок, то клієнт буде відключений (на випадок, якщо потрібно цього клієнта відключити від сервера, а інші працюватимуть)
# disable

Створюємо конфіг клієнта.

#Говоримо, щоб клієнт забирав інформацію про маршрутизацію із сервера (push опції)
client

#Порт для роботи OpenVPN
port 1190

#Вказуємо за яким протоколом працює OpenVPN
proto udp

#Тип інтерфейсу
dev tun

#Ім'я інтерфейсу
dev-node "VPN"

# Адреса сервера, до якого підключаємося
remote 444.333.222.111 1190

#захист
remote-cert-tls server

#Сертифікат центру сертифікації
ca C:\OpenVPN\ssl\ca.crt

#Сертифікат сервера
cert C:\\OpenVPN\\ssl\\ UserVPN_1.crt

#ключ
key C:\\OpenVPN\\ssl\\ UserVPN_1.key

# Захист від DOS атак
tls-auth C:\OpenVPN\keys\ta.key 1
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ping-restart 60
ping 10

#Включаємо стиск
comp-lzo
persist-key
persist-tun

# Вибір криптографічного шифру
cipher AES-256-CBC

#Логи
status C:\OpenVPN\log\openvpn-status.log
log C:\OpenVPN\log\openvpn.log

#Рівень налагоджувальної інформації
verb 3

#Кількість повідомлень, що повторюються
mute 20

Встановлюємо на клієнті OpenVPN, надаємо йому ca.crt, UserVPN_1.crt, UserVPN_1.key, ta.key.

Налаштовуємо файрволи та антивіруси на клієнті та на сервері для безперешкодного проходження пакетів. Описувати не буду все залежить від встановлених антивірусівта файрволів.

Після всього цього запускаємо наш сервер та клієнт.

Якщо все правильно зробили наш сервер отримає IP 10.10.10.1 та підключиться до нього клієнт та отримає IP 10.10.10.2. І так підключення у нас відбулося тепер сервер і клієнт пінг один одного по IP нашої VPN мережі, тобто 10.10.10.1 і 10.10.10.2.

Для того, щоб пінг йшов за внутрішніми адресами наших С_ОФ1 та С_ОФ2 потрібно включити службу Маршрутизації та віддаленого доступу.


Потрібно зайти у властивості служби, налаштувати її на автоматичне включеннята запустити.

Після цього ми зможемо пінгувати внутрішні IP сервери та клієнти (172.17.10.10 клієнт та 192.168.0.100 сервер).

Але цей спосіб має невеликий недолік: після включення цієї служби і підключення до нашого VPN-каналу на значку мережного підключення повисне червоний хрест до відключення VPN.

При цьому всі мережі працюють у штатному режимі. Особисто мене цей хрест дратує і іноді збиває з пантелику.

Є другий спосіб зробити видимими внутрішні IP мереж наших сервера і клієнта.

Для цього заходимо до реєстру, відкриваємо гілку реєстру:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TcpIP\Parameters

Знаходимо параметр і змінюємо значення: IPEnableRouterтипу REG_DWORDзначення 1 .

Не забуваймо перезавантажити машину, щоб налаштування набули чинності!

Це потрібно зробити і на сервері, і на клієнта.

Отже ми пінгуємо наші мережі по внутрішніх IP, а так як у нас і сервер і клієнт для своїх мереж є шлюзами, то і машини з мережі 1 можуть бачити машини з мережі 2 і навпаки. тобто Користувач С_ОФ1(192.168.0.50) може бачити розшаровані папки Користувача С_ОФ2 (172.17.10.50) і навпаки.

Якщо сервер і клієнт не будуть шлюзами для своїх мереж, то доведеться прописувати маршрути руками.

Приклад для С_ОФ1:

Route -p 172.17.10.0 255.255.255.0 192.168.0.100 (машина де встановлено OpenVPN)

Приклад для С_ОФ2:

Route -p 192.168.0.0 255.255.255.0 172.17.10.10(машина де встановлений OpenVPN)

у моєму випадку цього не знадобилося.

Для автоматичного запускусервера та клієнта нам потрібно включити службу OpenVPN Service

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

Додатковий захист

Як відомо в OpenVPN є можливість аутентифікації за сертифікатами, як описано вище, а також за логіном та паролем, але можна ще й об'єднати їх разом. Наскільки мені відомо лише у Linux є можливість штатними засобаминалаштувати автентифікацію за логіном та паролем, але в Windows це теж можна вирішити. Для цього в папці configстворюємо файл auth.vbsі пишемо в нього таке

"VBscript auth.vbs для автентифікації в OpenVPN - auth-user-pass-verify auth.vbs via-file "(c) 2007 vinni http://forum.ixbt.com/users.cgi?id=info:vinni "Support : http://forum.ixbt.com/topic.cgi?id=14:49976 " у скрипті проводиться порівняння імені користувача без урахування регістру. Якщо потрібно інакше - приберіть UCase(...) в 2 або 4 місцях On Error Resume Next " відкриваємо файл, ім'я якого передано OpenVPN в скрипт через параметр Set fso = CreateObject("scripting.filesystemobject") Set CurrentUserPasswordFile = fso.OpenTextFile(WScript.Arguments(0),1) "1 = for reading if Err. Номер<>0 Then WScript.Quit(1) " читаємо з цього файлу 2 рядки - ім'я та пароль, які ввів користувач "на тому кінці" if CurrentUserPasswordFile.AtEndOfStream then WScript.Quit(1) .Quit(1) Password=CurrentUserPasswordFile.ReadLine CurrentUserPasswordFile.Close " відкриваємо змінну оточення common_name (це CN пред'явленого клієнтом сертифіката) " і порівнюємо її з введеним ім'ям користувача. " якщо це порівняння не потрібно, то наступні 2 рядки видалити CreateObject("Wscript.Shell").ExpandEnvironmentStrings("%common_name%") if UCase(CurrentCommonName)<>UCase(UserName) then WScript.Quit(1) " відкриваємо наш файл з базою логінів та паролів " за замовчуванням це Users.pw в поточному каталозі Set UserPasswordFileBase = fso.OpenTextFile("Users.pw",1) "1 = for reading if Err.Number<>0 Then WScript.Quit(1) " читаємо в циклі пари рядків, пропускаючи порожні між цими парами, " і порівнюємо їх з тим, що ввів користувач. Do while not(UserPasswordFileBase.AtEndOfStream) NextUserName=UserPasswordFileBase.ReadLine if Err.Number<>0 Then WScript.Quit(1) if NextUserName<>"" then " якщо ім'я користувача треба порівнювати з урахуванням регістру, то видаліть тут UCase(...) if UCase(UserName)=UCase(NextUserName) then if Password=UserPasswordFileBase.ReadLine then " якщо ім'я та пароль збіглися з парою з бази , то завершуємо скрипт з результатом 0 " так потрібно для OpenVPN" a, це ознака успішної аутентифікації UserPasswordFileBase.Close WScript.Quit(0) end if else UserPasswordFileBase. 1 " так потрібно для OpenVPN"a, це ознака НЕуспішної автентифікації UserPasswordFileBase.Close WScript.Quit(1)

Також у папці config складаємо файл Users.pw туди пише логін і пароль нашого клієнта

UserVPN_1
123456

Якщо кілька клієнтів то:

UserVPN_1
123456

UserVPN_2
365214

UserVPN_3
14578

Далі потрібно в конфізі клієнта прописати рядок auth-user-pass, тепер коли клієнт буде підключатися до сервера у нього буде випливати вікно авторизації, де потрібно ввести логін і пароль, який ви призначили йому в Users.pwїх потрібно буде повідомити клієнту.

У мене налаштовано, що ім'я користувача (логін) відповідає імені клієнта в сертифікаті, тобто UserVPN_1. але можна встановити й інше ім'я відмінне від імені в сертифікаті, для цього потрібно дивитися налаштування в auth.vbs.

" відкриваємо змінну оточення common_name (це CN пред'явленого клієнтом сертифіката)
і порівнюємо її з введеним ім'ям користувача.
Якщо це порівняння не потрібно, то наступні 2 рядки видалити або закоментувати

CurrentCommonName = CreateObject("WscrIPt.Shell").ExpandEnvironmentStrings("%common_name%")
if UCase(CurrentCommonName)<>UCase(UserName) then WScrIPt.Quit(1)
WScrIPt.Echo "Debug: CurrentCommonName=" & CurrentCommonName

А для того, щоб аутентифікація працювала і за сертифікатом, і за логіном з паролем, але при цьому не випливало вікно авторизації користувача, так як це буде затримувати підключення клієнта до сервера, якщо, наприклад, у вас включена автоматичне завантаженняслужби OpenVPN Service (як налаштовано у мене) або ви просто не хочете щоразу вводити логін та пароль, у цьому випадку на клієнті в папці sslстворюємо файл pass.txtі пишемо в нього наш логін та пароль ось так:

UserVPN_1
123456

а в конфізі клієнта змінюємо рядок auth-user-passна auth-user-pass C:\OpenVPN\ssl\pass.txt.

Тепер я вмикаю машину, де встановлений OpenVPN -Server, запускається служба і сервер VPN автоматично піднімається. Клієнт запускає машину і в нього також проходить автоматичне підключеннядо мого сервера. Тепер можна заходити в спільні папкиабо RDP працювати, наприклад, в 1С, встановленої в іншій організації.

контакти [email protected]

  • Теги:

Please enable JavaScript to view the

1) На сайті openvpn.net переходимо до розділу Community. У вкладці Downloadsнатискаємо на Community Downloads.

2) Вибираємо інсталяційний файлвідповідно до розрядності ОС ( 32bit/64bit), встановленої на та завантажуємо його.

3) Запускаємо інсталяційний файл та виконуємо кроки встановлення.

5) У процесі установки OpenVPNпрограма може запросити підтвердження установки TAP-драйвера. Даний запитнеобхідно підтвердити натисканням кнопки Встановити.

6) У цьому процес установки завершується.

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

Розглянемо приклад налаштування OpenVPN з'єднання з використанням самопідписаного SSL-сертифіката.

1) Запускаємо командний рядок.

Пуск (Start) -> Виконати (Run) -> cmd

2) Переходимо до директорії C:\Program Files\OpenVPN\easy-rsaза допомогою команди:

Cd \Program Files\OpenVPN\easy-rsa

3) Запускаємо файл init-config.batу командному рядку:

Init-config.bat

Після запуску файлу буде створено файл vars.bat.

4) Файл vars.batнеобхідно відкрити в текстовому редакторі(Блокнот або Wordpad) та змінити дані для підпису ключів на свої особисті. Відредагувати інформацію можна в наступних рядках:

Set KEY_COUNTRY=US #Країна set KEY_PROVINCE=CA #Область set KEY_CITY=SanFrancisco #Місто set KEY_ORG=OpenVPN #Назва компанії set [email protected]#Контактний e-mail

Також, у разі відсутності запису виду:

Set OPENSSL_CONF=C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf

необхідно її додати під рядком:

Set KEY_CONFIG=openssl-1.0.0.cnf

Примітка:шлях розташування та ім'я файлу конфігурації можуть відрізнятися від зазначених у прикладі. Тому попередньо переконайтеся, що файл розташований і іменований відповідно до вказаних даних.

5) Для створення indexі serialфайлів, виконуємо по черзі наступні команди у командному рядку:

Vars clean-all

6) Наступною командою створюється СА-ключ, яким підписуватиметься майбутній SSL-сертифікат. Після запуску команди буде запрошено значення параметрів. Якщо до цього ви внесли коригування у файл vars.bat, то на параметри, вказані в 4-му кроці, можна відповідати шляхом натискання Enter. Винятком є ​​параметр – Common Name. У ньому необхідно ввести сервер хостнейм, або доменне ім'я.

Build-ca

7) Створюємо ключ Діффі-Хельмана.

Build-key-server<имя_сервера>

У нашому випадку буде наступна команда:

Build-key-server server

Заповнення проводиться за аналогією 6 кроку. В полі Common Nameу нашому випадку вказуємо server. На обидва питання « Sign the certificate?» та « 1 out of 1 certificate requests certified, commit?» відповідаємо згодою шляхом введення « y«, а потім натискаємо Enter.

9) Створюємо окремий ключ для кожного клієнта:

Build-key client1

Вводимо необхідні контактні дані. У Common Nameвказуємо client1.

Переносимо файли з папки /keysу папку /config.

10) З папки /sample-configкопіюємо файл server.ovpnу папку /config

Налаштування фаєрволу

Переконуємось у тому, що порти 5194 і 1194 не заблоковані фаєрволом, інакше додаємо дозвільні правила на вхідний та вихідний трафік:

11) Переходимо в Start (Пуск) -> All programs -> Administrative Tools -> Windows Firewall with Advanced Security.

12) Натискаємо у лівій частині вікна на Inbound Rulesта у розділі Actionsнатискаємо на New rule. В результаті має з'явитися майстер створення правил.

13) Запропоновані 5 кроків заповнюємо наступним чином:

Крок 1 - Rule type: Port;

Крок 2 - Protocol and Ports:За замовчуванням у налаштуваннях OpenVPN серверавикористовується протокол UDP. Якщо дана конфігураціяне змінювалася, то вибираємо в даному кроці UDP. В іншому випадку - TCP. В полі Specific local portsвказуємо 5194 .

Крок 3 – Action: Allow the connection;

Крок 4 – Profile:Залишаємо галочки включеними.

Крок 5 – Name:Вказуємо назву правила на власний розсуд і натискаємо Finish.

14) Аналогічно додаємо правило для порту 1194 , після чого переходимо в Outbound Rulesі створюємо два правила, ідентичні тим, які були створені в Inbound.

Запуск сервера

15) Запускаємо сервер OpenVPN шляхом натискання правою кнопкоюмиші на файлі server.ovpn Sarting OpenVPN on this config file.

16) В результаті з'явиться командний рядок, в якому буде відображено процес запуску сервера VPN. Якщо після закінчення буде виведено рядок Initialization Sequence Completed, Отже, запуск пройшов успішно.

Налаштування на стороні клієнта

Наступні кроки передбачають наявність вже встановленого OpenVPN-клієнта.

1) З папки /sample-configна сервері завантажуємо на комп'ютер файл client.ovpnу папку OpenVPN/config/

2) З папки /configна сервері завантажуємо файли ca.crt, client1.crt, client1.keyна комп'ютер у папку OpenVPN/config/

3) Відкриваємо завантажений файл client.ovpnу текстовому редакторі та вносимо такі коригування:

У записі remote my-server-1 1194замінюємо my-server-1на IP-адресу сервера. У cert client.crtзмінюємо client.crtна client1.crtУ key client.keyзмінюємо client.keyна client1.key

Після цього зберігаємо зміни.

4) Запускаємо OPENVPN-GUI. У системному треї натискаємо правою кнопкою на іконці OpenVPNі в контекстному менювибираємо пункт Edit config.

Якщо конфігурація, що відкрилася, не відповідає файлу client.ovpn, то наводимо налаштування у відповідний вигляд. Якщо відповідає, то закриваємо редактор, знову натискаємо правою кнопкою на іконці у системному треї та вибираємо пункт Connect. Якщо у вікні процесу з'єднання з'являться рядки:

Initialization Sequence Completed MANAGEMENT: >STATE: ********,CONNECTED,SUCCESS

Можливі помилки

failed to update database TXT_DB error number 2

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

Рішення:вказівку іншої контактної інформації.

WARNING: can't open config file: /etc/ssl/openssl.cnf

Причина:некоректно встановлений шляхв змінної оточення OPENSSL_CONF.

Рішення:необхідно оголосити цю змінну у файлі vars.bat, як зазначено у кроці 4 налаштування на стороні сервера.

Інтернет подібний до моря. З даними, що пересилаються, як з судном під час подорожі, може статися що завгодно: вони можуть пошкодитися, затонути в потоці інформації або стати здобиччю «піратів». Захистити особливо цінні дані від крадіжки та втрати допомагають (VPN, ВПН) – системи закритих каналів(тунелів), які будуються всередині іншої, більшої мережі. Одним із видів ВПН є OpenVPN.

Бажаєте навчитися створювати віртуальні приватні мережі швидко та легко? Поговоримо про переваги протоколу OpenVPN, а також про налаштування серверної та клієнтської частини ПЗ під Windows і Ubuntu.

Область застосування та переваги OpenVPN

Галузь застосування

  • Створення захищених корпоративних мереж. Відстань між вузлами таких мереж немає значення.
  • Захист інформації у відкритих громадських мережах.
  • Підключення до Інтернету кількох хостів через загальний шлюз.
  • Доступ до заборонених веб-ресурсів.

Переваги

  • Все безкоштовно. Більшість із нас не відмовиться від безкоштовного Wi-Fiв кафе або в парку, але трафік, що передається таким з'єднанням, ніяк не захищений від перехоплення. Безкоштовне ПЗ OpenVPN направить його в закритий тунель, тому ваші логіни, паролі та інша секретна інформаціяточно не втече в чужі руки.
  • Щоб зробити мережу захищеною, не потрібно купувати додаткове обладнання.
  • Весь трафік, що передається, стискається, що забезпечує високу швидкістьзв'язку (вище, ніж під час використання IPSec).
  • Гнучкі налаштування ПЗ дозволяють конфігурувати VPN будь-якої складності.
  • Використання кількох надійних алгоритмів шифрування забезпечує дуже високий ступіньзахисту даних.
  • Не потрібно переналаштування або відключення фаєрволів ( мережевих екранів) та NAT (технології перетворення ІП-адрес у мережах TCP/IP).
  • Протокол підтримують усі основні операційні системи.
  • Для встановлення та налаштування програмного забезпеченняне потрібні глибокі знання мережевих технологій, і навіть у нефахівця це займає лічені хвилини.

Налаштування OpenVPN під Windows

Встановлення та налаштування серверної частини

Оскільки більшість з нас користується Windows, знайомство з OpenVPN-технологією почнемо з неї. Отже, відповідний дистрибутив і запустіть інсталяцію.

В списку " Select components to install» (Виберіть компоненти для встановлення) позначте все.

Погодьтеся на встановлення драйвера віртуального мережевого адаптера TAP Windows Adapter V9.

Встановили? Тепер займемося створенням ключів та сертифікатів VPN.

  • Заходимо в каталог %ProgramFiles%/OpenVPN/easy-rsa та запускаємо пакетний файл init-config.bat– він скопіює в цю папку файл vars.bat.sampleу вигляді vars.bat. Надалі пакет команд vars.batзадаватиме змінні для генерації сертифікатів.

  • Після створення vars.batвідкриваємо його за допомогою блокнота та прописуємо у виділених рядках (після «=») будь-які дані. Зберігаємо зміни.

  • Далі запускаємо від адміністратора командний рядок та виконуємо інструкцію переходу до /easy-rsa ( cd%ProgramFiles%/OpenVPN/easy-rsa). Після цього послідовно запускаємо vars.batі clean-all.bat(завантажуємо змінні та видаляємо раніше створені ключі).

  • Виконуємо пакет команд build-ca.bat– цим ми створимо новий основний сертифікат у каталозі %ProgramFiles%/OpenVPN/easy-rsa/keys. Заповнювати дані про ім'я організації та інше, що обведено на скріншоті рамкою, не обов'язково – просто натискати Enter.

  • Запускаємо build-dh.bat- Цим ми створюємо ключ Діффі-Хельмана. У папці /keys з'явиться файл dh1024.pem.

  • На черзі – ключ сервера: виконуємо інструкцію build-key-servermyVPN("myVPN" - це ім'я сервера, можете вказати будь-яке інше). Блок питань, що починається з Country Name, пропускаємо, натискаючи Enter. На два останні запитання - "Sign the certificate?" і наступний відповідаємо «Y».

  • Далі нам потрібно отримати ключ клієнта: виконуємо build-keyuser1(user1 – ім'я клієнта, можете замінити інше). Якщо клієнтських комп'ютерів кілька, повторюємо операцію для кожного, не забувши змінити ім'я. Обведений рамкою блок, як і раніше, пропускаємо.

  • Далі копіюємо з папки / easy-rsa/keysв / OpenVPN/config наступні файли: dh1024.pem, ca.crt myvpn.crt, myvpn.key, user1.key,user1.crt. Останні чотири можуть називатися у вас інакше. Чому, гадаю, зрозуміло.

  • Потім у цій папці створюємо файл конфігурації сервера. Копіюємо наведені нижче директиви в блокнот і, якщо потрібно, змінюємо їх параметри на свої. Зберігаємо документ із розширенням. ovpnта ім'ям « Server».

# Інтерфейс (L3-тунель)
dev tun
# Протокол роботи VPN
proto udp
# Використовуваний порт (можна вказати будь-який вільний)
port 1234
# Список сертифікатів та ключів (зверніть увагу на імена)
ca ca.crt
cert myvpn.crt
key myvpn.key
dh dh1024.pem
# Тип шифрування даних
cipher AES-256-CBC
# Виділяємо діапазон ІП-адрес
server 10.10.10.0 255.255.255.0
# Рівень налагоджувальної інформації
verb 3
# Використовуємо стиск
comp-lzo
persist-key
persist-tun
mssfix
# Задаємо максимальну кількість подій, що повторюються
mute 25
# Кількість одночасно підключених клієнтів (5)
max-clients 5
# Час життя клієнтської сесії
keepalive 10 120
# Видимість клієнтами один одного (дозволена)
client-to-client
# Виділяємо кожному користувачеві 1 адреса
topology subnet
# Встановлюємо затримку перед додаванням маршруту
route-delay
#Вказуємо, якщо хочемо роздавати Інтернет. Адреси DNSпишемо ті, що прописані в налаштуваннях інтернет-підключення.
push «redirect-gateway def1»

push "dhcp-option DNS x.x.x.x"

Додатково про директиви серверного конфігу читайте.

Далі для роздачі інтернету заходимо до каталогу мережевих підключень, відкриваємо властивості інтерфейсу, що дивиться в глобальну мережу, переходимо на вкладку « Доступ», ставимо мітку навпроти « Дозволити іншим користувачам використовувати це підключення.» та вибираємо зі списку мережу віртуального адаптера TAP-Windows adapter V9 – у моїй прикметі це Ethernet 3.

  • Створюємо конфігураційний файл клієнта. Копіюємо наступний текст у блокнот і зберігаємо документ з розширенням.ovpn під назвою «Client».

client
dev tun
proto udp
# IP або доменне ім'я VPN-сервера та порт підключення.
remote x.x.x.x 1234
ca ca.crt
cert user1.crt
key user1.key
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
verb 3

Інші директиви клієнтського конфігу дивіться.

Налаштування клієнтської частини

Встановлюємо додаток на клієнтський комп'ютер. Далі заходимо на серверний, відкриваємо каталог %ProgramFiles%/OpenVPN/config та копіюємо звідти файли ca.crt, Client.ovpn, user1.crt,user1.keyв мережеву папкуабо на флешку. Переносимо в аналогічну папку клієнтської машини.

Підключення

Щоб запустити сервер, клацніть по ярлику OpenVPN GUI на робочому столі. У треї з'явиться іконка сірого кольору. Клацніть правою кнопкою мишки по ній, виберіть в меню команди « Server» та « Підключитися».

У разі вдалого підключення іконка змінить колір на зелений. При невдалому – клацніть у меню « Переглянути журнал»: у ньому буде вказано помилку.

Підключення клієнта виконується у такий же спосіб, тільки замість « Server» вибираємо в меню « Client».

Налаштування OpenVPN під Ubuntu

Починаємо з того, що, як і на Windows, встановлюємо пакет OpenVPN на серверну та клієнтську машину. Директива установки консольної версії через термінал наступна: sudo apt-get install openvpn. За бажанням можна встановити графічні версії пакетів із центру програм Ubuntu.

Однак найважливіший компонент – модуль easy-rsa, призначений для генерації сертифікатів та ключів, у Linux-дистрибутив не входить. Його доведеться встановити окремо, виконавши команду: sudoapt-getinstalleasy-rsa.

Налаштування серверної частини

  • Після інсталяції програми та додаткового модуля створюємо каталог « easy-rsa» у папці /etc/openvpn: sudo mkdir /etc/openvpn/easy-rsa.Копіюємо в нього вміст із місця встановлення: cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa.
  • Потім переходимо в новий каталог: cd /etc/openvpn/easy-rsa/і приступаємо до створення сертифікатів та ключів.

  • Відкриваємо за допомогою консольного редактора nano файл змінних vars (аналог vars.bat у Windows) і імпортуємо в нього ті ж дані, що й у vars.bat, зі зміненими значеннями:

KEY_COUNTRY=UA
KEY_PROVINCE=CA
KEY_CITY=SanFrancisco
KEY_ORG=OpenVPN
[email protected]
KEY_CN=changeme
KEY_NAME=changeme
KEY_OU=changeme
PKCS11_MODULE_PATH=changeme
PKCS11_PIN=1234

  • Копіюємо криптографічний пакет openssl: cpopenssl-1.0.0.cnfopenssl.cnf.
  • Завантажуємо змінні з vars: source ./vars.
  • Видаляємо раніше створені дані: ./ clean-all.
  • Створюємо новий основний сертифікат: ./ build-ca. Блок питань у рамці пропускаємо.

  • Слідом – ключ Діффі-Хельмана: ./ build-dh.
  • За ним – сертифікат сервера: . / build-key-servermyVPN(myVPN, як ви пам'ятаєте, це ім'я, у вас воно може бути іншим). Виділений блок пропускаємо (на скріншоті він скорочений), на 2 останні запитання відповідаємо «Y».

  • Останнім створюємо сертифікат клієнта: ./ build-keyuser1(Замість «user1» можете придумати інше ім'я). При цьому знову пропускаємо виділений на скрині блок і на два останні запитання відповідаємо "Y".

Усі створені ключі та сертифікати зберігаються у підкаталозі / etc/openvpn/easy-rsa/keys. Переміщуємо їх до папки /openvpn: cp -r /etc/openvpn/easy-rsa/keys /etc/openvpn.

На завершальному етапі створюємо файл конфігурації сервера у папці /etc/openvpn: nano /etc/openvpn/server.confта заповнюємо його так само, як заповнювали аналогічний документ на Windows. Єдина відмінність – інші шляхи:

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/myvpn.crt
key /etc/openvpn/keys/myvpn.key

Нарешті, створюємо каталог конфігурації клієнтських машин: mkdir /etc/openvpn/ccd,і запускаємо сервер: Service openvpn start.

Якщо сервер не стартує, ймовірно, в конфігурації допущена помилка. Відомості про проблему можна знайти у документі /var/log/openvpn.log за допомогою команди tail -f /var/log/openvpn.log.

Налаштування клієнтської частини

Після встановлення програми на клієнтську машинупереносимо на неї згенеровані на сервері ключ та сертифікати та створюємо конфіг.

Ключ та сертифікати – ca.crt, user1.crtі user1.key, знаходяться у папці /etc/openvpn/keys. Копіюємо їх на флешку та вставляємо в однойменну папку на комп'ютері клієнта.

Файл конфігурації створюємо за допомогою nano: nano /etc/openvpn/client.conf,та заповнюємо за зразком Windows. Не забудьте прописати в ньому правильні шляхи:

ca /etc/openvpn/keys/ca.crt
dh /etc/openvpn/keys/dh2048.pem
cert /etc/openvpn/keys/user1.crt
key /etc/openvpn/keys/user1.key

Все готово. Для підключення до сервера використовуємо ту саму команду: Service openvpn start.

Інструкція вийшла довгою, але насправді виконання цих дій займає 5-10 хвилин. Більше Детальна інформаціяпро роботу з OpenVPN знаходиться у розділі «» офіційного сайту програми. Спробуйте, і все у вас вийде!

Ще на сайті:

Налаштування OpenVPNна Windows та Ubuntu: що, навіщо і яконовлено: Квітень 24, 2016 автором: Johnny Mnemonic

Отже, дорогий друже, сьогодні ми з тобою навчимося створювати шифровані з'єднання між різними мережамиз урахуванням OpenVPN. Для початку дуй на
http://openvpn.net/ і тягни від туди новий вихідник (як завжди для гурманів) або бінарник (для любителів Windows). Ті, хто не любить особливо морочитися з компілюванням вручну, можуть дмути /usr/ports/security/openvpn (FreeBSD ports) і встановлювати з портів.
Якщо ти, як і я, вдома працюєш з Windows (він все ж таки зручніше і погратися можна, коли робота до смерті набридає 😉), то раджу тобі зайти ще й суду:
http://openvpn.net/gui.html
— це GUI для віндової версії, для MacOS там теж щось було. Отже, завантажили, поставили під Win, встановлюємо під FreeBSD. Для тих, хто вперше вирішив зібрати щось ручками, нагадую традиційні команди.

#tar –zxvf openvpn-2.0_rc21.tar.gz
#cd openvpn-2.0_rc21
#./configure
#make
#make install
#make clean

Якщо для успішного складання не вистачає якихось пакетиків, або спробуй вказати їх через опції /configure. Для зручної роботиз конфігуратором, я зазвичай використовую або два термінали або дві сесії Putty. На одному запускаю:

#./configure -help | less

А на іншому набиваю різні прапори. Так, з установкою начебто розібралися… Переходимо до куди більш цікавої та складної частини, а саме створення конфігураційних файлів та різноманітних ключів.

Модифікація BSD

Для того, щоб все запрацювало, необхідно перезбирати ядро ​​з такими опціями:

options IPSEC
options IPSEC_ESP

Редактим конфіг

Для роботи серверної частини нам знадобиться зовсім небагато. Якщо хочеш почитати додаткову інформацію:

Якщо хочеться якнайшвидше рватися в бій, то просто повторюй за мною! Ух ти, вже в риму писати почав! Так ось, редагуємо конфіг:

#vi /usr/local/etc/openvpn/office.conf

Прописуємо туди таке:

daemon openvpn # просимо наш openvpn сервер стати демоном, раджу вставити цей рядок тільки після того, як все запрацює.

dev tun # використовуємо цей інтерфейс

server 10.1.0.0 255.255.255.0 #вкажемо ip сервера в мережі vpn

push «route 10.1.0.0 255.255.255.0» #– ця штука додасть маршрут vpn мережі
push «route 194.1.1.0 255.255.255.0» #– ця додасть клієнтам маршут сітки за vpn сервером
push «route 192.168.0.0 255.255.255.0» #- це маршрут до твоєї домашньої мережі

client-to-client #закоментуй це, якщо не хочеш, щоб vpn клієнтибачили один одного

tls-server #вказуємо, що це серверна конфігурація

dh /etc/ssl/dh2048.pem # це сертифікат для шифрування установки з'єднання
ca /etc/ssl/CA_cert.pem # Це серверні сертифікати
cert /etc/ssl/certs/Cserv.pem #
key /etc/ssl/keys/Kserv.pem #

proto tcp-server #Скажемо серверу працювати за протоколом TCP
port 5000 # На порту 5000

user nobody #Користувач, з-під якого стартує vpn сервер (не ставь root!)
group nobody #Ну а це група

comp-lzo #Включаємо стиск

persist-tun #Використання того ж інтерфейсу та ключа при рестарті сервера
persist-key

tls-auth /etc/ssl/ta.key 0 # Захист від DOS атак
keepalive 10 120 # Час життя неактивної сесії

verb 4 # Кількість налагоджувальної інформації (від 0 до 9)

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

Windows OpenVPN client

Знаєш, цією штукою можна користуватися навіть на dialup-му з'єднанні, що для мене не маловажно! Скинув ключі та установник на Flash-ку і не турбуйся більше, навіть якщо ти в гостях у друга п'єш пиво і їж м'ясо, а тут начальник подзвонить і почне лаятися, що у них щось не працює, піднімаєш клієнта у друга, тільки не здогадайся копіювати ключі йому на жорстокий. Конфіг скопіюй, а шляхи поміняй до клієнтських ключів на флешці, ось. Ах, так… Поїхали далі.

Тиснеш ПУСК-Програми-OpenVPN… Входь у папку з конфігураційними файлами. Створи home.ovpn і напиши або скопіюй туди цей конфіг:

client #Говоримо, щоб клієнт забирав інформацію про маршрутизацію з сервера (згадай # push опції)

remote ip-a #Замість ip-a впиши реальний ip свого видимого в інтернеті сервера

tls-client # Це конфігурація клієнта

ns-cert-type server #Це ще один захист, цього разу від man in the middleатаки.

«H:\config openVPNCA_cert.pem» # Це якраз шляхи ключів (Вони у мене на флешці)

cert «H:\config openVPN\chome.pem»

key «H:config openVPNkhome.pem»

tls-auth «H:config openVPNta.key» 1 #Захист від DOS. Тут на відміну від сервера стоїть одиниця. Не переплутай, Кутузове! 😉

proto tcp-client #Клієнт працює за TCP
port 5000 #З'єднується з 5000 портом

comp-lzo # Це ти вже знаєш

tun-mtu 1500 #Просто скопіюй, якщо не знаєш мереж, я не зможу розповісти про це в двох рядках
tun-mtu-extra 32
mssfix 1450

Так, конфіг готовий. Перейдемо до більш цікавого заняття, генерації ключів та сертифікатів.

OpenSSL рулює

Топай у /etc/ssl. Там створи 2 файли: index.txt і serial. Тепер запишемо дещо в serial:

#cd /etc/ssl
#touch index.txt
#touch serial
#echo "01" > ./serial

Тепер створимо пару папок:

#mkdir certs
#mkdir keys
#mkdir crl

А тепер, трохи подбаємо про безпеку і змінимо свій openssl.cnf. Я розумію, що в тебе очумілі ручкиТому не забудь зробити копію цього файлу, так, на будь-який пожежник. 😉

#cp ./openssl.cnf ./ openssl.cnf.backup
#vi openssl.cnf

Знайди параметр «default_days» і вистав його рівним 9125 (це кількість днів до того, як наші сертифікати перестануть працювати). І в кінець конфіга підпиши ось що:
[server]
basicConstraints =CA:FALSE
nsCertType =server

Після того, як ти створиш сертифікати, ця штука не дасть будь-яким хлопцям, які читають цей журнал, провести просту «man in the middle» атаку. Якщо забудеш прописати налаштування «ns-cert-type server» в конфігураційному файліпрацювати не буде.

Ще трохи терпіння і ти зробиш те, чого так довго чекав. ТИ ЗРОБИШ ЦЕ!

Повернемося на правдиві шляхи:

#openssl req –new –x509 –keyout private/CA_key.pem –out CA_cert.pem

Введи пароль і не забудь його.

#openssl req –new –nodes –keyout keys/Kserv.pem –out req/Rserv.pem

Для цього рядка важливо, щоб параметр Organization Name збігався з тим, що ти вказав під час генерації CA_cert.pem.

#openssl ca -extfile /etc/ssl/openssl.cnf -extensions server -out certs/Cserv.pem -infiles req/Rserv.pem

Тебе поставить пару запитань, на які не думаючи довго відповідай «y».
Це було для сервера. Тепер повторимо все те саме, але для клієнта.

#openssl req –new –keyout keys/Khome.pem –out req/Rhome.pem
#openssl ca –out certs/Chome.pem –infiles req/Rhome.pem

Не забудемо про ta.key:

#openvpn-genkey-secret ta.key

Так, і наостанок створюємо Diffie-Hellman (фіг знає як це російською мовою написати) файл

#openssl dhparam –out dh2048.pem 2048

Отримавши повідомлення про його довге створення, йдемо пити пиво (у мене і справді майже 20 хвилин створювався).

Забираємо наші сертифікати

Все, приймай мої вітання, ти все зробив! Тепер залишилося лише забрати із собою:
- CA_cert.pem
- Chome.pem
- Khome.pem
- ta.key

Для цього або копіюємо на дискету:

#mkdir /mnt/floppy
#mount -t msdos /dev/fd0a /mnt/floppy
# cp /etc/ssl/certs/Cnode.pem /mnt/floppy
#cp /etc/ssl/keys/Knode.pem /mnt/floppy
#cp /etc/ssl/CA_cert.pem /mnt/floppy
#cp etc/ssl/ta.key /mnt/floppy
#umount -f /dev/fd0a

Або якщо ти відважний чорт, а значить робиш все рядок за рядком відразу на сервері, то використовуєш sftp клієнт і забираєш все з сервака самостійно.

Ракета пішла

Тепер запускаєш OpenVPN сервер:

#openvpn –config /usr/local/etc/openvpn/office.conf

Створи невеликий openvpn.sh в /usr/local/etc/rc.d для автоматичного запуску під час перезавантаження:

case «$1» in
start)
echo -n «OpenVPN2 Starting… «
/usr/local/sbin/openvpn || exit 1
;;
stop)
echo -n "Shutting down OpenVPN2 ... "
/usr/bin/killall openvpn &>/dev/null || exit 1
;;
reload | restart)
$0 stop && sleep 1 && $0 start || exit 1
;;
*)
echo «Usage: $0 (start|stop|reload|restart)»
exit 1
esac

Фаєрвол

Прописуєш правило для ipfw, щоб дозволити коннект на наш з тобою демон:

#ipfw –q add pass tcp from any to me 5000
#ipfw –q add pass tcp from any to any via tun0

Так само можеш додати це до свого фаєрволу скрипту.

Останній штрих

Для коннекту з Windows-клієнта використовуєш GUI, як прописати його в автозавантаження для зручності, думаю, і сам розберешся.

Підведемо підсумки

Отже, ти щойно налаштував з'єднання між сервером-маршрутизатором, який захищає твою сітку десь там і своєю домашньою мережею. Це великий крок. Ти ще на один левів підняв своє мистецтво адміністрування. Ще раз не поскуплюсь і привітаю тебе. Знаєш, є розумні люди, які не радять у такий спосіб створювати з'єднання між мережами. Ми додали з тобою правило, що тільки дозволяє підключатися до твого сервера і безперешкодно бігати між двома мережами. Якщо ти вирішиш збільшити кількість клієнтів OpenVPN сервера, тобі доведеться додатково налаштувати і фаєрволінг з безпекою, а чим більше інтерфейсівна маршрутизаторі, тим складніше стежити. Крім того, ти щойно виконав розширення адресного простору своїх мереж. Цього таки не люблять ці грамотні в питаннях безпеки дядька. Ну та гаразд, це вже філософські байки, якщо хочеш, користуйся. І насамкінець, відправляю тебе на
http://openvpn.net/ , там багато документації, з якою я на твоєму місці ознайомився б. Ну все, мені час. Якщо що, адреса все той же:
. Чекаю відгуків та пропозицій.

3. Увійдіть до та завантажте архів файлів конфігурації.

4. Розархівуйте архів із файлами конфігурації.

5. Запустіть ярлик OpenVPN GUI з робочого столу.

6. У треї Windows (у нижньому лівому куті робочого столу) знайдіть іконку програми OpenVPN GUI (монітор із замком). Можливо знадобиться розгорнути весь список програм у треї.

7. Правою кнопкою миші натисніть іконку OpenVPN GUI та виберіть пункт “Імпорт конфігурації”.

8. Імпортуйте розархівовані конфігураційні файли по одному. Файли конфігурації із закінченням _udp – це протокол UDPшвидкість вище, а пінг нижче.

9. Клацніть правою кнопкою миші на іконку OpenVPN GUI в треї, виберіть потрібний серверта натисніть підключитися.

10. Жовта іконка OpenVPN GUI говорить про процес підключення, зелена іконка говорить про вдале підключення та захист.

11. Щоб вибрати інший сервер, потрібно спочатку відключитися від підключеного і лише після цього вибрати і підключитися до іншого сервера.

12. Щоб відключити від сервера, натисніть іконку OpenVPN GUI в треї, виберіть виділений сервер, потім виберіть “вимкнутись”.

13. Якщо необхідно видалити файли конфігурації, знайти їх можна по пусті: C:\Users\***ім'я користувача***\OpenVPN\config