SSH-тунелі: налаштування, використання

3 0 Новини високих технологій

SSH тунелювання — це метод транспортування довільних мережевих даних по зашифрованому SSH-з'єднання. Його можна використовувати для додавання шифрування застарілі програми. Він також може використовуватися для реалізації VPN (віртуальних приватних мереж) і доступу до служб інтрамережі через брандмауери.

Введення

Перенаправлення портів через SSH створює безпечне з'єднання між комп'ютером і віддаленою машиною, через яку можуть бути передані служби. Оскільки з'єднання зашифровано, SSH тунелювання корисно для передачі інформації, яка використовує незашифрований протокол, такий як IMAP, VNC або IRC.


SSH-тунель Windows використовує порт 22 щоб забезпечити шифрування даних, переданих через загальнодоступну мережа (наприклад, Інтернет), тим самим надаючи функції VPN. IPsec має наскрізний транспортний режим, але також може працювати в режимі тунелювання через надійний шлюз безпеки.
SSH-тунелі: налаштування, використання

Визначення

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


Безпечне з'єднання по ненадійної мережі встановлюється між клієнтом SSH і SSH-сервером. Це SSH-з'єднання зашифровується, захищає конфіденційність і цілісність і аутентифікує сполучні боку. З'єднання SSH використовується додатком для підключення до сервера додатків. При активованому туннелировании додаток зв'язується з портом на локальному хості, який слухає клієнт SSH. Потім клієнт SSH перенаправляє додаток поверх свого зашифрованого тунелю на сервер. Останній підключається до фактичного сервера додатків — зазвичай на тому ж комп'ютері або в тому ж центрі обробки даних, що і сервер SSH. Таким чином, зв'язок додатки захищена без необхідності зміни робочих процесів додатків або кінцевих користувачів.
SSH-тунелі: налаштування, використання

Протоколи тунелювання — що це?

В комп'ютерних мережах протокол тунелювання дозволяє мережному користувачеві доступ або надавати мережеву послугу, яку базова мережа не підтримує або не забезпечує безпосередньо. Одним з важливих застосувань є дозвіл зовнішнього протоколу на роботу в мережі, яка не підтримує цей конкретний протокол (наприклад, запуск IPv6 по протоколу IPv4). Ще один важливий момент полягає в наданні послуг, які недоцільні або небезпечні для використання із застосуванням тільки базових мережевих послуг. Наприклад, надання корпоративного мережевої адреси віддаленого користувача, фізична мережна адреса якого не є частиною корпоративної мережі. Оскільки тунелювання включає переупаковку даних трафіку в іншу форму, можливо, з використанням стандартного шифрування, важлива особливість полягає в тому, щоб приховати характер трафіка, який запускається через тунелі.

Secure Shell — безпечна передача даних

Secure Shell складається з зашифрованого тунелю, створеного через з'єднання протоколу SSH. Користувачі можуть налаштувати тунелі SSH для передачі незашифрованого трафіку по мережі через зашифрований канал. Наприклад, комп'ютери Microsoft Windows можуть обмінюватися файлами з використанням протоколу сервера повідомлень (SMB), незашифрованого протоколу. Якщо ви хочете віддалено приєднати файлову систему Microsoft Windows через Інтернет, хтось, стежить за з'єднанням, може бачити передані файли. Щоб безпечно приєднати файлову систему Windows, можна встановити тунель SSH, який спрямовує весь SMB-трафік на віддалений файловий сервер через зашифрований канал. Незважаючи на те що сам протокол SMB не містить шифрування, зашифрований SSH-канал, через який він переміщається, забезпечує безпеку.
SSH-тунелі: налаштування, використання

Типи переадресації портів

Переадресація портів — це широко підтримується функція, що виявляється в усіх основних клієнтах і серверах SSH. З функцією перенаправлення портів SSH можна здійснювати передачу різних типів інтернет-трафіку через мережу. Це використовується для того, щоб уникнути мережевий стеження або з метою обходу неправильно налаштованих маршрутизаторів в Інтернеті. Існує три типи переадресації портів з SSH:
  • локальна — з'єднання з SSH-клієнта перенаправляються на SSH-сервер, а потім на сервер;
  • віддалена — з'єднання з SSH-сервера перенаправляються через SSH-клієнт, а потім на сервер;
  • динамічна — з'єднання з різних програм пересилаються через SSH-клієнт, потім через SSH-сервер і, нарешті, на кілька цільових серверів.
  • Локальна переадресація портів є найбільш поширеним типом і, зокрема, дозволяє обійти брандмауер компанії, який блокує "Вікіпедію". Віддалена переадресація портів зустрічається рідше. Дозволяє підключитися до вашого SSH-сервера до комп'ютера в інтрамережі вашої компанії. Динамічна переадресація портів використовується нечасто. Дозволяє обійти брандмауер компанії, який повністю блокує доступ до Інтернету. Вимагає багато роботи для налаштування, і зазвичай простіше використовувати локальну переадресацію портів для певних сайтів, до яких ви хочете отримати доступ.
    SSH-тунелі: налаштування, використання

    Технічні особливості

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

    Приклади реалізації

    Кращий спосіб зрозуміти, як це працює — розглянути приклад з локальної переадресацією. Уявіть, що ви знаходитесь у приватній мережі, яка не дозволяє підключатися до певного серверу. Припустимо, ви на роботі, і vk.com заблокований. Щоб обійти блокування, ми можемо створити тунель через сервер, який не знаходиться в нашій мережі і, таким чином, може отримати доступ до необхідного ресурсу: $ ssh -L 9000: vk.com: 80 user@example.com. Ключовим моментом тут є -L, в якому говориться, що ми виконуємо локальну переадресацію портів. Потім команда повідомляє, що ми пересилаємо наш локальний порт 9000 на vk.com:80 який є портом за замовчуванням для HTTP. Тепер необхідно відкрити свій браузер і перейти за адресою http://localhost: 9000. Незаперечна перевага SSH-тунелів полягає в тому, що вони зашифровані. Ніхто не побачить, які сайти ви відвідуєте — будуть видні тільки SSH-з'єднання з сервером.
    SSH-тунелі: налаштування, використання

    Підключення до бази даних за брандмауером

    Ще один хороший приклад: якщо вам потрібно отримати доступ до порту на вашому сервері, до якого це можна зробити тільки з локального хоста, а не дистанційно. Прикладом тут є необхідність підключення до консолі бази даних, яка дозволяє тільки локальне підключення з міркувань безпеки. Припустимо, ви використовуєте PostgreSQL на своєму сервері, який за замовчуванням прослуховує порт 5432: $ ssh -L 9000: localhost: 5432 user@example.com. Частина, яка тут змінилася, - localhost: 5432 в якій йдеться про переадресації сполук з вашого локального порту 9000 на localhost: 5432 і на ваш сервер. Тепер ми можемо просто підключитися до нашої бази даних: $ psql -h localhost -p 9000.

    Віддалена переадресація портів

    Тепер пояснимо на реальному прикладі роботу віддаленої переадресації. Припустимо, ви розробляєте додаток Rails на своїй локальній машині, і хочете показати його другові. На жаль, ваш інтернет-провайдер не надав вам публічний IP-адресу, тому неможливо безпосередньо підключитися до ПК через Інтернет. Іноді це можна вирішити, налаштувавши NAT (трансляція мережевих адрес) на вашому маршрутизаторі, але це не завжди працює, і для цього потрібно змінити конфігурацію маршрутизатора, що не завжди бажано. Це рішення також не працює, якщо у вас немає доступу до вашої мережі. Щоб усунути цю проблему, знадобиться інший комп'ютер, який є загальнодоступним і має доступ до SSH. Це може бути будь-сервер в Інтернеті, якщо ви можете підключитися до нього. Ми створимо SSH-тунель, який відкриє новий порт на сервері і підключить його до локального порту на вашому комп'ютері: $ ssh-R 9000: localhost: 3000 user@example.com Синтаксис тут дуже схожий на локальну переадресацію портів, з однією заміною -L на -R. Але, як і при локальній переадресації портів, синтаксис залишається незмінним.
    SSH-тунелі: налаштування, використання

    Сфера застосування та ризики

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

    Переваги

    Продаж SSH-тунелів широко використовуються в багатьох корпоративних середовищах, які використовують системи мейнфреймів в якості своїх додатків. В цих середовищах самі додатки можуть мати дуже обмежену підтримку для забезпечення безпеки. Використовуючи тунелювання, сумісність з SOX, HIPAA, PCI-DSS та іншими стандартами, може бути досягнута без необхідності зміни додатків. У багатьох випадках ці додатки і сервери додатків такі, що внесення змін до них, ймовірно, виявиться непрактичним або надмірно дорогим. Вихідний код може бути недоступний, продавець, можливо, збанкрутував, продукт може опинитися поза підтримки або відсутня команда розробників. Додавання захисної оболонки, такий як SSH-тунель putty, забезпечує економічний і практичний спосіб додавання безпеки для таких додатків. Наприклад, всі мережі банкоматів нашої країни працюють з використанням тунелювання для забезпечення безпеки.

    Ризики

    В якості корисної речі, безсумнівно, виступає SSH тунелювання. Воно включає ризики, які необхідно вирішувати корпоративним ІТ-відділом безпеки. З'єднання безкоштовних SSH-тунелів захищені сильним шифруванням. Це робить їх вміст невидимим для більшості розгорнутих рішень мережевого моніторингу та фільтрації трафіку. Ця невидимість несе значний ризик, якщо вона використовується для шкідливих цілей, таких як фільтрація даних. Кіберзлочинці або шкідливе ПЗ можуть використовувати брут SSH-тунелів для приховування своїх несанкціонованих повідомлень або для вилучення викрадених даних з цільової мережі.
    SSH-тунелі: налаштування, використання
    У SSH-тунельній атаці зловмисник встановлює сервер за межами цільової мережі (наприклад, Amazon AWS). Як тільки шахрай виявляється в цільовій системі, він підключається до зовнішнього сервера SSH зсередини. Більшість організацій дозволяють вихідні з'єднання SSH-тунель Linux, принаймні, якщо вони мають сервери в загальнодоступному хмарі. Це SSH-з'єднання налагоджене з опцією, яка дозволяє виробляти пересилку TCP-порту з порту на зовнішньому сервері SSH-порт на сервері у внутрішній мережі. Для налаштування цього тунелю SSH потрібна одна однострочная команда всередині, і її можна легко автоматизувати. Більшість брандмауерів практично не захищають від нього.