Открыть сервисСервис

SSHv2

SSHv2 — это вторая версия протокола Secure Shell (SSH), предназначенного для удалённого управления операционными системами и туннелирования сетевых соединений. SSHv2 обеспечивает шифрование, аутентификацию и целостность передаваемых данных, заменяя устаревшую первую версию (SSHv1), которая была признана небезопасной. Протокол является стандартом де-факто для безопасного администрирования Unix-подобных систем, сетевого оборудования и серверов.

История

Разработка SSH началась в 1995 году финским исследователем Тату Юлёненом (Tatu Ylönen) как ответная реакция на атаку перехвата паролей в сети Хельсинкского технологического университета. Первая версия (SSHv1) быстро получила распространение, но уже к концу 1990-х годов в ней были обнаружены критические уязвимости, включая возможность внедрения данных в поток и подмену пакетов.

В 1996 году была выпущена вторая версия протокола (SSHv2), которая кардинально переработала архитектуру безопасности. В отличие от SSHv1, в SSHv2 используется строгий механизм проверки целостности (HMAC), более надёжная криптография (с возможностью выбора алгоритмов) и улучшенный протокол аутентификации. В 2006 году рабочая группа IETF (Internet Engineering Task Force) опубликовала спецификацию SSHv2 в виде серии RFC (RFC 4250–4254), что сделало его открытым стандартом.

С 2006 года поддержка SSHv1 была объявлена устаревшей, а в большинстве современных реализаций (например, OpenSSH) она отключена по умолчанию или полностью удалена.

Архитектура протокола

SSHv2 состоит из трёх основных уровней, работающих поверх транспортного протокола (обычно TCP, порт 22):

Транспортный уровень (Transport Layer)

Обеспечивает:

  • Шифрование — все данные, включая пароли и команды, шифруются. Поддерживаются симметричные алгоритмы: AES, ChaCha20, 3DES (устарел), Blowfish (устарел).
  • Аутентификацию сервера — клиент проверяет подлинность сервера по ключу хоста (host key). Ключи могут быть RSA, ECDSA, Ed25519.
  • Целостность — каждый пакет защищён кодом аутентичности сообщения (HMAC) на основе SHA-1, SHA-2 или MD5 (устарел).
  • Сжатие — опционально, алгоритмы zlib или zlib@openssh.com.

Уровень аутентификации (Authentication Layer)

После установки защищённого канала клиент проходит аутентификацию. Поддерживаются методы:

  • Парольная аутентификация — передаётся в зашифрованном виде.
  • Аутентификация по открытому ключу (publickey) — наиболее безопасный метод. Клиент доказывает владение приватным ключом, соответствующим публичному ключу, заранее добавленному в файл authorized_keys на сервере.
  • Keyboard-interactive — сервер может запрашивать несколько ответов (например, одноразовые пароли, ответы на вопросы).
  • GSSAPI (Kerberos) — для интеграции с корпоративными системами аутентификации.
  • Hostbased — аутентификация на основе имени хоста клиента (редко используется).

Уровень соединения (Connection Layer)

Управляет мультиплексированием нескольких логических каналов (сессий) поверх одного защищённого соединения. Каждый канал может быть:

  • Интерактивной сессией (shell) — для выполнения команд.
  • Туннелем (forwarded-tcpip) — для перенаправления TCP-портов (проброс портов).
  • X11-туннелем — для безопасной передачи графического интерфейса X Window System.
  • SCP/SFTP-каналом — для передачи файлов.

Отличия SSHv2 от SSHv1

ХарактеристикаSSHv1SSHv2
Целостность данныхCRC-32 (подвержена атакам)HMAC (надёжный)
Аутентификация сервераВстроена в протоколОтдельный этап
ШифрованиеФиксированный алгоритм (IDEA)Гибкий выбор (AES, ChaCha20 и др.)
Защита от подменыОтсутствуетВстроенная
МультиплексированиеОграниченноеПолноценное (каналы)
Поддержка SFTPНетДа

Реализации

Наиболее распространённая реализация SSHv2 — OpenSSH (OpenBSD Secure Shell), разрабатываемая проектом OpenBSD. Она входит в состав большинства дистрибутивов Linux, macOS, а также доступна для Windows (через WSL или отдельные сборки). Другие реализации:

  • PuTTY (Windows) — графический клиент, поддерживающий SSHv2.
  • Dropbear — лёгкая реализация для встраиваемых систем.
  • libssh — библиотека для разработки приложений.
  • Tectia SSH (коммерческая, ранее SSH Communications Security).

Применение

SSHv2 используется в следующих сценариях:

  • Удалённое администрирование серверов, маршрутизаторов, коммутаторов.
  • Безопасная передача файлов через SFTP (SSH File Transfer Protocol) и SCP (Secure Copy).
  • Туннелирование трафика (VPN-подобные решения) — проброс портов для доступа к внутренним ресурсам через зашифрованный канал.
  • Автоматизация — выполнение команд на удалённых машинах в скриптах (например, с помощью Ansible, использующего SSH).
  • Git-операции — протокол Git over SSH для безопасного доступа к репозиториям.

Безопасность

SSHv2 считается криптографически стойким протоколом при условии использования современных алгоритмов (AES-256-GCM, Ed25519, SHA-2). Основные угрозы:

  • Атака «человек посередине» (MITM) — возможна, если клиент не проверяет ключ хоста сервера (например, при первом подключении без fingerprint).
  • Атаки на слабые ключи — использование устаревших алгоритмов (RSA-1024, DSA, SHA-1) снижает безопасность.
  • Атаки на реализацию — уязвимости в OpenSSH или PuTTY (например, CVE-2024-6387 — regreSSHion, позволявшая выполнение кода в некоторых версиях OpenSSH до 9.8).
  • Брутфорс-атаки — перебор паролей. Защита: использование ключей, отключение парольной аутентификации, fail2ban.

Рекомендуется отключать поддержку SSHv1, использовать только ключи Ed25519 или RSA-4096, а также применять многофакторную аутентификацию (например, с помощью TOTP).

Интересные факты

  • Протокол SSH изначально разрабатывался как замена rlogin, rsh и telnet, которые передавали данные в открытом виде.
  • Название «SSH» не является аббревиатурой от «Secure Shell» в официальной документации, но стало общепринятым.
  • В 2024 году была обнаружена уязвимость regreSSHion в OpenSSH, которая позволяла удалённо выполнять код на серверах с определёнными версиями протокола.
  • SSH-ключи могут использоваться не только для аутентификации, но и для подписи данных (например, в Git).
  • В России SSH широко применяется для администрирования серверов на базе Linux, включая государственные информационные системы, при условии использования сертифицированных криптографических модулей (например, ГОСТ-шифрование в OpenSSH через патчи).

Источники

  • RFC 4250 — «The Secure Shell (SSH) Protocol Assigned Numbers»
  • RFC 4251 — «The Secure Shell (SSH) Protocol Architecture»
  • RFC 4252 — «The Secure Shell (SSH) Authentication Protocol»
  • RFC 4253 — «The Secure Shell (SSH) Transport Layer Protocol»
  • RFC 4254 — «The Secure Shell (SSH) Connection Protocol»
  • OpenSSH Project: официальная документация (openssh.com)
  • Ylönen, T. (1995). «SSH — Secure Login Connections over the Internet»
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru