Організація каналів між офісами за допомогою openvpn з додатковою пральний захистом - записки

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 з офіційного сайту відповідно до розрядністю системи.


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


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

В директорії "C: \ OpenVPN" слід відразу ж створити додатково папку ssl (тут ми будемо зберігати ключі аутентифікації) папку ccd (тут будуть знаходиться конфігурація налаштувань сервера для клієнта).
В папці easy-rsa створюємо файл vars.bat. даний пакетний файл буде задавати змінні для сеансу генерації сертифікатів, в тій частині що стосується організації і розташування заповнюємо своїми даними.
Запускаємо командний рядок від імені адміністратора.
Переходимо по шляху C: \ OpenVPN \ easy-rsa, набравши для переходу в командному рядку команду

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


в результаті у нас в папці ssl з'явиться файл dh1024.pem.
Створюємо серверний ключ, для цього вводимо команду:
де "ServerVPN" це назва нащего VPN сервера, як в моєму випадку,
Важливо! Вказуємо параметр "commonname" - пишемо ім'я нашого VPN сервера. Всі інші параметри залишаємо за замовчуванням, на всі питання відповідаємо yes

в результаті у нас в папці ssl з'являться файли ServerVPN.crt. ServerVPN.csr. ServerVPN.key.
Приступаємо до формування клієнтських ключів.
де "UserVPN_1" ім'я нашого клієнта.
Важливо! Вказуємо параметр "commonname" - пишемо ім'я нашого VPN клієнта (UserVPN_1). Всі інші параметри залишаємо за замовчуванням, на всі питання відповідаємо yes

В результаті у нас в папці ssl з'являться файли UserVPN_1.crt. UserVPN_1.csr. UserVPN_1.key.
Якщо у вас кілька клієнтів, то повторюємо формування ключів; не забуваючи кожного клієнта привласнювати свої імена
Генерація ключа tls-auth (ta.key) для аутентифікації пакетів, для цього переходимо в кореневу папку OpenVPN:
і виконуємо команду:
в результаті в папці ssl плучілось файл ta.key.
Приступаємо до створення конфіга сервера. В папці config створюємо файл OpenVPN.ovpn:
В папці ccd створюємо файл без розширення і називаємо його точно, як клієнта UserVPN_1. відкриваємо його блокнотом і пишемо наступне:
Створюємо конфиг клієнта.
Встановлюємо на клієнті 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.

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

Але у цього способу є маленький недолік: після включення цієї служби і підключення до нашого VPN-каналу на значку мережевого підключення повисне червоний хрест до відключення VPN.
При цьому всі мережі працюють в штатному режимі. Особисто мене цей хрест дратує і іноді збиває з пантелику.
Є другий спосіб як зробити видимими внутрішні IP мереж наших сервера і клієнта.
Для цього заходимо в реєстр, відкриваємо гілку реєстру:
Знаходимо параметр і міняємо значення: IPEnableRouter типу REG_DWORD значення 1.

Не забуваємо перезавантажити машину, щоб настройки вступили в силу!
Це потрібно зробити і на сервері, і на клієнті.
Отже ми пінгуем наші мережі по внутрішнім IP, а так як у нас і сервер і клієнт для своїх мереж є шлюзами, то і машини з мережі 1 можуть бачити машини з мережі 2 і навпаки. тобто Користувач С_ОФ1 (192.168.0.50) може бачити розшарені папки Користувача С_ОФ2 (172.17.10.50) і навпаки.
Якщо сервер і клієнт ні бути шлюзами для своїх мереж, в тому випадку доведеться прописувати маршрути руками.
Приклад для С_ОФ1:
Приклад для С_ОФ2:
в моєму випадку цього не знадобилося.
Для автоматичного запуску сервера і клієнта нам потрібно включити службу OpenVPN Service

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

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