Домашня » як » Як використовувати тунелювання SSH для доступу до обмежених серверів і безпечного перегляду

    Як використовувати тунелювання SSH для доступу до обмежених серверів і безпечного перегляду

    Клієнт SSH підключається до сервера Secure Shell, який дозволяє запускати команди терміналів так, як якщо б ви сиділи перед іншим комп'ютером. Але клієнт SSH також дозволяє "тунелювати" порт між локальною системою та віддаленим сервером SSH.

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

    Ви можете зробити це за допомогою ssh Команда включена в Linux, MacOS та інші UNIX-подібні операційні системи. У Windows, що не містить вбудованої команди ssh, ми рекомендуємо безкоштовний інструмент PuTTY для підключення до серверів SSH. Він також підтримує SSH тунелювання.

    Пересилання локальних портів: Зробити доступними віддалені ресурси на вашій локальній системі

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

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

    Щоб скористатися локальною переадресацією, нормально підключайтеся до SSH-сервера, але також постачайте його -L аргумент. Синтаксис:

    ssh -L local_port: remote_address: remote_port [email protected]

    Наприклад, скажімо, сервер бази даних у вашому офісі знаходиться за адресою 192.168.1.111 в офісній мережі. Ви маєте доступ до SSH-сервера офісу на ssh.youroffice.com , і ваш обліковий запис на сервері SSH bob . У такому випадку ваша команда виглядатиме так:

    ssh -L 8888: 192.168.1.111: 1234 [email protected]

    Після запуску цієї команди ви зможете отримати доступ до сервера бази даних на порт 8888 на localhost. Отже, якщо сервер баз даних запропонував веб-доступ, ви можете підключити http: // localhost: 8888 до веб-браузера, щоб отримати доступ до нього. Якщо у вас був інструмент командного рядка, який потребує мережевої адреси бази даних, ви повинні вказати його на localhost: 8888. Весь трафік, надісланий на порт 8888 на вашому комп'ютері, буде налаштовано на 192.168.1.111:1234 у вашій офісній мережі.

    Це трохи більш заплутано, якщо ви хочете підключитися до серверного додатку, запущеного в тій же системі, що й сам сервер SSH. Наприклад, скажімо, у вас є сервер SSH, який працює на порту 22 на вашому офісному комп'ютері, але у вас також є сервер баз даних, що працює в порту 1234 на тій же системі за тією ж адресою. Ви хочете отримати доступ до сервера баз даних з дому, але система приймає лише з'єднання SSH на порту 22, а його брандмауер не допускає інших зовнішніх з'єднань.

    У цьому випадку можна запустити команду, подібну до наступної:

    ssh -L 8888: localhost: 1234 [email protected]

    Коли ви намагаєтеся отримати доступ до сервера бази даних на порт 8888 на поточному комп'ютері, трафік буде надіслано через з'єднання SSH. Коли він надходить у систему, що працює на сервері SSH, сервер SSH відправляє його до порту 1234 на "localhost", який є тим же самим ПК, на якому працює сам сервер SSH. Таким чином, "localhost" у команді вище означає "localhost" з точки зору віддаленого сервера.

    Для цього в програмі PuTTY у Windows виберіть Connection> SSH> Tunnels. Виберіть параметр "Локальний". Для “Source Port” введіть локальний порт. Для "Призначення" введіть адресу і порт призначення у формі remote_address: remote_port.

    Наприклад, якщо ви хочете налаштувати ту саму тунель SSH, що й вище, потрібно ввести 8888 як вихідний порт і localhost: 1234 як пункт призначення. Натисніть кнопку "Додати", а потім натисніть "Відкрити", щоб відкрити з'єднання SSH. Вам також необхідно ввести адресу та порт SSH-сервера на головний екран «Сесія», перш ніж підключати, звичайно.

    Віддалене пересилання портів: Зробити доступні місцеві ресурси на віддаленій системі

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

    Припускаючи, що ви можете отримати доступ до віддаленого SSH-сервера, ви можете підключитися до цього SSH-сервера і використовувати віддалене переадресацію портів. Ваш клієнт SSH повідомлятиме серверу про передачу конкретного порту, скажімо, порту 1234 на сервері SSH на певну адресу та порт на поточному ПК або локальну мережу. Коли хтось звертається до порту 1234 на сервері SSH, цей трафік буде автоматично "тунельований" через з'єднання SSH. Будь-хто, хто має доступ до SSH-сервера, матиме доступ до веб-сервера, запущеного на вашому ПК. Це фактично спосіб тунелювати через брандмауери.

    Для використання віддаленого переадресації використовуйте ssh з командою -R аргумент. Синтаксис в основному такий же, як і з локальною переадресацією:

    ssh -R remote_port: local_address: local_port [email protected]

    Припустимо, ви хочете зробити серверне додаток, що прослуховує порт 1234 на вашому локальному комп'ютері, доступне в порту 8888 на віддаленому сервері SSH. Адреса сервера SSH ssh.youroffice.com і ваше ім'я користувача на сервері SSH bob. Ви хочете виконати таку команду:

    ssh -R 8888: localhost: 1234 [email protected]

    Хтось може підключитися до SSH-сервера на порт 8888, і це підключення буде тунельоване до серверного додатка, запущеного в порту 1234 на локальному комп'ютері, на якому було встановлено з'єднання з.

    Для цього в програмі PuTTY у Windows виберіть Connection> SSH> Tunnels. Виберіть параметр "Віддалений". Для “Source Port” введіть віддалений порт. Для пункту "Напрямок" введіть адресу і порт призначення у вигляді local_address: local_port.

    Наприклад, якщо ви хочете налаштувати приклад вище, потрібно ввести 8888 як вихідний порт і localhost: 1234 як пункт призначення. Натисніть кнопку "Додати", а потім натисніть "Відкрити", щоб відкрити з'єднання SSH. Вам також необхідно ввести адресу та порт SSH-сервера на головний екран «Сесія», перш ніж підключати, звичайно.

    Після цього люди могли підключитися до порту 8888 на сервері SSH, і їхній трафік буде тунельовано до порту 1234 у вашій локальній системі.

    За замовчуванням віддалений сервер SSH буде слухати лише з'єднання з того ж хосту. Іншими словами, лише люди на тій же системі, що й сам сервер SSH, зможуть підключитися. Це з міркувань безпеки. Вам потрібно ввімкнути параметр "GatewayPorts" у sshd_config на віддаленому сервері SSH, якщо ви хочете змінити цю поведінку.

    Динамічна перенаправлення портів: використовуйте ваш SSH-сервер як проксі-сервер

    Також існує "динамічний перенаправлення портів", який працює аналогічно проксі або VPN. Клієнт SSH створить проксі-сервер SOCKS, який можна налаштувати на використання програм. Весь трафік, надісланий через проксі, буде відправлений через SSH-сервер. Це схоже на локальну переадресацію - він приймає локальний трафік, надісланий до конкретного порту на вашому ПК, і відправляє його через SSH-з'єднання до віддаленого.

    Наприклад, скажімо, ви використовуєте загальнодоступну мережу Wi-Fi. Ви хочете, щоб безпечно переглядати, не будучи snooped на. Якщо у вас є доступ до SSH-сервера вдома, ви можете підключитися до нього і використовувати динамічну переадресацію портів. Клієнт SSH створить проксі-сервер SOCKS на вашому комп'ютері. Весь трафік, надісланий на цей проксі, буде надіслано через з'єднання SSH-сервера. Ніхто, хто стежить за громадською мережею Wi-Fi, не зможе відслідковувати ваш веб-перегляд або цензурувати веб-сайти, доступ до яких можна отримати. З точки зору веб-сайтів, які ви відвідуєте, це буде так, ніби ви сидите перед комп'ютером вдома. Це також означає, що ви можете використовувати цей трюк, щоб отримати доступ до веб-сайтів лише для США, хоча за межами США, якщо ви маєте доступ до сервера SSH у США, звичайно,.

    Іншим прикладом може бути доступ до програми медіа-сервера, яка є у вашій домашній мережі. З міркувань безпеки ви можете мати лише сервер SSH, підключений до Інтернету. Ви не дозволяєте вхідні з'єднання з Інтернету до програми медіа-сервера. Можна налаштувати динамічне перенаправлення портів, налаштувати веб-переглядач для використання проксі-сервера SOCKS, а потім звернутися до серверів, які працюють у вашій домашній мережі, через веб-браузер, як якщо б ви сиділи перед вашою системою SSH вдома. Наприклад, якщо ваш мультимедійний сервер знаходиться у порту 192.168.1.123 у вашій домашній мережі, ви можете підключити адресу 192.168.1.123 в будь-яку програму, яка використовує проксі-сервер SOCKS, і ви отримаєте доступ до медіа-сервера, як якщо б ви знаходилися в домашній мережі.

    Щоб використовувати динамічне переадресацію, запустіть команду ssh з -D аргумент, так:

    ssh -D local_port [email protected]

    Наприклад, скажімо, у вас є доступ до SSH-сервера на ssh.yourhome.com і ваше ім'я користувача на сервері SSH bob . Ви хочете використовувати динамічну переадресацію, щоб відкрити проксі SOCKS у порту 8888 на поточному ПК. Ви хочете виконати таку команду:

    ssh -D 8888 [email protected]

    Після цього можна налаштувати веб-переглядач або іншу програму для використання локальної IP-адреси (127.0.01) і порту 8888. Весь трафік із цієї програми буде перенаправлено через тунель.

    Для цього в програмі PuTTY у Windows виберіть Connection> SSH> Tunnels. Виберіть параметр "Динамічний". Для “Source Port” введіть локальний порт.

    Наприклад, якщо ви хочете створити проксі SOCKS на порту 8888, ви повинні ввести 8888 як вихідний порт. Натисніть кнопку "Додати", а потім натисніть "Відкрити", щоб відкрити з'єднання SSH. Вам також необхідно ввести адресу та порт SSH-сервера на головний екран «Сесія», перш ніж підключати, звичайно.

    Потім можна налаштувати програму на доступ до проксі SOCKS на вашому локальному комп'ютері (тобто, IP-адреса 127.0.0.1, який вказує на ваш локальний комп'ютер) і вказати правильний порт.

    Наприклад, ви можете налаштувати Firefox на використання проксі SOCKS. Це особливо корисно, оскільки Firefox може мати свої власні налаштування проксі-сервера і не потрібно використовувати загальносистемні налаштування проксі-сервера. Firefox надсилатиме трафік через SSH-тунель, а інші програми використовуватимуть ваше підключення до Інтернету.

    Роблячи це у Firefox, виберіть “Manual proxy configuration”, введіть “127.0.0.1” у вікно SOCKS і введіть динамічний порт у поле “Порт”. Залиште порожні коробки проксі HTTP-проксі, SSL-проксі та FTP-проксі.

    Тунель залишатиметься активним і відкритим до тих пір, поки відкриється з'єднання сеансу SSH. Після завершення сеансу SSH і відключення від сервера тунель також буде закритий. Просто знову підключіть відповідну команду (або відповідні опції в PuTTY), щоб знову відкрити тунель.