IPsec між двома хостами: де захист починається і де закінчується
Пара хостів може захищати вибрані потоки без шлюзу. Визначте кінцеві точки, політику, яка вибирає трафік, і дозволи, що залишаються окремими.
Захист на парі хостів починається там, де закінчується асоціація безпеки, і саме цей факт найчастіше проґавить інтуїція, сформована шлюзами. Сервер застосунку та його сервер бази даних можуть захищати власну розмову безпосередньо, без жодного концентратора віддаленого доступу на шляху, і межа захисту тоді міститься всередині кожного хоста, а не в міжмережевому екрані. Що це дає — це покриття від кінця до кінця для вибраних потоків. Чого це не дає — це рішення про те, хто може читати який рядок.
Межа там, де закінчується SA
RFC 4301 описує асоціації безпеки в транспортному режимі як схему, зазвичай використовувану між парою хостів для захисту від кінця до кінця. Ці два хости тримають ключі, і кожен вирішує, які з його власних пакетів входять до асоціації. Тунель шлюзу закінчується зовсім в іншому місці й досягає хоста через додатковий внутрішній сегмент, а це інша межа довіри, навіть коли пакет зашифрований на більшій частині шляху.
Хост-хост і транспортний режим, однак, не є синонімами. Два хости можуть так само правильно побудувати асоціацію в тунельному режимі між собою, тому спочатку виберіть режим, а потім опишіть кінцеві точки. Запишіть обидва в нотатку про проєктування поряд з адресами партнерів, бо рецензент, який знає лише режим, припускатиме інший.
SPD вирішує про захист, маршрут вирішує про напрямок
Таблиця маршрутизації відповідає, куди йде пакет. База політики безпеки відповідає, як вибраний трафік перетинає межу захисту, і робить це для кожного напрямку зі своїми селекторами. Цей поділ — причина, чому робочий маршрут до бази даних нічого не доводить про те, чи був захищений запит, і чому встановлені переговори нічого не доводять про те, чи відповідав їм саме цей застосунок. Порівняйте селектори, перш ніж порівнювати лічильники, бо лічильники описують лише ті потоки, які дійшли так далеко.
У Linux ip xfrm policy виводить ці записи з їхнім напрямком, пріоритетом, селектором і дією дозволити, заблокувати або перехопити, а ip xfrm state показує отримані асоціації та їхні лічильники. Читання обох разом — це спосіб знайти потік, який тихо обійшов тунель, бо ширший запис дозволу збігся першим.
Порядок пріоритетів — частина політики, а не деталь реалізації. Вузький запис, який має захищати порт бази даних, програє ширшому запису з вищим пріоритетом, і збій виглядає так, ніби політику ніколи не питали.
Транспортний режим охоплює наступний рівень, а не заголовок IP
| Transport mode | Tunnel mode | |
|---|---|---|
| Original IP header | kept for routing the flow | replaced by an outer header |
| What ESP protects | the carried next-layer payload | the whole inner IP packet |
| Where it terminates | commonly the two hosts | gateway pair, or a host pair |
У транспортному режимі заголовок ESP міститься між заголовком IP і корисним навантаженням, а адресні поля цього заголовка залишаються видимими для кожного пристрою на шляху. Це добре, коли адреси не є секретом, а навантаження — так. Це неправильний вибір, якщо вам також потрібно приховати внутрішню топологію, бо лише тунельний режим загортає початковий заголовок у новий.
Обидва режими можуть нести кілька протоколів наступного рівня, і ESP захистить те, що збігається з селектором, а не все, що надсилає хост.
Вибір вужчий за з'єднання
Одна асоціація може нести кілька потоків, але лише ті, які вибирає політика. Запишіть ідентичності партнерів, адреси джерела й призначення, протокол і обсяг послуги для того зв'язку, який ви задумали, а потім окремо вирішіть, чи може невідповідний трафік іти відкрито, чи має бути захищений або чи має бути відкинутий, коли асоціація недоступна. Саме останнє рішення створює несподіванки, бо правило, що вимагає захисту для неправильного джерела, може заблокувати ваш власний доступ до керування так само ефективно, як блокує зловмисника.
Тримайте затверджений позасмуговий шлях, поки змінюєте застосування, і перевірте його раніше, ніж він знадобиться, а не після того, як обидва хости стануть недосяжними.
Ідентичність машини — не дозвіл застосунку
IPsec автентифікує налаштованого партнера і захищає вибрані пакети. Він не вирішує, який запис бази даних людина може редагувати, і не перетворює довірену ідентичність сервера на надання всіх привілеїв застосунку. Облікові записи, ролі й авторизація застосунку залишаються точно там, де були, а вимога TLS на рівні застосунку зберігає власну мету, навіть коли мережевий шлях уже захищений.
Прийміть проєкт з однією операцією з передбаченого джерела і однією, яка має бути відхилена, і включіть, що відбувається, коли потрібну асоціацію неможливо встановити. Звичайний тест доступності каже вам, що пакети рухаються; він не каже, що вони рухалися під політикою, яку ви написали.