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 и регулярно пересматривать авторизованные ключи.