Ipsec l2tp vpn сервер - gentoo wiki

Багато операційних систем підтримують L2TP / IPsec VPN "з коробки". Об'єднуючи сервіси конфіденційності і аутентифікації IPsec (безпека Інтернет-протоколу), мережеве туннелирование протоколу тунелювання другого рівня (L2TP) та ідентифікацію користувача через pppd, адміністратори можуть створювати VPN-мережі на безлічі різнорідних систем. Це дозволяє налаштувати VPN на Android, Windows, Linux, MacOS та інших операційних системах без використання будь-якого комерційного ПЗ.

В цьому підручнику не охоплює установку DHCP, RADIUS, Samba або Інфраструктури Відкритих Ключів (PKI). Воно також зовсім не пояснює, як налаштовувати Linux-клієнтів, хоча цей крок може бути досить легко отриманий з керівництва. Буде висвітлена частина конфігурації Windows-клієнтів з метою усунення неполадок в налаштуванні сервера.

Умовні позначення

У цьому керівництві будуть використані наступні умовні позначення (приклад налаштувань):

  • Домен - example.com
  • Ім'я сервера - vpn.example.com
  • Файл сертифіката CA - ca.crt
  • Сертифікат сервера - vpn.example.com.crt
  • Ключ сервера - vpn.example.com.key
  • Сертифікат клієнта - client.example.com.crt
  • Ключ клієнта - client.example.com.key

Перший і найскладніший рівень для настройки - IPsec. Зауважимо, що IPsec - однорангова мережа, таким чином, в її термінології клієнт називається ініціатор. а сервер - відповідач.

Windows використовує IKEv1. Існують 3 реалізації IPsec в Portage: ipsec-tools (racoon), LibreSwan і strongswan.

У наступних розділах пояснюються різні конфігурації. Для кожного варіанта документується

Варіант 1: ipsec-tools (racoon)

замітка
net-firewall / ipsec-tools повинен бути скомпільовано з прапором nat. якщо або сервер знаходиться за NAT, або необхідна підтримка клієнтів, які перебувають за NAT.

ipsec-tools найменш функціональний, але для тих, хто прийшов з * BSD, він може бути ближчий. Однак, на відміну від * BSD, Linux не використовує окремий інтерфейс для IPsec.

Після установки ipsec-tools необхідно створити кілька файлів. Для початку створимо каталоги, в яких вони будуть зберігається:

root # mkdir / etc / racoon / certs

root # mkdir / etc / racoon / scripts

Налаштування PSK в ipsec-tools

user $ dd if = / dev / random count = 24 bs = 1 2> / dev / null | hexdump -e '24 / 1 "% 02x" "\ n" '

Кожен запис в PSK файлі складається з ідентифікатора і ключа. Windows ідентифікує себе за допомогою повного імені домену (FQDN). Ключ повинен бути позначений як рядок або шістнадцяткове число, що починається з 0x. У будь-якому випадку, вміст (сам ключ) - повністю у виборі адміністратора:

У файлі racoon.conf PSK файл позначається через опцію path pre_shared_key.

Файл /etc/racoon/racoon.confІспользованіе racoon з PSK

Налаштування ipsec-tools з використанням сертифіката

Скопіюйте ca.crt. vpn.example.com.crt і vpn.example.com.key в / etc / racoon / certs. Переконайтеся, що vpn.example.com.key недоступний для всіх користувачів.

Далі, поновіть конфігурацію у файлі racoon.conf. додавши ці файли в розділі remote anonymous.

Файл /etc/racoon/racoon.confІспользованіе сертифікатів з racoon

Вирішення проблем ipsec-tools

Коли виникають проблеми, цей розділ може дати кілька вказівок в їх вирішенні.

Створення політик безпеки і NAT

Опція generate_policy on; повинна змусити racoon створювати для нас потрібну Політику Безпеки. Однак, в присутність NAT (хоча б, якщо сервер знаходиться за NAT) він зробить це зовсім не так, як хотілося б. Таким чином, якщо трафік не проходить по тунелю, політика безпеки повинна бути визначена вручну.

Політика створюється у файлі /etc/ipsec-tools.conf.

Варіант 2: LibreSwan

LibreSwan - відгалуження від Openswan (який сам є відгалуженням від FreeS / WAN). LibreSwan дійсно роздвоївся зі збереженням справжніх розробників Openswan, однак після того, як вони покинули Xelerance, суперечка про назву "Openswan" переріс в судовий позов, після якого було прийнято ім'я LibreSwan.

Обхід NAT встановлений за замовчуванням в файлі конфігурації LibreSwan, таким чином ніяких особливих етапів настройки не потрібно.

Налаштування PSK в LibreSwan

Потім створіть /etc/ipsec.d/vpn.example.com.conf.

Налаштування LibreSwan з використанням сертифіката

LibreSwan вимагає, щоб Network Security Services (NSS) були правильно налаштовані і використані для управління сертифікатами. Щоб було простіше налаштувати, необхідно створити пакет PKCS # 12, що містить секретний ключ сервера, його сертифікат і сертифікат ЦС.

user $ openssl pkcs12 -export -certfile ca.crt -inkey vpn.example.com.key -in vpn.example.com.crt -out /etc/ipsec.d/vpn.example.com.p12

Потім пакет може бути імпортований в базу даних NSS:

root # cd /etc/ipsec.d

root # pk12util -i шлях до пакету /vpn.example.com.p12 -d.

Файли LibreSwan будуть посилатися на псевдонім імпортованих об'єктів. Використовуйте certutil -L -d. і certutil -K -d. щоб його дізнатися.

У наведеному прикладі vpn.example.com використаний як псевдонім, отриманий за допомогою команди certutil -K -d.

Тут vpn.example.com - псевдонім, отриманий за допомогою команди certutil -L -d.

Варіант 3: strongSwan

strongSwan - це відгалуження від FreeS / WAN (хоча велика частина коду була замінена).

Що стосується strongSwan 5.0, обхід NAT є автоматичним, нічого налаштовувати не потрібно.

strongSwan НЕ створює файл ipsec.secrets. тому його потрібно створити:

root # touch /etc/ipsec.secrets chmod 664 /etc/ipsec.secrets

Налаштування PSK в strongSwan

Далі відредагуйте /etc/ipsec.conf як показано нижче:

Коли і left. і right задані як% any. strongSwan має на увазі, що л окальний комп'ютер - l eft.

Налаштування strongSwan з використанням сертифіката

Сертифікати та ключі повинні бути скопійовані в потрібну папку:

root # cp ca.crt /etc/ipsec.d/cacerts

root # cp vpn.example.com.crt /etc/ipsec.d/certs

root # cp vpn.example.com.key /etc/ipsec.d/private

root # chown -R ipsec: /etc/ipsec.d

Нарешті, поновіть файл /etc/ipsec.conf як показано нижче:

Як і раніше, коли і left. і right рівні% any. strongSwan має на увазі, що л окальний комп'ютер - l eft.

Пошук та усунення несправностей зі strongSwan

Наскрізний прохід IPsec / пошкоджений NAT

У попередніх версіях strongSwan наскрізний прохід IPsec не видався робочим. Він повертав "can not respond to IPsec SA request because no connection is known" або (зі складним редагування конфігураційного файлу) помилку INVALID_HASH_INFORMATION. Такого не може бути зі strongSwan версії 5.0 і вище.

Пошук та усунення несправностей зі стандартним IPsec

З IPsec нелегко мати справу. Цей розділ дає кілька вказівок на загальні проблеми і помилки.

Сервер за NAT

відкриття портів

Необхідно відкрити 2 порту:

  • UDP port 500 (for ISAKMP)
  • UDP port 4500 (for NAT Traversal)

Переконайтеся, що відправили це VPN сервера.

Також такі Протоколи Інтернету (не псувати) потребують дозволу:

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

Наскрізний прохід IPsec / пошкоджений NAT

Багато роутери мають опцію "IPsec pass-through", яка може позначати одне з двох:

  1. Спотворювати пакети IPsec способом, несумісним з обходом NAT IPsec
  2. Дозволяти всім IPsec пакетам без змін проходити через роутер.

Якщо IPsec pass-through означає (1), відключіть цю опцію. Якщо він означає (2), то включіть її.

На жаль, існують роутери, які кидають IPsec трафік, навіть якщо порти дозволені, і підтримують тільки опцію (1). Для тих, у кого такий роутер, є 3 варіанти:

  1. Оновити прошивку, якщо буде доступна його новіша, правильно працює версія.
  2. Відкрити звіт про помилку / несправність з моделлю роутера, якщо він не застарів
  3. Знайти інший роутер. За описами, роутери Linksys і D-link працюють правильно.

Це керівництво спочатку було написано з таким роутером (Zyxel P-330W), і єдиним доступним варіантом був (3).

Ці операційні системи автоматично не підтримують IPsec / L2TP сервера за NAT. Див. KB926179 для змін в реєстрі, які змушують їх підтримувати його.

Обмеження Pre-Shared keys (PSK)

Другий рівень, протокол тунелювання другого рівня (L2TP), налаштовується набагато простіше. Як і IPsec, L2TP - спеціальний робочий протокол. Клієнтська сторона називається L2TP Access Concentrator або LAC, а серверна - L2TP Network Server або LNS.

попередження
L2TP абсолютно небезпечний і не повинен бути доступний поза з'єднання IPsec

При використанні iptables, застосуєте наступні правила, щоб заблокувати всі з'єднання L2TP поза ipsec:

root # iptables -t filter -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport l2tp -j ACCEPT

root # iptables -t filter -A INPUT -p udp -m udp --dport l2tp -j REJECT --reject-with icmp-port-unreachable

root # iptables -t filter -A OUTPUT -p udp -m policy --dir out --pol ipsec -m udp --sport l2tp -j ACCEPT

root # iptables -t filter -A OUTPUT -p udp -m udp --sport l2tp -j REJECT --reject-with icmp-port-unreachable

Використання xl2tpd

Для використання сервера RADIUS або DHCP, залиште відключеними опції ip range і local ip. Якщо з'єднання нестабільно, спробуйте додати length bit = yes в розділ lns default. Щоб не використовувати PPP аутентифікацію, замініть require authentication = yes на refuse authentication = yes.

Створіть файл опцій:

Використання rp-l2tp

Налаштовувати rp-l2tp просто:

Заключний рівень для настройки - Протокол точка-точка (PPP). Пакет для установки - net-dialup / pptpd.

root # emerge --ask net-dialup / pptpd

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

попередження
/ Etc / ppp / chap-secrets містить незашифровані паролі, тому переконайтеся, що тільки root може виконувати читання або запис в цей файл

Якщо на комп'ютері запущено сервер RADIUS, то pppd може використовувати його. Переконайтеся, що net-dialup / ppp зібраний з USE-прапором radius. Потім додайте plugin radius.so до опцій PPP. Налаштування RADIUS і pppd знаходиться за межами цього керівництва.

Пошук та усунення несправностей клієнта

Windows: Правильна установка сертифіката (для користувачів PKI)

Сертифікат повинен бути запакований в пакет PKCS12. Це може бути зроблено за допомогою openssl або gnutls:

user $ openssl pkcs12 -export -certfile ca.crt -inkey client.example.com.key -in client.example.com.crt -out client.example.p12

user $ certtool --load-ca-certificate ca.crt --load-certificate client.example.com.crt --load-privkey client.example.com.key --to-p12 --outfile client.example.com .p12

Код Імпорт ключа в Windows

Розгорніть Сертифікати. Виберете будь-яку папку (без різниці яку), клацніть правою кнопкою миші, виберете "Усі завдання", потім "Імпорт.". Тільки зараз дотримуйтесь вказівок майстра, але на останньому кроці переконайтеся, що вибрано "Автоматично вибрати сховище на основі типу сертифіката".

Windows: Мережеві помилки RAS

Помилка 766: Сертифікат не може бути знайдений

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

Помилка 810: VPN з'єднання не завершено

При використанні ipsec-tools (racoon) в системному балці може з'явиться наступне повідомлення:

Код Повідомлення про помилку в системному балці при використанні ipsec-tools / racoon

Це означає, що сертифікат був неправильно імпортовано, або пакет p12 відсутня в сертифікаті ЦС. Переконайтеся, що імпортували ключ через MMC і вибрали "Автоматично вибрати сховище на основі типу сертифіката" в кінці процесу імпорту.

XP SP2 і вище: Помилка 809: Сервер не відповідає (Сервер за NAT)

Windows XP SP2 і Vista замовчуванням не будуть підключатися до сервера за NAT. Потрібно злом реєстру. Окремі виправлення потрібні для Windows XP і Windows Vista.

Ця помилка з'являється тільки при використанні PKI. Вона означає, що subjectAltName не відповідає серверу, до якого підключається клієнт. Таке часто трапляється при використанні динамічного DNS, - сертифікат має внутрішнє ім'я, а не зовнішнє. Додайте до сертифіката зовнішнє ім'я або вимкніть опцію "Перевірити атрибути імені та використання у сертифіката сервера" в настройках з'єднання: Безпека -> Додаткові параметри -> L2TP.

Помилка 741: Локальний комп'ютер не підтримує необхідний тип шифрування

Windows буде намагатися реалізувати MPPE (слабке) шифрування, коли

тоді відбувається дана помилка.

замітка
З'єднання все ж так чи інакше захищене шифруванням IPsec, відключиться тільки потреба в MPPE.

Mac OS X клієнти повинні бути вимогливі до рекомендацій, з якими вони погоджуються. Зокрема:

Mac OS X НЕ буде підключатися, якщо subjectAltName не збігається з назвою сервера, з яким він з'єднується. На відміну від Vista, ця перевірка не може бути відключена.

Також, Mac OS X не підключений, якщо сертифікат сервера містить поля "розширеного ключа" (EKU) (крім застарілих ikeIntermediate). Зокрема, при використанні сертифікатів з утиліти easy-rsa OpenVPN. додаються EKU "TLS WWW Сервер" або "TLS WWW Клієнт", тому такі сертифікати не будуть працювати. Однак, вони все ж можуть бути використані Mac OS X клієнтом, оскільки його цікавлять тільки сертифікати сервера.