Незвичні файли OVPN: локальний ризик і віддалена довіра
Профіль може впливати на клієнт на вашій машині та обирати оператора, який бачить ваш трафік. Перегляньте обидва рішення, перш ніж імпортувати файл.
Ставтеся до файлу OVPN як до вхідних даних програми, а не як до засвідчення, що його вміст безпечний. Перевірка адреси сервера відповідає лише на те, куди профіль хоче підключитися, і ні на що більше. У цьому файлі два окремі рішення про довіру: що клієнт може робити на вашій машині та який оператор отримує трафік. Знайома назва протоколу не вирішує жодного з них.
В одному файлі сховані два рішення
Перше рішення локальне. Профіль — це мова конфігурації, і клієнт, який його читає, може підтримувати директиви, що завантажують плагін, запускають скрипт або змінюють те, як застосовуються маршрутизація та DNS. Друге рішення віддалене. Що б не містив файл, оператор виходу бачить трафік, який до нього надходить.
Змішувати ці два — означає давати погану пораду в обидва боки: чистий на вигляд профіль від невідомого оператора або профіль відомого оператора з гачком, який ніхто не читав. Профіль, безпечний локально, усе одно може передати ваш трафік тому, кого ви не обрали б.
Прочитайте профіль раніше, ніж це зробить будь-який клієнт
Прочитайте файл як текст до того, як будь-який клієнт його обробить. Шукайте директиви, що вказують за межі файлу, посилаються на виконувані файли або змінюють привілеї, і порівняйте цей список із документованою підтримкою клієнта. Короткий пошук — не аудит безпеки, але він каже, чи профіль є списком серверів, чи чимось більшим.
grep -nE '^(script-security|up|down|plugin|route-up|ipchange)' untrusted.ovpn
Порожній результат заспокоює і не є остаточним, бо опції можуть взаємодіяти або надходити з включеного файлу. Сприймайте відфільтрований список як причину читати далі, а не як вирок.
Інструкції, що надходять разом із профілем, заслуговують такої ж перевірки, як і профіль. Чотири прохання мають вас зупинити: увімкнути скрипти, встановити помічник або бібліотеку, запустити клієнт від імені адміністратора або послабити обмеження імпорту. Кожне з них зсуває межу довіри назовні, і жодне не є звичайною частиною імпорту списку серверів.
Прочитайте також увесь файл цілком один раз, бо один незнайомий рядок легше оцінити в контексті, ніж у відфільтрованому списку. Якщо рядок незнайомий, знайдіть його в керівництві для вашого клієнта, а не вгадуйте.
Що клієнт насправді виконає
Керівництво 2.6 Community OpenVPN описує щаблі script-security: рівень 1 типово встановлений і блокує скрипти, визначені користувачем, а рівень 2 їх дозволяє. Завантаження плагінів — окремий механізм із власною директивою. Тому один і той самий файл може означати різне в різних клієнтах. Мобільні клієнти та клієнти виробників можуть приймати вужчий набір директив або жодного з гачків.
Спосіб запуску важливий не менше за клієнт. Профіль, запущений привілейованим помічником, може робити більше, ніж запущений у просторі користувача, і ця різниця — причина прочитати запит імпорту, а не відмахнутися від нього.
Версія теж важлива, бо ці рівні визначені для кожного випуску, і клієнт, що відстав на кілька версій, може не реалізовувати ту саму політику. Читайте керівництво, що відповідає збірці, яку ви запускаєте, а не найновіше з доступних. Якщо клієнт ніде не показує рядок версії, це вже причина не поспішати.
Порівняйте оператора, а не лише адресу
Порівнюйте операторів так, як порівнюєте будь-якого іншого посередника. Запитайте, хто керує виходом, що вони журналюють і як профіль потрапив до вас. Перевірена сторінка завантаження й відповідний відбиток пальця кажуть більше, ніж знайоме ім'я хоста. Доступний сервер доводить лише те, що щось відповіло.
Облікові дані — це те, у чому люди під тиском помиляються. Не вводьте пароль стороннього облікового запису в завантажений профіль лише тому, що ім'я сервера здається знайомим. Профіль може також містити приватний ключ у відкритому вигляді, тож публікація всього файлу в теці обговорення передає цей ключ теці.
Належно перевірений сеанс HTTPS усе ще приховує вміст сторінки від будь-кого, хто лише пересилає пакети, тому вихід не бачить автоматично кожного пароля. Але він бачить, до яких сайтів ви досягаєте, і цю межу варто називати точно, а не перебільшувати.
Там, де походження файлу залишається неясним або запитаний привілей не має пояснення, яке ви можете прийняти, замініть профіль тим, що походить із джерела, яке можна притягнути до відповідальності. У керованому робочому з'єднанні адміністратор має затвердити клієнт і конфігурацію як одне рішення, а не два. Ніщо тут не вимагає спершу довести злий умисел; відмова в доступі — законна відповідь.