SSH (Secure Shell) — криптографічний мережевий протокол для безпечного віддаленого входу, виконання команд і передавання файлів через недовірену мережу.
Як працює SSH
Фінський дослідник Тату Юлонен створив SSH у 1995 році після атаки з перехопленням паролів у мережі свого університету. Протокол замінив небезпечні Telnet і rlogin, що передавали паролі відкритим текстом. Поточну версію SSH-2 описано в RFC 4251–4254, а найпоширеніша реалізація — OpenSSH, яку проєкт OpenBSD розвиває з 1999 року. SSH-сервери зазвичай слухають TCP-порт 22.
- Клієнт перевіряє ключ хоста сервера, і сторони узгоджують сеансові ключі через обмін ключами.
- Користувач проходить автентифікацію паролем, парою ключів на основі криптографії з відкритим ключем (наприклад, Ed25519) або SSH-сертифікатами.
- Зашифрований канал переносить сеанси командної оболонки, передавання файлів (SFTP, SCP) і тунелі з переадресацією портів.
Чому SSH важливий для безпеки
SSH — стандартний спосіб адміністрування Linux-серверів, мережевих пристроїв і хмарних інстансів, тому він пріоритетна ціль:
- Підбір паролів — ботнети постійно підбирають поширені паролі до відкритих SSH-серверів (див. брутфорс).
- Крадіжка ключів — незахищені закриті ключі та надмірно довірені файли authorized_keys уможливлюють горизонтальне переміщення між серверами.
- Вразливості й бекдори — бекдор у xz Utils (CVE-2024-3094) у 2024 році був націлений на сервери OpenSSH у низці дистрибутивів Linux через скомпрометовану бібліотеку, а regreSSHion (CVE-2024-6387) дозволяв віддалено виконувати код в OpenSSH на Linux із glibc.
Рекомендації
- Використовувати автентифікацію за ключами з парольною фразою й вимкнути вхід за паролем і від імені root.
- Не відкривати SSH безпосередньо в інтернет: використовувати VPN або bastion-хост і списки дозволених адрес.
- Обмежувати частоту спроб входу інструментами на кшталт fail2ban і додати MFA для критичних хостів.
- Вчасно оновлювати OpenSSH і регулярно переглядати авторизовані ключі.