Локальне переспрямування SSH чи повний VPN для одного екрана Mac?
Для одного екрана на одному хості loopback-переспрямування SSH менше, ніж VPN. Ось коли його достатньо, що воно шифрує і коли варто припинити ним користуватися.
Вам потрібно бачити екран одного Mac зі своєї машини, Mac стоїть за хостом, до якого ви вже можете підключитися через SSH, і питання в тому, чи варте це VPN. Зазвичай ні. Одне локальне переспрямування несе один TCP-порт через уже наявну у вас сесію SSH, і для одного екрана на одному хості це менша й легше перевірювана схема, ніж маршрутизація всієї мережі.
Це вирішують три умови, і кожна з них може підштовхнути вас до керованого VPN.
Це вирішують три умови
Перша — обсяг: одна служба на одному хості або кілька хостів і кілька портів. Друга — чи кожен перехід між бастіоном і ціллю вже вважається надійним, бо SSH захищає лише той відрізок, який він завершує. Третя — хто має підтримувати цю схему після того, як ви її збудуєте, адже тунель, зроблений вручну, зазвичай переживає людину, яка його розуміла. Назвіть цю людину до початку роботи і запишіть команду туди, де вона зможе її знайти. Незадеклароване переспрямування — це майбутній інцидент із відкладеною датою початку.
Якщо відповіді «один», «так» і «я, поки що», переспрямування — правильний інструмент. Якщо будь-яка відповідь зміниться, підтримуваний проєкт віддаленого доступу за рік коштує дешевше, ніж розбір інциденту, що настає після незадекларованого тунелю.
Переспрямуйте один порт, а не мережу
Локальне переспрямування відкриває слухача на вашій машині й передає кожне з’єднання через SSH-сервер до призначення, якого цей сервер може дістатися. Для Mac, чия служба спільного доступу до екрана слухає TCP 5900, і бастіона, який уміє розв’язувати mac.corp.example, команда коротка й навмисно вузька. Кожен параметр у ній існує, щоб схема лишалася малою: без оболонки, без слухача на всіх інтерфейсах, без демона. Читайте її як заяву про обсяг, а не як рецепт.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:15900:mac.corp.example:5900 [email protected]Прив’язка слухача до 127.0.0.1 тримає його осторонь усіх інших інтерфейсів. Це не формальність: переспрямування, прив’язане до всіх інтерфейсів, робить ваш ноутбук відкритим ретранслятором у корпоративну мережу для будь-кого в тій самій кав’ярні з Wi-Fi. Якщо порт уже зайнятий, виберіть інший високий порт і оновіть переглядач; не зупиняйте сторонню службу, щоб приклад підійшов.
Обліковому запису на бастіоні теж потрібен дозвіл на переспрямування до цього призначення. Деякі посилені конфігурації SSH повністю вимикають переспрямування портів, а деякі обмежують його директивою permit-listen або permit-open. Прочитайте політику сервера, перш ніж вважати, що відхилений канал означає неправильний пароль.
Що шифрує SSH і де він зупиняється
Сесія SSH захищає трафік від вашого Mac до бастіона, а переспрямування несе протокол VNC усередині цієї сесії, не розуміючи його. Щойно з’єднання залишає бастіон у бік цілі, воно вже не всередині вашої сесії SSH. Який би захист не був на цьому останньому переході, він належить протоколу цілі та власним засобам контролю приватної мережі.
Тому простий останній перехід VNC не слід описувати як наскрізно зашифрований лише тому, що перший перехід використав SSH. Описуйте відрізки чесно: сильний від клієнта до бастіона, а далі те, що підтримує ціль. Якщо вимога в тому, щоб увесь шлях шифрувався одним механізмом, переспрямування цього не виконує.
Автентифікація на цілі — знову окреме питання. Обліковий запис SSH не дає входу в macOS, і служба спільного доступу до екрана досі запитує власні дані і досі застосовує власний список доступу. Локальний слухач, що приймає з’єднання, нічого не доводить щодо того, чи пустить віддалена служба сесію.
Коли повний VPN — правильний вибір
Виберіть VPN, коли завданню потрібно більше одного порту: функції керування та звітності Apple Remote Desktop використовують додатковий трафік TCP і UDP, який одне переспрямування TCP не донесе. Переспрямування — не часткова реалізація всього продукту; це інший, менший інструмент.
Виберіть його, коли кілька адміністраторів підключаються з мінливих місць, бо керований профіль розповсюджує маршрути, облікові дані та політику без того, щоб кожен вигадував командний рядок. Виберіть його, коли журнал аудиту має показувати, хто до чого підключався, адже сесія SSH на користувача й спільне локальне переспрямування залишають дуже різні записи.
Виберіть його, нарешті, коли цільова мережа взагалі не повинна бути доступною з ноутбука без власних воріт організації. Особисте переспрямування обходить ці ворота за задумом, і саме тому воно належить до журналу змін, а не до історії оболонки.
Змусьте переспрямування гучно падати
Використовуйте ExitOnForwardFailure=yes, щоб невдала прив’язка зупиняла сесію, а не залишала оболонку, яка виглядає підключеною і нічого не переспрямовує. Тримайте перевірку ключа хоста ввімкненою і віддавайте перевагу ключу або агенту перед паролем. Потім перевірте точний URL, який використає переглядач, бо робоча сесія SSH і робоче з’єднання з екраном — два різні результати.
Для рідного клієнта в macOS переглядача досягають через локальний URL: open "vnc://127.0.0.1:15900". Якщо вікно відкривається, а віддалений хост відхиляє автентифікацію, тунель гаразд, і проблема на цілі. Якщо вікно ніколи не відкривається, проблема в слухачі або порті.
Зупиніть сесію, коли завершите, і запишіть порт, бастіон, ціль і політику облікового запису. Переспрямування, яке ніхто не задокументував, через пів року не відрізнити від чорного ходу, і це найсильніший аргумент тримати його малим, названим і тимчасовим.