SSH: различия между версиями
Editor (обсуждение | вклад) м исправление опечаток и уточнение формулировок |
Editor (обсуждение | вклад) доработка текста |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 6: | Строка 6: | ||
=== Аутентификация по паролю === | === Аутентификация по паролю === | ||
Наиболее простой вариант | Наиболее простой вариант аутентификации для SSH — это использование логина и пароля. Обычно это те же логин и пароль, которые используются при входе в систему (на сервере). При этом для пользователя root аутентификация по паролю в SSH часто отключена из соображений безопасности. | ||
=== Аутентификация с использованием алгоритмов электронной подписи с открытым ключом === | === Аутентификация с использованием алгоритмов электронной подписи с открытым ключом === | ||
| Строка 20: | Строка 20: | ||
Некоторые приложения для генерации ключей могут разбивать длинную строку на несколько более коротких строк, при этом на сервере может потребоваться привести его к описанному выше виду. | Некоторые приложения для генерации ключей могут разбивать длинную строку на несколько более коротких строк, при этом на сервере может потребоваться привести его к описанному выше виду. | ||
== Предотвращение атак типа MITM == | |||
Для предотвращения атак типа [[MITM]] при первом подключении к серверу клиетская программа показывает удалённому пользователю отпечаток ключа сервера. Пользователь должен иметь возможность получить для сравнения этот отпечаток другим путём, и подтверждать подключение только убедившись в подлинности сервера. При повторном подключении запрос на подтверждение не выводится, пока открытый ключ сервера не поменяется. | |||
При игнорировании этой проверки существует техническая возможность перехватить пароль и другую информацию, передаваемую между клиентом и сервером: злоумышленник, имеющий возможность перехватывать пакеты, пересылаемые между клиентом и сервером, может создать свой сервер SSH, отвечающий вместо настоящего, который получит таким образом введённые пользователем логин и пароль, далее установит соединение с настоящим сервером с учётными данными легального пользователя, и будет передавать команды пользователя на настоящий сервер, возвращая пользователю ответы настоящего сервера. При этом для пользователя и для настоящего сервера соединение будет выглядеть защищённым. Однако у сервера злоумышленника будет своя пара криптографических ключей, и, если пользователь проверит отпечаток, то увидет несоответствие и обнаружит атаку. | |||
Если отпечаток ключа сервера был проверен, но, при очередном подключении, неожиданно снова был выдан запрос на подтверждение, это означает, что либо администратор системы поменял ключ сервера, либо происходит попытка атаки типа MITM. | |||
== Приложения для работы по протоколу SSH == | == Приложения для работы по протоколу SSH == | ||
| Строка 30: | Строка 39: | ||
=== Серверные приложения === | === Серверные приложения === | ||
* sshd (OpenSSH) | * sshd (OpenSSH) | ||
== См. также == | |||
* [https://datatracker.ietf.org/doc/html/rfc4251 RFC 4251 «The Secure Shell (SSH) Protocol Architecture»] | |||
Текущая версия от 00:39, 11 февраля 2024
SSH — сетевой криптографический протокол, предназначенный для безопасного доступа к удалённой командной оболочке, а также для создания защищённых туннелей.
Протокол SSH основан на клиент-серверной архитектуре, работает по протоколу TCP, стандартный порт для сервера SSH — 22. Он является основным вариантом для удалённого администрирования UNIX-подобных операционных систем, предоставляя защищённый доступ к командной оболочке по незащищённой сети. Аутентификация при работе по SSH обычно осуществляется при помощи логина и пароля или при помощи алгоритмов электронной подписи с открытым ключом, хотя существует вариант аутентификации по IP-адресу.
Аутентификация при подключении к серверу SSH
Аутентификация по паролю
Наиболее простой вариант аутентификации для SSH — это использование логина и пароля. Обычно это те же логин и пароль, которые используются при входе в систему (на сервере). При этом для пользователя root аутентификация по паролю в SSH часто отключена из соображений безопасности.
Аутентификация с использованием алгоритмов электронной подписи с открытым ключом
Данный вариант считается более безопасным и удобным, чем вариант с аутентификацией по паролю. Для его использования необходимо сгенерировать пару ключей, обычно это делается приложением, которое идёт в комплекте с SSH-клиентом. Закрытый ключ пользователь должен хранить в тайне от остальных (более того, при генерации ключевой пары будет предложено задать пароль, чтобы закрытый ключ хранился зашифрованным), а открытый ключ нужно передать администратору удалённой машины для того, чтобы администратор добавил открытый ключ в список разрешённых для SSH-сервера (это может делаться, например, добавлением ключа в файл .ssh/authorized_keys в домашнем каталоге пользователя на сервере). Для пользователя установление связи с удалённой машиной выглядит примерно так же, как в предыдущем варианте, но, в случае успешной аутентификации по ключу, пароль не запрашивается.
Данные открытого ключа выглядят следующим образом: это строка, в начале которой идёт информация о типе ключа (например, «ssh-ed25519» или «ssh-rsa»), далее, через пробел, идёт сам ключ в виде последовательности символов (размер которой зависит от типа ключа и его длины), далее, опять же, через пробел, может идти комментарий.
Пример открытого ключа:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE5rD/4RXDAsVtB4aVUJdFpfCiKIbFGrYxyKpk6php/F My personal key
Иногда, по ошибке, администратору удалённой машины пересылается не открытый ключ, а закрытый (обычно он хранится в файле с похожим названием), что является грубой ошибкой: один и тот же ключ может использоваться для доступа к разным серверам, и администратор одного из них, получив ошибочно высланный ключ, получит техническую возможность подключаться от имени пользователя к другим серверам. Отправлять третьим лицам закрытый ключ не следует, при этом отправка открытого ключа может считаться безопасной.
Некоторые приложения для генерации ключей могут разбивать длинную строку на несколько более коротких строк, при этом на сервере может потребоваться привести его к описанному выше виду.
Предотвращение атак типа MITM
Для предотвращения атак типа MITM при первом подключении к серверу клиетская программа показывает удалённому пользователю отпечаток ключа сервера. Пользователь должен иметь возможность получить для сравнения этот отпечаток другим путём, и подтверждать подключение только убедившись в подлинности сервера. При повторном подключении запрос на подтверждение не выводится, пока открытый ключ сервера не поменяется.
При игнорировании этой проверки существует техническая возможность перехватить пароль и другую информацию, передаваемую между клиентом и сервером: злоумышленник, имеющий возможность перехватывать пакеты, пересылаемые между клиентом и сервером, может создать свой сервер SSH, отвечающий вместо настоящего, который получит таким образом введённые пользователем логин и пароль, далее установит соединение с настоящим сервером с учётными данными легального пользователя, и будет передавать команды пользователя на настоящий сервер, возвращая пользователю ответы настоящего сервера. При этом для пользователя и для настоящего сервера соединение будет выглядеть защищённым. Однако у сервера злоумышленника будет своя пара криптографических ключей, и, если пользователь проверит отпечаток, то увидет несоответствие и обнаружит атаку.
Если отпечаток ключа сервера был проверен, но, при очередном подключении, неожиданно снова был выдан запрос на подтверждение, это означает, что либо администратор системы поменял ключ сервера, либо происходит попытка атаки типа MITM.
Приложения для работы по протоколу SSH
Клиентские приложения
Серверные приложения
- sshd (OpenSSH)