0Pricing
Cryptology Academy · Урок

SSH: защита удалённого доступа

Изучите рукопожатие SSH, аутентификацию по ключу хоста и способы защиты SSH удалённых сеансов

«SSH: защита удалённого доступа» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

SSH-1 и SSH-2: история отказа от SSH-1

SSH-1, исходный протокол защищённой оболочки, содержал фундаментальный изъян проектирования, позволявший активному злоумышленнику незаметно внедрять произвольные данные в зашифрованный сеанс. SSH-2, полностью переработанный протокол, опубликованный в 2006 году как RFC 4251–4254, устранил эти слабые места благодаря отдельным протоколам уровней транспорта, аутентификации и соединения, а также более надёжной проверке целостности с помощью HMAC. SSH-1 признан устаревшим, и ни один современный сервер не должен его включать.

Транспортный уровень SSH: шифрование и целостность

Протокол транспортного уровня SSH выполняет первоначальный обмен ключами и устанавливает зашифрованный канал с защитой целостности. Он согласовывает алгоритмы для обмена ключами (обычно ECDH), аутентификации узла (обычно Ed25519 или RSA), симметричного шифрования (обычно AES-256-CTR или ChaCha20-Poly1305) и MAC (обычно HMAC-SHA2-256). Каждый последующий пакет шифруется и проверяется на целостность с использованием согласованных алгоритмов.

Уровень аутентификации пользователя SSH

После защиты транспортного уровня уровень аутентификации пользователя определяет, как пользователь доказывает серверу свою личность. Распространены три метода: пароль (пользователь вводит пароль, который передаётся в зашифрованном виде через транспортный уровень), открытый ключ (пользователь доказывает, что владеет закрытым ключом, соответствующим разрешённому на сервере открытому ключу) и GSSAPI (интеграция с Kerberos для единого входа в корпоративных средах).

Уровень соединений SSH: мультиплексированные каналы

Уровень соединений SSH объединяет несколько логических каналов в рамках одного зашифрованного транспортного соединения. В обычном сеансе SSH один канал используется для интерактивной оболочки. Дополнительные каналы поддерживают перенаправление портов, перенаправление X11 и передачу файлов через SFTP, причём все они используют одно и то же аутентифицированное и зашифрованное соединение. Запросы каналов позволяют клиенту запросить псевдотерминал, задать переменные окружения или выполнить определённую команду.

Проверка ключа узла и TOFU

При первом подключении к серверу SSH клиент получает ключ узла сервера и должен решить, доверять ли ему. Политика по умолчанию — доверие при первом использовании (TOFU): пользователю предлагается проверить отпечаток ключа (обычно отображаемый как хеш, например SHA256:...), и после принятия он сохраняется в файле known_hosts. При последующих подключениях сохранённый ключ сравнивается с ключом, который предъявляет сервер, а несовпадение вызывает строгое предупреждение о возможной атаке посредника.

known_hosts и отпечатки ключей

Файл known_hosts, расположенный по адресу ~/.ssh/known_hosts, содержит базу данных ключей узлов серверов, проиндексированную по именам узлов и IP-адресам. Каждая запись связывает адрес сервера с его открытым ключом. Если ключ сервера изменится, например после переустановки сервера или потому, что злоумышленник выдаёт себя за него, SSH откажется устанавливать соединение и выведет предупреждение. Администраторы используют аутентификацию узлов на основе сертификатов, чтобы принимать решения о доверии TOFU в больших масштабах.

authorized_keys для входа без пароля

При аутентификации по открытому ключу открытый ключ пользователя сохраняется в ~/.ssh/authorized_keys на сервере. При подключении пользователя сервер отправляет запрос, зашифрованный открытым ключом; только владелец соответствующего закрытого ключа может правильно на него ответить, подтверждая личность без передачи закрытого ключа или пароля. Это безопаснее паролей, поскольку закрытые ключи никогда не отправляются по сети и не могут быть выманены с помощью фишинга.

Алгоритмы ключей SSH

Широко используются три семейства алгоритмов ключей SSH. Ключи RSA длиной 3072 или 4096 бит совместимы со всеми серверами. ECDSA с кривой NIST P-256 работает быстрее RSA при эквивалентном уровне безопасности, однако параметры безопасности P-256 вызывают вопросы. Ed25519, основанный на алгоритме цифровой подписи на кривой Эдвардса, сегодня рекомендуется: он использует быстрые небольшие ключи длиной 256 бит, обладает надёжными свойствами безопасности и не требует специальных параметров, которые могли бы вызывать сомнения.

История SSH: порт 22 и Tatu Ylönen

Tatu Ylönen, финский исследователь из Хельсинкского университета технологии, разработал SSH в 1995 году после атаки с перехватом паролей в университетской сети, в результате которой были раскрыты сотни учётных данных. Он выбрал порт 22, поскольку он находится между telnet (23) и FTP (21). SSH заменил оба небезопасных протокола. Ylönen основал SSH Communications Security, а позднее выпустил SSH-2 как открытый стандарт через IETF. OpenSSH, наиболее распространённая свободная реализация, была создана проектом OpenBSD в 1999 году.

Безопасность агента SSH и перенаправления ключей

Агент SSH — это фоновый процесс, который хранит расшифрованные закрытые ключи в памяти, позволяя выполнять единый вход на несколько серверов без повторного ввода парольной фразы. Перенаправление агента (флаг -A) расширяет эту возможность, перенаправляя подключение к агенту на удалённые серверы и позволяя получить доступ в один переход к внутренним серверам. Однако перенаправление агента представляет угрозу безопасности: скомпрометированный удалённый сервер может использовать перенаправленный агент для аутентификации на других серверах от имени пользователя. Вместо перенаправления агента используйте ProxyJump.

Рекомендации по усилению защиты SSH

Безопасная конфигурация SSH включает запрет входа пользователя root (PermitRootLogin no), отключение аутентификации по паролю (PasswordAuthentication no) в пользу использования только открытых ключей, применение ключей узлов Ed25519, включение только протокола SSH-2, настройку ограничений времени ожидания для бездействующих сеансов, ограничение списка разрешённых пользователей с помощью AllowUsers или AllowGroups, а также смену порта по умолчанию как меры сокрытия для уменьшения шума от автоматических сканирований. Fail2ban и подобные инструменты блокируют IP-адреса при многократных неудачных попытках.

Методы аутентификации SSH

Почему аутентификация по открытому ключу в SSH считается более безопасной, чем аутентификация по паролю?

SSH: главное

SSH-2 заменил flawed SSH-1 отдельными уровнями транспорта, аутентификации и соединения. Транспортный уровень согласовывает шифрование и целостность. Аутентификация пользователя поддерживает пароли, открытые ключи и GSSAPI. Проверка ключа узла использует TOFU и known_hosts. Ed25519 — рекомендуемый алгоритм ключей. Перенаправление агента представляет угрозу безопасности; вместо него используйте ProxyJump. Усиление защиты включает отключение входа root и аутентификации по паролю.

Часто задаваемые вопросы

Урок «SSH: защита удалённого доступа» бесплатный?

Да — полный текст урока «SSH: защита удалённого доступа» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «SSH: защита удалённого доступа»?

Изучите рукопожатие SSH, аутентификацию по ключу хоста и способы защиты SSH удалённых сеансов Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «SSH: защита удалённого доступа»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что делает протокол безопасным
  2. SSH: защита удалённого доступа
  3. SFTP и SCP: безопасная передача файлов
  4. DNSSEC: аутентификация ответов DNS
← Назад к Cryptology Academy