Що таке SSH

SSH (від англ. secure shell - безпечна оболонка) — це захищений мережевий протокол для віддаленого управління сервером через інтернет.

Версії протоколу SSH

Існують дві версії протоколу SSH. Перша (SSH-1) з'явилася 1995 року — тоді широко використовувалися Telnet і FTP. Їхнім головним недоліком була вразливість з'єднання, тому SSH-підключення зацікавило користувачів. Однак перша версія протоколу SSH-1 мала багато технічних недоробок. Через рік з'явилася більш безпечна друга версія протоколу — SSH-2. Саме її у 2006 році було визнано стандартним протоколом в інтернеті.

Функції SSH

Протокол SSH призначений для:

  • передачі даних (пошта, відео, зображення та інші файли) через захищене з'єднання,
  • дистанційного запуску програм і виконання команд на сервері через командний рядок,
  • стиснення файлів для зручної передачі даних,
  • переадресації портів та передачі шифрованого трафіку між портами різних машин.

SSH-з'єднання складається з 2-х компонентів: SSH-сервер та SSH-клієнт. Що таке SSH-сервер? Це програма, яка встановлює зв'язок та здійснює аутентифікацію з пристроєм користувача. Він встановлений на сервері. SSH-клієнт використовується для входу на віддалену машину та передачі команд. Він встановлюється на пристрої, з якого користувач хоче підключитись до сервера. Безкоштовний варіант клієнта та сервера – OpenSSH. В операційних системах Unix клієнт для OpenSSH встановлено за замовчуванням. Для Windows потрібно встановити окрему програму – PuTTy.

Принцип роботи SSH

Підключення відбувається в 3 етапи:

  1. Встановлення з'єднання TCP. TCP - протокол керування передачею даних. З його допомогою віддалений сервер та користувач можуть обмінюватися даними.
  2. Відкриття захищеного каналу. Виходячи з налаштувань з'єднання обидві сторони обмінюються інформацією про спосіб шифрування та стиснення даних.
  3. Аутентифікація користувача. Вона відбувається за допомогою відкритого ключа. У сервера та клієнта є публічний та приватний ключ. Публічний ключ доступний будь-кому. Приватний відомий лише власнику. Будь-який може зашифрувати повідомлення публічним ключем, але розшифрувати його можна лише приватним. Клієнт посилає ім'я користувача та свій публічний ключ. Сервер має список користувачів, які можуть підключатися до нього. Він перевіряє отриманий ключ за своїм списком. Якщо клієнт у списку, сервер генерує випадкове число, шифрує клієнта публічним ключем і відправляє його пристрою. Клієнт розшифровує число та відправляє його назад. Якщо все розшифровано правильно, відбувається успішна автентифікація.

Після цих 3-х кроків пристрій може передавати команди, отримувати чи відправляти файли.

Протокол SSH за замовчуванням працює за портом 22. Незважаючи на високий захист протоколу, використання стандартного порту значно підвищує ризик злому сервера. Наприклад, це можна зробити за допомогою brute-force (напад повним перебором). Порт 22 – відкритий, тому зловмиснику потрібно лише підібрати логін та пароль до сервера. Це складно, але можливо. Щоб максимально обмежити доступ до сервера для зловмисників, можна змінити порти SSH та встановити Fail2ban.