Використання IPSEC в Linux при налаштуванні з’єднань VPN типу «мережа-мережа» та «точка-точка»

Багато організацій по всьому світу для зв'язку своїх окремих офісів використовують різноманітні методи їхнього фізичного з'єднання. Це можуть бути як виділені цифрові лінії, так і VPN — Virtual Private Networks, які значно дешевші від їх фізичних аналогів. Використовуючи, загалом, самі підходи, як і виділені лінії, VPN можуть об'єднувати кілька локальних мереж в одну і шифрувати трафік для приховування інформації, що передається. У разі використання шифрування в технології VPN зазвичай застосовуються відкриті стандарти. При цьому трафік передається поверх IP і використовує як транспортний рівень датаграми.
Технічно організація VPN може бути виконана як програмними засобами, і апаратними. У Linux зокрема знайшла застосування технологія FreeS/Wan, яка використовує стандартну реалізацію протоколу безпеки IPSEC(Безпечний IP — Internet Protocol Security). Ці рішення, реалізовані як програмно, і апаратно, функціонують як маршрутизатори кінцях VPN-соединений. При передачі клієнтом пакета він пересилає його на цей спеціалізований маршрутизатор, який додає до пакета заголовок автентифікації (Authentication Header, (AH)). Після кодування цих даних та додавання до них інструкцій з декодування та обробки вони передаються на інший кінцевий спеціалізований маршрутизатор, що приймає ці пакети. Після прийому пакета кінцевий маршрутизатор розкодує його, відкидаючи заголовок, і передає пакет кінцевому користувачеві за місцем призначення.
Якщо використовується шифрування між мережами, то вузол у локальній мережі отримує пакет вже розшифрованим і розпочинає його звичайну інформаційну обробку. Таким чином, при використанні шифрування між мережами, весь процес кодування та декодуваннястає прозорим для кінцевого вузла мережі.
У VPN застосовуються кілька рівнів автентифікації та шифрування, тому вони досить безпечні і ефективні для того, щоб об'єднати безліч віддалених вузлів в єдину віртуальну мережу.
Одна з реалізацій стандарту VPN – це Internet Protocol SECurity, IPsec, який досить надійно задовольняє потреби різноманітних клієнтів щодо підключення їхніх філій або віддалених користувачів до своїх мереж.
Загальні відомості про IPSEC
IPSEC, в загальному випадку, служить для підтримки безпечних з'єднань між вузлами та мережами у глобальній мережі Інтернет. Він може працювати в конфігурації "вузол-вузол" (один комп'ютер з'єднується з іншим) або "мережа-мережа" (одна локальна/глобальна мережа з'єднується з іншою). Реалізація IPsec використовує протокол обміну ключами в Інтернеті (Internet Key Exchange, IKE), розроблений комітетом з технічного розвитку Інтернету (Internet Engineering Task Force, IETF) для взаємної перевірки автентичності та відповідності параметрів безпеки між системами або мережами, що підключаються.
Процес з'єднання IPsec поділяється на два логічні етапи. На першому етапі вузол IPsec встановлює підключення до віддаленого вузла чи мережі. Віддалений вузол/мережа перевіряє облікові дані вузла, що запитує, і обидві сторони узгодять спосіб перевірки автентичності, що застосовується в з'єднанні. Зазвичай для перевірки автентичності вузла IPSec використовується алгоритм із попереднім загальним ключем. У випадку з IPsec-з'єднанням із застосуванням попереднього загального ключа обидва вузли повинні використовувати один ключ, і тоді вони зможуть перейти до другого етапу встановлення з'єднання.
Другий етап з'єднання IPsec між вузлами IPSec створюється умовним порівнянням безпеки (security association, SA).У базу даних SA вноситься інформація про конфігурації — метод шифрування, способи обміну секретними ключами сеансу та інших параметри. Цей етап і керує з'єднанням IPsec між вузлами та мережами, рознесеними у просторі глобальної мережі.
Розглянемо реалізацію протоколу IPSEC з прикладу дистрибутива CentOS Linux. Для розгортання IPSEC на всіх машинах мережі (у разі конфігурації "вузол-вузол") або маршрутизаторах (у разі конфігурації "мережа-мережа") необхідно встановити відповідні пакети, що керують конфігурацією IPSEC. У ці пакети повинні входити базові бібліотеки, демони та конфігураційні файли, що допомагають налаштувати з'єднання IPsec, в тому числі - /lib/libipsec.so - бібліотека, що містить інтерфейс управління довіреним ключем PF_KEY між ядром Linux і реалізацією IPsec, що використовується в CentOS Linux. При цьому:
- /sbin/setkey — налаштовує керування ключами та атрибути безпеки IPsec у ядрі. Ця програма підпорядковується демону racoon, що управляє ключами. Додаткову інформацію про setkey можна знайти в man setkey (8).
- /sbin/racoon — демон управління ключами IKE, управляє обміном ключами та зіставленням безпеки між комп'ютерами, що реалізують IPsec. Налаштувати цей демон можна, відредагувавши файл /etc/racoon/racoon.conf. Щоб отримати додаткові відомості про racoon, зверніться до сторінки man racoon (8).
- /etc/racoon/racoon.conf — файл конфігурації racoon , в якому налаштовуються різні параметри з'єднання IPsec, у тому числі методи автентифікації та алгоритми шифрування. Знову ж таки, вичерпні дані з цього питання можуть бути отримані при вивченні висновку команди man racoon.conf(5).
Налаштування IPSEC при конфігурації «вузол-вузол»
За допомогою IPsec можна зв'язатиодну робочу станцію з іншого, організувавши з'єднання «вузол-вузол». У з'єднанні такого типу для створення безпечного тунелю використовується мережа, до якої підключено обидва вузли. Для створення з'єднання IPsec вузлам потрібне лише постійне підключення до Інтернету або іншої мережі, що постійно працює.
Для з'єднання «вузол-вузол» потрібні такі дані:
Розглянемо варіант, коли два хости встановлюють з'єднання один з одним. При цьому вони будуть використовувати спільний ключ з ім'ям my_key та демон racoon для автоматичного створення та обміну ключем автентифікації. Ім'я з'єднання матиме вигляд ipsec0.
Нижче наведено файл ifcfg для робочої станції, за допомогою якої встановлюється з'єднання IPsec "вузол-вузол" з іншою робочою станцією. Тоді вигляд файлу /etc/sysconfig/network-scripts/ifcfg-ipsec0 матиме вигляд:
Нижче наведено файл із загальним ключем ( /etc/sysconfig/network-scripts/keys-ipsec0 ), який потрібен для обох комп'ютерів, для взаємної перевірки. Вміст файлу повинен збігатися на обох комп'ютерах, а доступ до нього повинен мати тільки користувач root. IKE_PSK=my_key
Для обмеження доступу до файлу keys-ipsec0 можна виконати команду:
Ключ автентичності можна змінити в будь-який час, для цього на обох комп'ютерах потрібно відредагувати файл keys-ipsec0 . Для встановлення з'єднання обидва ключі обов'язково повинні збігатися!
директива remote X.X.X.X:
у стандартній конфігурації IPsec у CentOS Linux використовується режим автентифікації, що дозволяє мати різні IPsec-з'єднання з безліччю вузлів;
визначає алгоритм шифрування, що використовується під час перевірки автентичності. За замовчуванням використовується стандарт потрійного шифрування даних (Triple Data Encryption Standard, 3DES);
вказуєалгоритм розрахунку хеша, що використовується на першому етапі зв'язку;
визначає спосіб автентифікації, використовуваний за узгодженні вузлів.
вказує номер групи Діффі-Хелмана для вибору динамічно створюваних ключів сеансу. За замовчуванням використовується група із 1024 біт.
Файли /etc/racoon/racoon.conf також повинні бути однаковими на всіх вузлах IPsec, за винятком оператора include "/etc/racoon/X.X.X.X.conf" . Цей оператор (і файл теж) створюється під час активації тунелю IPsec. Нижче наведено типовий файл racoon.conf, якщо встановлено з'єднання IPsec.
Опис усіх параметрів конфігураційних файлів виходить за рамки цієї статті і може бути взято з відповідних підручників.
З'єднання можна встановити, або перезавантаживши комп'ютер, або виконавши на кожному вузлі від імені root наступну команду: /sbin/ifup ipsec0 .
Для перевірки IPsec-з'єднання можна запустити утиліту tcpdump. При цьому пакет повинен містити заголовок AH та ESP. ESP означає, що шифрування працює. Наприклад:
Налаштування IPSEC для конфігурації «мережа-мережа»
За допомогою IPsec підключаються цілі мережі до інших мережних сегментів, організовуючи міжмережеву взаємодію. Для цього потрібно встановити маршрутизатори IPsec у кожній мережі так, щоб трафік вузла однієї мережі прозоро оброблявся та досягав вузла іншої мережі. У таких мережах повинні працювати маршрутизатори IPsec, які перевіряють справжність і з'єднують ці мережі через безпечний тунель трафіком, що проходить через Інтернет або будь-яку іншу мережу. Якщо пакети будуть перехоплені під час передачі, для злому шифру, що їх захищає, буде потрібно застосування методу перебору, що досить розтягнуте за часом і до закінчення процедури може стати вже не актуальним.
Для налаштування міжмережевого з'єднаннязнадобиться така інформація:
З'єднання IPSEC між мережами використовує попередній загальний ключ r3dh4tl1nux , Нижче наведено вміст файлу ifcfg , створеного для з'єднання між мережею IPSEC в першій мережі. У прикладі ця сполука має унікальне ім'я ipsec1.
З'єднання встановлюється під час завантаження ( ONBOOT=yes ) і використовує метод автентифікації із загальним ключем ( IKE_METHOD=PSK ).
Нижче наведено вміст файлу з попереднім загальним ключем (названого /etc/sysconfig/network-scripts/keys-ipsecX , де X дорівнює 0 для першої мережі та 1 для другої).
Ключ автентичності можна змінити в будь-який час, для цього на IPsec-маршрутизаторах потрібно відредагувати файл keys-ipsecX . Ключі мають обов'язково збігатися!
Вміст конфігураційного файлу /etc/racoon/racoon.conf :
Перш ніж запускати з'єднання IPSEC, маршрутизація IP в ядрі повинна бути включена. Для цього можна відредагувати файл /etc/sysctl.conf і встановити net.ipv4.ip_forward рівним 1.
Щоб зміна набула чинності, потрібно виконати команду: sysctl -p /etc/sysctl.conf .
З'єднання можна встановити або перезавантаженням маршрутизаторів, або виконавши на маршрутизаторах від імені root наступну команду: /sbin/ifup ipsec0 .
Маршрути автоматично створює сценарій ініціалізації, викликаний командою ifup під час активізації з'єднання IPsec.
Перевірити IPsec-з'єднання можна запуском утиліти tcpdump, наприклад: tcpdump -n -i eth0 host my_net1.com .
У статті докладно розглянуто принципи побудови та основи застосування VPN, поняття протоколу IPSEC, наведено загальні характеристики та опис IPSEC, а також механізмів його реалізації.
Розглянуто організацію методів побудови захищених з'єднань за допомогою протоколу IPSEC. Детально тана реальних прикладах описані такі реалізації стосовно двох схем сполук — «точка-точка» та «мережа-мережа».