Ставтеся до файлу OVPN як до вхідних даних програми, а не як до засвідчення, що його вміст безпечний. Перевірка адреси сервера відповідає лише на те, куди профіль хоче підключитися, і ні на що більше. У цьому файлі два окремі рішення про довіру: що клієнт може робити на вашій машині та який оператор отримує трафік. Знайома назва протоколу не вирішує жодного з них.

В одному файлі сховані два рішення

Перше рішення локальне. Профіль — це мова конфігурації, і клієнт, який його читає, може підтримувати директиви, що завантажують плагін, запускають скрипт або змінюють те, як застосовуються маршрутизація та DNS. Друге рішення віддалене. Що б не містив файл, оператор виходу бачить трафік, який до нього надходить.

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

Прочитайте профіль раніше, ніж це зробить будь-який клієнт

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

grep -nE '^(script-security|up|down|plugin|route-up|ipchange)' untrusted.ovpn

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

Інструкції, що надходять разом із профілем, заслуговують такої ж перевірки, як і профіль. Чотири прохання мають вас зупинити: увімкнути скрипти, встановити помічник або бібліотеку, запустити клієнт від імені адміністратора або послабити обмеження імпорту. Кожне з них зсуває межу довіри назовні, і жодне не є звичайною частиною імпорту списку серверів.

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

Що клієнт насправді виконає

Керівництво 2.6 Community OpenVPN описує щаблі script-security: рівень 1 типово встановлений і блокує скрипти, визначені користувачем, а рівень 2 їх дозволяє. Завантаження плагінів — окремий механізм із власною директивою. Тому один і той самий файл може означати різне в різних клієнтах. Мобільні клієнти та клієнти виробників можуть приймати вужчий набір директив або жодного з гачків.

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

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

Порівняйте оператора, а не лише адресу

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

Облікові дані — це те, у чому люди під тиском помиляються. Не вводьте пароль стороннього облікового запису в завантажений профіль лише тому, що ім'я сервера здається знайомим. Профіль може також містити приватний ключ у відкритому вигляді, тож публікація всього файлу в теці обговорення передає цей ключ теці.

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

Там, де походження файлу залишається неясним або запитаний привілей не має пояснення, яке ви можете прийняти, замініть профіль тим, що походить із джерела, яке можна притягнути до відповідальності. У керованому робочому з'єднанні адміністратор має затвердити клієнт і конфігурацію як одне рішення, а не два. Ніщо тут не вимагає спершу довести злий умисел; відмова в доступі — законна відповідь.

Схожі статті