Основные принципы работы протокола SSH | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Python Developer. Professional
-3%
Разработчик на Spring Framework
-5%
iOS Developer. Professional
-8%
Golang Developer. Professional
-6%
Базы данных
-12%
Agile Project Manager
-5%
Android Developer. Professional
-11%
Microservice Architecture
-5%
C++ Developer. Professional
-5%
Highload Architect
-6%
JavaScript Developer. Basic
-8%
Backend-разработчик на PHP
-9%
Разработчик IoT
-13%
PostgreSQL
-8%
Подготовка к сертификации Oracle Java Programmer (OCAJP) Framework Laravel Cloud Solution Architecture Reverse-Engineering. Professional Архитектура и шаблоны проектирования Node.js Developer Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes iOS Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool"
Инфраструктура
DevOps практики и инструменты
-12%
Базы данных
-12%
Network engineer. Basic
-10%
Network engineer
-4%
Экcпресс-курс «ELK»
-10%
Инфраструктурная платформа на основе Kubernetes
-6%
Administrator Linux.Basic
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Дизайн сетей ЦОД
-13%
PostgreSQL
-8%
Разработчик программных роботов (RPA) на базе UiPath и PIX Reverse-Engineering. Professional Внедрение и работа в DevSecOps Administrator Linux. Advanced Infrastructure as a code in Ansible Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Экспресс-курс «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Основные принципы работы протокола SSH

В этой заметке мы расскажем, как работает SSH, каким образом он применяется для создания безопасной связи с удалёнными компьютерами, и как именно ПК устанавливают и настраивают сеанс.

SSH — что это?

SSH представляет собой сокращение от «secure shell», что переводится как безопасная оболочка. А ещё это протокол, который всё чаще применяют в целях управления удалёнными персональными компьютерами по сети.

Как установить SSH-сессию?

Дабы начать SSH-сеанс между компьютерами, вам следует пройти ряд шагов: 1. Обеспечьте безопасный способ обмена сообщениями, что делается путём настройки зашифрованного канала. 2. Проверьте целостность данных, которые отправляет клиент. 3. Проверьте подлинность клиента.

Выполнив эти 3 шага, можно общаться с удалённым ПК безопасно и делиться конфиденциальной информацией. Давайте подробно опишем каждый из вышеописанных этапов.

Настраиваем зашифрованный канал

Все данные, которые отправляются с помощью протокола SSH, зашифрованы. Следовательно, обе стороны должны знать и понимать метод шифрования.

Как правило, здесь применяется симметричное шифрование. Суть проста: оба компьютера имеют один и тот же ключ шифрования, называемый симметричным.

Само по себе такое шифрование работает хорошо, но лишь пока посторонние не имеют доступа к этому ключу. Дело в том, что один компьютер может создать ключ, а потом отправить его в виде сообщения, используя глобальную сеть. Но так как сообщение ещё не будет зашифровано, каждый, кто его перехватит, сразу сможет расшифровать и все последующие сообщения.

Проблема решается с помощью протокола обмена ключами Диффи-Хеллмана. Два компьютера создают свой открытый и закрытый ключ, образуя вместе пару ключей. Далее компьютеры делятся открытыми ключами друг с другом посредством интернета. В результате, применяя свой закрытый и чужой открытый ключи, обе стороны смогут независимо друг от друга сгенерировать одинаковый симметричный ключ.

Верификация данных

Следующий этап установки SSH-сеанса — проверка, что данные не были подделаны в процессе их передачи, а также проверка, что другой компьютер действительно тот, за кого себя выдаёт.

Чтобы выполнить верификацию, используется хеш-функция — математическая функция, принимающая входные данные и создающая строку фиксированного размера. Особенность функции заключается в том, что почти нереально определить входные данные, зная только результат её работы.

После того, как хост и клиент сгенерируют свои симметричные ключи, клиент применит хеш-функцию для генерации HMAC («код аутентификации сообщений, применяющий хеширование») с последующей отправкой этого HMAC на сервер для верификации.

Что использует функция хеширования: • порядковый номер пакета; • симметричный ключ клиента, • зашифрованное содержимое сообщения.

В тот момент, когда хост получит HMAC, он сможет использовать ту же хеш-функцию со следующими тремя компонентами: • свой симметричный ключ, идентичный клиентскому; • зашифрованное сообщение; • порядковый номер пакета.

Если сформированный хеш будет совпадать с HMAC, полученным от клиента, мы будем уверены, что подключаемый компьютер является ПК с симметричным ключом, так как только клиент и хост знают симметричный ключ.

Плюс подхода — мы не только проверили личность клиента и убедились, что данные не подделаны, но и выполнили это без передачи какой-нибудь конфиденциальной информации.

Аутентификация

Даже используя симметричные ключи, мы точно не знаем, есть ли у подключающегося компьютера разрешение на доступ к содержимому хоста. Для проверки этого и нужна аутентификация.

Большинство выполняют аутентификацию по паролю, когда клиент отправляет хосту сообщение, содержащее пароль (сообщение, разумеется, зашифровано). Хост расшифровывает сообщение, а потом ищет пароль в БД, дабы убедиться, существует ли у клиента разрешение на доступ. Применение пароля для аутентификации в принципе допустимо, однако имеет минусы, ведь нужно хранить все пароли на сервере.

Лучший вариант — аутентификация по сертификату. Сформировав сертификат, клиент всего один раз вводит пароль, необходимый для доступа к серверу, с отправкой ему открытой части сертификата. Далее ввод пароля не потребуется. Этот метод считают более безопасным, ведь хранить секреты пользователя на хосте не потребуется.

Источник: «A top-down introduction to SSH and how it enables secure data-sharing».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться