secure shell что это
Что такое SSH
В этой статье мы расскажем, что такое SSH, для чего он нужен и как работает.
SSH (от англ. secure shell ― безопасная оболочка) ― это защищённый сетевой протокол для удалённого управления сервером через интернет.
Подключиться удалённо можно на всех тарифах услуги хостинга (кроме Host-Lite), VPS, а также Dedicated.
Версии протокола SSH
Первая версия протокола (SSH-1) появилась в 1995 году. В то время широко использовались Telnet и FTP. Их главным недостатком была уязвимость соединения, поэтому SSH-подключение заинтересовало пользователей. Однако первая версия имела много технических недоработок. Через год появилась вторая, более безопасная версия протокола — SSH-2. Именно она в 2006 году была признана стандартным протоколом в интернете.
Функции SSH
Протокол SSH предназначен для:
SSH-соединение состоит из 2-х компонентов: SSH-сервер и SSH-клиент. Что такое SSH-сервер? Это программа, которая устанавливает связь и производит аутентификацию с устройством пользователя. Он установлен на самом сервере. SSH-клиент используется для входа на удалённую машину и передачи ей команд. Он устанавливается на устройстве, с которого пользователь хочет подключиться к серверу. Бесплатный вариант клиента и сервера — OpenSSH. В операционных системах Unix клиент для OpenSSH установлен по умолчанию. Для Windows нужно установить отдельное приложение — PuTTy.
Принцип работы SSH
Подключение проходит в 3 этапа:
После этих 3-х шагов устройство пользователя может передавать команды, получать или отправлять файлы.
Протокол SSH по умолчанию работает по порту 22. Несмотря на высокую защиту протокола, использование стандартного порта значительно повышает риск взлома сервера. Например, это можно сделать при помощи brute-force (атака полным перебором). Порт 22 — открытый, поэтому злоумышленнику нужно только подобрать логин и пароль к серверу. Это сложно, но возможно. Чтобы максимально ограничить доступ к серверу для злоумышленников, можно сменить SSH-порты. Как сменить порт, читайте в статьях:
Подробнее о том, как подключиться к серверу по SSH:
Secure shell что это
SSH-доступ используется для управления VPS/VDS и выделенных серверов, а также активно применяется в хостинге. Мы рекомендуем SSH только пользователям с навыками системного администратора.
Как работает SSH
Подключение по SSH применяет логин на сервере, а SSH-пароль является паролем этого пользователя.
SSH-сервер передает данные входящих соединений на 22-ом TCP-порте сервера хоста, но администратор сервера может назначить любой порт, исходя из соображений безопасности.
Для шифрования SSH использует специальные ключи, с помощью которых кодируются все передаваемые между клиентом и хостом данные.
В протоколе SSH используются три различных метода шифрования:
Симметричное шифрование
При симметричном кодировании один и тот же секретный ключ используется для шифрования и дешифрования пакетов данных и клиента, и хоста.
При установке соединения специальный алгоритм обмена ключами предварительно согласовывает ключ шифрования и потом использует его на протяжении всей сессии.
Асимметричное шифрование
Если вы используете для авторизации вместо пароля пару приватный+публичный ключ, то SSH применяет ассиметричное шифрование на этапе установки соединения. О том, как сгенерировать пару “приватный+публичный ключ”, читайте ниже.
Алгоритм подключения с асимметричными ключами работает так:
1. Хост и клиент используют свои публичные ключи для генерации общего секретного ключа шифрования сессии.
2. Затем хост шифрует данные публичным ключом и предлагает клиенту расшифровать их своим приватным ключом.
3. Если операция успешна, то клиент авторизуется на хосте с соответствующим именем пользователя.
4. Затем сессия продолжается уже с использованием симметричного шифрования.
Хэширование
В отличие от других схем шифрования, хэширование в SSH используется не для дешифровки данных, а для создания уникальных шифрованных ключей для подтверждения сообщений об аутентификации. Эти ключи (хэши) используются в механизме симметричного шифрования SSH-сессии.
Подключение по паролю на виртуальном хостинге
На виртуальном хостинге SSH используется реже, чем на VPS/VDS и выделенных серверах. Его применяют лишь некоторые провайдеры, например, Beget.
SSH-доступ в панели управления Beget
Чтобы работать с сервером при помощи командной строки Linux, пользователю нужно:
1. Включить опцию “SSH-доступ”.
2. Подключиться к своему серверу при помощи SSH-клиента, используя логин и пароль от личного кабинета.
На платформе Linux
SSH-Linux-клиент предустановлен на всех версиях операционной системы Linux. Также SSH-доступ заранее настроен на серверах под управлением Linux.
1. Пользователю Linux для применения SSH достаточно запустить терминал (так называется командная строка в Linux) и набрать команду:
2. Система предложит вам ввести пароль.
3. Произойдет соединение с удаленным компьютером-сервером, и вы сможете начать полноценную работу на нем.
В случае с ассиметричным методом шифрования, вводить пароль не требуется, аутентификация происходит посредством сопоставления уникальных ключей между клиентом и сервером.
На платформе Windows
На платформе Windows для использования протокола SSH разработано специальное программное обеспечение: SSH-клиенты.
Наиболее популярным является SSH Windows-клиент PuTTY, поддерживающий все современные стандарты шифрования для SSH.
1. Скачайте PuTTY с официального сайта на локальный компьютер, чтобы начать работу.
2. При запуске SSH-клиент PuTTY предложит ввести IP-адрес хоста для подключения. Например, 95.179.134.210.
3. Затем откроется окно терминала и приглашение для ввода имени пользователя и пароля, после чего вы соединитесь с удаленным сервером.
Подключение по ключам
Для Linux
Чтобы подключиться по SSH без пароля, необходимо создать пару приватный+публичный ключ и сохранить публичный ключ на хостинге.
1. В терминале выполните команду:
2. Программа спросит, куда нужно сохранить ключи.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
5. Приватный и публичный ключи созданы.
6. Чтобы загрузить публичный ключ на сервер в файл
/.ssh/authorized_keys, запустите на локальном компьютере команду:
Для Windows
SSH-Windows-клиент PuTTY умеет генерировать приватный и публичный ключи пользователя для их применения при подключении по SSH.
Для этого используется поставляемая в комплекте утилита puttygen.exe.
1. При запуске утилиты нажмите кнопку “Генерировать”.
2. Программа предложит вам подвигать мышью для создания случайной последовательности данных, затем генерируются ключи.
3. После создания ключи нужно сохранить на компьютер в виде текстовых файлов (Пункт “Сохранить сгенерированные ключи”, кнопки “Открытый ключ” и “Личный ключ” соответственно для публичного и приватного ключей).
7. После этого в самой программе PuTTY укажите имя пользователя для автовхода:
8. Подключите в файл SSH приватный ключ, предварительно сохраненный в утилите puttygen.exe:
9. После выполнения этих операций соединение с удаленным сервером по протоколу SSH произойдет без ввода пароля за счет пары публичный + приватный ключ:
Мы рекомендуем использовать пару приватный+публичный ключ как самый безопасный способ соединения по SSH.
Настройка SSH на сервере
На Linux-сервере за работу протокола SSH отвечает программа sshd из набора программного обеспечения openssh.
Конфигурационные файлы находятся в каталоге /etc/ssh.
Для управления настройками сервера SSH нужны привилегии суперпользователя root.
Сами настройки sshd не требуют изменений.
Мы советуем запретить подключение по SSH для пользователя root для повышения общей безопасности системы.
Применение протокола SSH для копирования файлов
Для Linux-платформы при копировании файлов через SSH используется утилита SCP (secure copy).
Например, чтобы скопировать файл “data” с локальной машины на удаленный сервер, применяется команда вида “scp data admin@95.179.134.210:data”.
Утилита scp запросит пароль пользователя и затем выполнит копирование:
Для Windows платформы используется протокол SFTP (Secure FTP), разработанный как замена обычного FTP.
Поддержка SFTP есть в популярном клиенте Filezilla. Для соединения необходимо знать имя пользователя и его пароль на удаленном сервере.
1. Чтобы указать использование протокола SFTP, в Filezilla перед адресом удаленного сервера в соответствующем поле добавьте префикс “sftp://”:
2. После установки соединения по протоколу SFTP работа с файлами и каталогами на удаленном сервере в Filezilla происходит точно так же, как при использовании обычного FTP.
Безопасность
Для повышения безопасности администратору сервера следует воспользоваться некоторым советами:
Провайдеры с виртуальным выделенным сервером (VPS)
Провайдеры предлагающие Linux-хостинг
Провайдеры предлагающие Windows-хостинг
От панели управления зависит ваше удобство в настройке хостинге\сайта.
Большинство качественных хостингов из нашего ТОПа используют удобные панели управления, поэтому рекомендуем больше внимания уделить другим параметрам при выборе.
Настоятельно рекомендуем не покупать слишком дешевый хостинг! Как правило с ним очень много проблем: сервер иногда не работает, оборудование старое, поддержка долго отвечает или не может решить проблему, сайт хостера глючит, ошибки в регистрации, оплате и т.д.
Также мы собрали тарифы от тысяч хостеров, чтобы вы могли выбрать хостинг по конкретной цене.
На языке программирования PHP и базах данных MySQL сейчас работает большинство сайтов. Они же поддерживаются практически всеми современными хостингами.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
SSH (Secure Shell)
Содержание
SSH предоставляет замены традиционным r-командам удаленного доступа с тем отличием, что они обладают повышенной безопасностью. Они выполняются поверх защищенных зашифрованных соединений, которые не позволяет прослушивать или подменять трафик. Кроме того, SSH может обеспечивать безопасное соединение для передачи любого другого трафика: например, почтовых сообщений или файлов.
Основные функции SSH
Протокол SSH возник как попытка обезопасить открытые незащищенные соединения. Впоследствии его функции были значительно расширены. Наиболее важными из них являются:
Обеспечение безопасности SSH
Безопасность протокола достигается использованием нескольких решений, которые сводят к минимуму риск использования соединения:
Аутентификация сервера
Аутентификация сервера производится при помощи инфраструктуры открытых ключей. Клиент, который хочет установить соединение с сервером шифрует данные известным ему открытым ключом сервера и отправляет их серверу. Сервер должен расшифровать их при помощи известного только ему секретного ключа, и отправить их назад. Так клиент может быть уверен в том, является ли хост тем, за кого себя выдает.
Аутентификация сервера дает возможность не полагаться на службу имен и маршрутизацию пакетов. В том случае, если нарушителю удалось подменить запись в DNS или перенаправить IP-пакеты на свой хост, аутентификация не пройдет, поскольку хост не обладает необходимыми секретными ключами.
ssh защищает от:
Аутентификация клиента SSH
Методы аутентификации клиентов, которые использует SSH:
Аутентификация в SSH с помощью открытых ключей
Создание и установка асимметричных ключей SSH
Аутентификация с использованием открытых ключей проходит следующим образом. Хост, на котором выполняется удаленная регистрация предлагает пользователю аутентифицировать себя. Для этого он пересылает сообщение, зашифрованное известным ему открытым ключом пользователя. Если пользователь расшифрует сообщение, значит он знает секретный ключ, следовательно, является тем за кого себя выдает.
/.ssh (разные файлы для разных алгоритмов шифрования). Открытые ключи должны быть в файлах authorized_keys и authorized_keys2 в каталоге
/.ssh на удаленном компьютере, на котором производится регистрация. В качестве домашнего рассматривается каталог пользователя, под именем которого выполняется регистрация. Файл authorized_keys используется для хранения открытых ключей для SSH1, а в authorized_keys2 — для SSH2.
SSH дает возможность использования одного из трех различных алгоритмов асимметричного шифрования RSA или DSA.
/.ssh/id_dsa ), а открытый в
Аналогично для второй версии SSH:
или воспользоваться утилитой ssh-copy-id
Можно ограничиться только второй версией SSH, однако в том случае, если SSH-сервер на удаленной машине не поддерживает SSH-протокол версии 2, аутентификацию с использованием открытых ключей провести не удастся.
После того, как аутентификация с использование открытых ключей настроена, доступ к удаленному компьютеру можно получить без пароля. Однако для того чтобы воспользоваться локальным секретным ключом нужно ввести парольную фразу.
Некоторые опции командной строки программы ssh-keygen
Опции ключа в
Для каждого открытого ключа в файлах
/.ssh/authorized_keys можно выставить опции, ограничивающие возможности клиента, аутентифицировавшегося по данному ключу. Опции находятся перед ключом.
Примеры
СОДЕРЖАНИЕ
Определение
SSH использует криптографию с открытым ключом для аутентификации удаленного компьютера и позволяет ему при необходимости аутентифицировать пользователя.
Аутентификация: управление ключами OpenSSH
В Unix-подобных системах список авторизованных открытых ключей обычно хранится в домашнем каталоге пользователя, которому разрешен удаленный вход, в файле
Закрытый ключ также можно искать в стандартных местах, а полный путь к нему можно указать в параметрах командной строки (параметр -i для ssh). SSH-серийник утилита производит открытые и закрытые ключи, всегда парами.
SSH также поддерживает аутентификацию на основе пароля, которая шифруется автоматически сгенерированными ключами. В этом случае злоумышленник может имитировать легитимную сторону сервера, запросить пароль и получить его ( атака «человек посередине» ). Однако это возможно только в том случае, если обе стороны никогда ранее не аутентифицировались, поскольку SSH запоминает ключ, который ранее использовала сторона сервера. Клиент SSH выдает предупреждение перед тем, как принять ключ нового, ранее неизвестного сервера. Парольную аутентификацию можно отключить со стороны сервера.
использование
SSH важен в облачных вычислениях для решения проблем с подключением, избегая проблем безопасности, связанных с открытием облачной виртуальной машины непосредственно в Интернете. Туннель SSH может обеспечить безопасный путь через Интернет через брандмауэр к виртуальной машине.
История и развитие
Версия 1.x
Было подсчитано, что к 2000 году количество пользователей выросло до 2 миллионов.
Версия 2.x
Версия 1.99
OpenSSH и OSSH
По состоянию на 2005 год OpenSSH был единственной самой популярной реализацией SSH, входящей по умолчанию в большое количество операционных систем. OSSH тем временем устарел. OpenSSH продолжает поддерживаться и поддерживает протокол SSH-2, исключив поддержку SSH-1 из кодовой базы с выпуском OpenSSH 7.6.
Использует
Протоколы передачи файлов
Протоколы Secure Shell используются в нескольких механизмах передачи файлов.
Архитектура
Протокол SSH-2 имеет внутреннюю архитектуру (определенную в RFC 4251) с хорошо разделенными уровнями, а именно:
Эта открытая архитектура обеспечивает значительную гибкость, позволяя использовать SSH для различных целей помимо безопасной оболочки. Функциональность одного транспортного уровня сравнима с безопасностью транспортного уровня (TLS); уровень аутентификации пользователя очень расширяем с помощью настраиваемых методов аутентификации; а уровень соединения обеспечивает возможность мультиплексирования множества вторичных сеансов в одно соединение SSH, функция, сравнимая с BEEP и недоступная в TLS.
Алгоритмы
Уязвимости
В 1998 году в SSH 1.5 была описана уязвимость, которая позволяла несанкционированно вставлять контент в зашифрованный поток SSH из-за недостаточной защиты целостности данных от CRC-32, используемого в этой версии протокола. Исправление, известное как SSH Compensation Attack Detector, было введено в большинство реализаций. Многие из этих обновленных реализаций содержали новую уязвимость целочисленного переполнения, которая позволяла злоумышленникам выполнять произвольный код с привилегиями демона SSH, обычно с правами root.
Поскольку SSH-1 имеет врожденные недостатки конструкции, которые делают его уязвимым, в настоящее время он обычно считается устаревшим, и его следует избегать, явно отключив откат к SSH-1. Большинство современных серверов и клиентов поддерживают SSH-2.
Восстановление открытого текста CBC
Возможные уязвимости
28 декабря 2014 года Der Spiegel опубликовал секретную информацию, просочившуюся разоблачителем Эдвардом Сноуденом, из которой следует, что Агентство национальной безопасности может расшифровать некоторый трафик SSH. Технические детали, связанные с таким процессом, не разглашаются. Проведенный в 2017 году анализ хакерских инструментов ЦРУ BothanSpy и Gyrfalcon показал, что сам протокол SSH не был взломан.
Документация по стандартам
Позже он был изменен и расширен следующими публикациями.
Кроме того, проект OpenSSH включает в себя несколько спецификаций / расширений протоколов поставщиков:
SSH (безопасная оболочка)
СОДЕРЖАНИЕ
Определение [ править ]
Аутентификация: управление ключами OpenSSH [ править ]
В Unix-подобных системах список авторизованных открытых ключей обычно хранится в домашнем каталоге пользователя, которому разрешен удаленный вход, в файле
Закрытый ключ также можно искать в стандартных местах, а полный путь к нему можно указать в параметрах командной строки (параметр -i для ssh). SSH-серийник утилита производит открытые и закрытые ключи, всегда парами.
SSH также поддерживает аутентификацию на основе пароля, которая шифруется автоматически сгенерированными ключами. В этом случае злоумышленник может имитировать легитимную сторону сервера, запросить пароль и получить его ( атака «человек посередине» ). Однако это возможно только в том случае, если обе стороны никогда ранее не аутентифицировались, поскольку SSH запоминает ключ, который ранее использовала сторона сервера. Клиент SSH выдает предупреждение перед тем, как принять ключ нового, ранее неизвестного сервера. Парольную аутентификацию можно отключить.
Использование [ править ]
SSH важен в облачных вычислениях для решения проблем с подключением, избегая проблем безопасности, связанных с открытием облачной виртуальной машины непосредственно в Интернете. Туннель SSH может обеспечить безопасный путь через Интернет через брандмауэр к виртуальной машине. [11]
История и развитие [ править ]
Версия 1.x [ править ]
Было подсчитано, что к 2000 году количество пользователей выросло до 2 миллионов. [17]
Версия 2.x [ править ]
Версия 1.99 [ править ]
OpenSSH и OSSH [ править ]
Использует [ редактировать ]
Протоколы передачи файлов [ править ]
Протоколы Secure Shell используются в нескольких механизмах передачи файлов.
Архитектура [ править ]
Протокол SSH-2 имеет внутреннюю архитектуру (определенную в RFC 4251 ) с хорошо разделенными уровнями, а именно:
Эта открытая архитектура обеспечивает значительную гибкость, позволяя использовать SSH для различных целей помимо безопасной оболочки. Функциональность одного транспортного уровня сравнима с безопасностью транспортного уровня (TLS); уровень аутентификации пользователя очень расширяем с помощью настраиваемых методов аутентификации; а уровень соединения обеспечивает возможность мультиплексирования множества вторичных сеансов в одно соединение SSH, функция, сравнимая с BEEP и недоступная в TLS.
Алгоритмы [ править ]
Уязвимости [ править ]
SSH-1 [ править ]
В 1998 году в SSH 1.5 была описана уязвимость, которая позволяла несанкционированно вставлять контент в зашифрованный поток SSH из-за недостаточной защиты целостности данных от CRC-32, используемого в этой версии протокола. [32] [33] Исправление, известное как SSH Compensation Attack Detector [34], было введено в большинство реализаций. Многие из этих обновленных реализаций содержали новую уязвимость целочисленного переполнения [35], которая позволяла злоумышленникам выполнять произвольный код с привилегиями демона SSH, обычно с правами root.
Поскольку SSH-1 имеет врожденные недостатки конструкции, которые делают его уязвимым, в настоящее время он обычно считается устаревшим, и его следует избегать, явно отключив откат к SSH-1. [37] Большинство современных серверов и клиентов поддерживают SSH-2. [38]
Восстановление открытого текста CBC [ править ]
Возможные уязвимости [ править ]
28 декабря 2014 года Der Spiegel опубликовал секретную информацию [40], просочившуюся информатором Эдвардом Сноуденом, из которой следует, что Агентство национальной безопасности может расшифровать некоторый трафик SSH. Технические детали, связанные с таким процессом, не разглашаются.
Анализ инструментов взлома BothanSpy и Gyrfalcon, проведенный в 2017 году, показал, что сам протокол SSH не был взломан. [41]
Документация по стандартам [ править ]
Позже он был изменен и расширен следующими публикациями.
Кроме того, проект OpenSSH включает в себя несколько спецификаций / расширений протоколов поставщиков: