Безпечніший варіант для віддаленого доступу [2023]

Безпечний віддалений доступ: Порівняння SSH та Telnet

В епоху віддалених з’єднань, як користувачі, так і системні адміністратори потребують інструментів, що забезпечують безпеку, захищеність і швидкість віддаленої роботи. Говорячи про способи віддаленого підключення, на думку відразу спадають два основних протоколи: SSH та Telnet.

Який із цих протоколів краще підходить для віддаленого доступу: SSH чи Telnet? У цій статті ми детально розглянемо обидва варіанти та порівняємо їх, щоб з’ясувати, який з них є більш вигідним. Проведемо порівняльний аналіз SSH і Telnet.

Що таке віддалений доступ?

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

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

Що таке SSH?

Secure Shell, або Secure Socket Shell (SSH), – це мережевий протокол, що дозволяє комп’ютерам в незахищеній мережі безпечно взаємодіяти один з одним. Завдяки безпечному з’єднанню, користувач або адміністратор отримує можливість віддалено входити в систему, запускати програми та передавати файли через мережу за допомогою наскрізного шифрованого з’єднання.

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

Компанією, що розробила SSH, є Netscape Communications Corporation. Однак перші напрацювання в цій сфері належать фінському вченому-комп’ютернику Тату Ілонену. Він створив SSH після виявлення у своїй новій мережі вразливості, пов’язаної з аналізатором паролів.

Як працює SSH?

SSH є заміною застарілих протоколів віддаленого підключення, таких як Telnet, rlogin, rsh та інших. Хоча ці протоколи колись були популярними, вони не забезпечують належного рівня безпеки. SSH настільки надійний, що користувачі віддають перевагу йому перед такими протоколами передачі файлів як rcp (дистанційне копіювання) і FTP (протокол передачі файлів).

SSH працює за моделлю клієнт-сервер, де SSH-клієнт встановлює зв’язок із SSH-сервером.

  • SSH-клієнт – це програма, встановлена на комп’ютері або пристрої, яка ініціює SSH-з’єднання. Клієнт надсилає запит на SSH-сервер і чекає на його прийняття. Для підтвердження з’єднання з потрібним сервером, клієнт використовує шифрування відкритим ключем. Цей підхід унеможливлює спроби зловмисників видавати себе за сервер і красти важливу інформацію.
  • SSH-сервер відповідає за обробку SSH-з’єднань та надання відповідної служби. Для того, щоб приймати вхідні запити, SSH-сервер постійно очікує на TCP-порту 22 (порт за замовчуванням). Отримавши запит, сервер відповідає на нього та перевіряє автентичність клієнта за допомогою автентифікації відкритим ключем. Тільки після успішної аутентифікації клієнт отримує доступ до хост-системи.

Клієнт і сервер обирають алгоритм шифрування. Вони можуть відмовитись від використання слабших методів. Крім того, SSH підтримує кілька з’єднань, що дозволяє виконувати багато завдань (завантаження, редагування, запуск програми) через один SSH-канал.

Синтаксис SSH виглядає наступним чином:

$ ssh [email protected]

User_name – це ім’я користувача, яке використовується для підключення до хосту. Хостом може бути як IP-адреса, так і доменне ім’я.

Спрощений процес SSH виглядає наступним чином:

  • SSH-клієнт ініціює з’єднання з конкретним SSH-сервером.
  • SSH-сервер отримує запит на з’єднання та відправляє свій відкритий ключ клієнту.
  • Клієнт зберігає отриманий відкритий ключ сервера в своєму файлі хоста (для майбутніх підключень).
  • Сервер і клієнт узгоджують і встановлюють параметри з’єднання.
  • SSH пропонує надійне з’єднання з високим рівнем безпеки та захистом цілісності даних. Він також відповідає стандартам IETF і залишається незмінним протягом останніх 15 років.

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

    Що таке Telnet?

    Telnet розшифровується як Teletype Network. Це ще один широко використовуваний мережевий протокол, який забезпечує віддалене підключення через командний рядок. Подібно до SSH, його можна використовувати для віддаленого керування та виконання різних дій. Однак, на відміну від SSH, Telnet не має належного рівня безпеки.

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

    Як працює Telnet?

    Telnet встановлює текстовий зв’язок між терміналами клієнта і сервера. Він використовує модель клієнт-сервер з 8-бітовим з’єднанням.

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

    Синтаксис Telnet виглядає наступним чином:

    $ telnet hostname port

    Для отримання додаткової інформації про Telnet, ознайомтесь з командами Telnet для тестування та усунення проблем з підключенням.

    Коли і де слід використовувати SSH?

    SSH в основному використовується для:

    • Віддаленого адміністрування систем;
    • Дистанційного виконання команд;
    • Захисту трафіку додатків;
    • Передачі файлів.

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

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

    Коли і де слід використовувати Telnet?

    З огляду на відсутність безпеки в Telnet, його не рекомендується використовувати для віддалених з’єднань у незахищених мережах. Однак це не означає, що Telnet повністю марний.

    Telnet можна використовувати для:

    • Усунення неполадок SSH (так, ви правильно прочитали 😃);
    • Усунення несправностей FTP, SMTP і веб-серверів;
    • Перевірки, чи відкритий порт;
    • Доступу до надійних інтернет-мереж.

    SSH проти Telnet

    У цьому розділі ми порівняємо SSH та Telnet за різними критеріями. Якщо ви поспішаєте, перегляньте таблицю порівняння SSH та Telnet:

    SSH Telnet
    Безпека Високий рівень безпеки, де клієнт і сервер можуть домовитися про налаштування алгоритмів шифрування. Небезпечний, немає механізмів для захисту з’єднання або пакетів Telnet.
    Аутентифікація SSH використовує шифрування відкритим ключем для цілей автентифікації. Telnet не має механізму автентифікації. Він просто запитує ім’я користувача та пароль, які передаються без будь-якого захисту.
    Робота SSH використовує TCP-порт 22 за замовчуванням. Можна змінити його на інший порт для запобігання спробам несанкціонованого доступу. Telnet за замовчуванням використовує порт 23 для прослуховування вхідних з’єднань. Можна налаштувати його для захисту від несанкціонованого доступу.
    Модель Клієнт-серверна модель Клієнт-серверна модель
    Швидкість передачі даних Технічно нижча, ніж у Telnet, але майже непомітна під час реального використання. Швидша, ніж SSH, через відсутність протоколів безпеки.

    Безпека

    SSH є безпечним протоколом, який забезпечує захист з’єднання завдяки надійним протоколам шифрування. На відміну від нього, Telnet повністю позбавлений будь-яких заходів безпеки.

    У SSH клієнт і сервер можуть погоджувати параметри з’єднання, зокрема алгоритми наскрізного шифрування. Це дозволяє налаштувати блокування слабких алгоритмів шифрування і максимально захистити SSH-з’єднання.

    Коли між клієнтом і сервером встановлено з’єднання TCP/UDP, починається процес створення безпечного каналу.

    Для кращого розуміння захисту SSH, розглянемо склад SSH-пакета. Він складається з п’яти компонентів:

    • Довжина пакета: 4 байти, що вказує на загальний розмір пакета.
    • Розмір заповнення: 1 байт, вказує на обсяг наповнювача в пакеті.
    • Корисне навантаження: фактичні дані, що передаються, розмір яких може змінюватися.
    • Заповнення: випадкові байти, що додаються до корисного навантаження для підвищення рівня шифрування.
    • Код автентифікації повідомлення: тег для підтвердження автентичності пакета та гарантування цілісності даних.

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

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

    Аутентифікація

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

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

    Робота

    SSH за замовчуванням використовує TCP-порт 22, тоді як Telnet працює на TCP-порту 23. При використанні протоколів SSH або Telnet без вказання номера порту, команда автоматично намагається підключитися до портів 22 і 23 відповідно.

    Однак ці порти є загальновідомими і можуть бути використані хакерами для несанкціонованого доступу. Зміна портів SSH і Telnet на інші може допомогти уникнути цього ризику. Рекомендовано використовувати порти в діапазоні від 1024 до 65535.

    У Telnet команди надсилаються у форматі Network Virtual Terminal (NVT). Сервер Telnet здатний приймати і розуміти цей формат. Важливо відзначити, що в Telnet немає шифрування або автентифікації.

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

    Модель

    І SSH, і Telnet працюють за моделлю клієнт-сервер. Це вигідний підхід, оскільки клієнт-серверна модель має ряд переваг, серед яких:

    • Можливість горизонтального масштабування, де сервер може додавати ресурси за потреби.
    • Оптимізація клієнтів для правильного введення даних.
    • Розподіл обробки програм між клієнтом і сервером.

    Швидкість та накладні витрати

    Для повного розуміння відмінностей між SSH та Telnet потрібно оцінити їхній вплив. Зазвичай SSH вимагає більших накладних витрат, ніж Telnet, проте в реальних умовах різниця майже не відчувається.

    Технічно, як Telnet, так і SSH змінюють ключ через 1 годину підключення або після передачі 1 ГБ даних.

    З точки зору пропускної здатності, SSH має більші накладні витрати, однак це мінімально впливає на користувачів. Щодо навантаження на процесор клієнта та сервера, то воно є незначним завдяки ефективній реалізації стандарту AES у SSH-з’єднаннях.

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

    Варіанти використання SSH і Telnet

    У цьому розділі ми розглянемо деякі варіанти використання SSH та Telnet.

    Варіанти використання SSH:

    • Дистанційне виконання команд.
    • Безпечний доступ до ресурсів віддаленого комп’ютера.
    • Віддалена передача файлів.
    • Дистанційна доставка оновлень програмного забезпечення.
    • Налаштування автоматичної передачі файлів або ручної передачі.

    Варіанти використання Telnet:

    • Усунення несправностей SSH.
    • Усунення несправностей FTP, SMTP та веб-серверів.
    • Перевірка відкритості портів.
    • Доступ до надійних мереж інтернету.

    Висновок: який протокол кращий?

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

    Telnet, у свою чергу, поступово втрачає свою актуальність. Його вік наближається до 50 років. Проте він все ще може бути корисним для усунення несправностей SSH або перевірки, чи є порт відкритим. Адміністратори можуть використовувати Telnet для вирішення більшості мережевих проблем.