Information.svg
Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка.
Статью следует исправить согласно стилистическим правилам проекта.
Secure Shell
SSH
Уровень:
Прикладной
Семейство:
TCP/IP
Порт:
22 (TCP)
Назначение:
Удалённый доступ
Спецификация:
RFC 4251
Реализация:
Клиенты:
OpenSSH, PuTTY, SecureCRT
Серверы:
OpenSSH

Что такое SSHПравить

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

SSH позволяет передавать через безопасный канал практически любой другой сетевой протокол, таким образом, можно не только удаленно работать на компьютере через shell, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры). Для этого используется Port Forwarding соединении TCP. Также, SSH может использовать сжатие передаваемых данных для последующей их шифрации, что удобно, например, для удаленного запуска клиентов X Window System.

Большинство хостинг-провайдеров за определенную плату предоставляют клиентам доступ к их домашнему каталогу по SSH. Это может быть удобно как для работы в командной строке, так и для удаленного запуска программ (в том числе графических приложений). Через SSH можно работать с консолью удалённого сервера, будто находясь рядом с ним.

Варианты произношенияПравить

  • 'Эс-эс-аш'

Стандарты и программные реализацииПравить

Первая версия протокола, SSH-1, была разработана в 1995 году исследователем Tatu Yl’nen из Технологического университета Хельсинки, Финляндия. SSH-1 был написан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 году была разработана более безопасная версия протокола, SSH-2, уже несовместимая с SSH-1. Протокол приобрел еще большую популярность, и к 2000 году его использовало уже порядка двух миллионов пользователей.

В 2006 году протокол был утвержден рабочей группой IETF в качестве Интернет‐стандарта.

Однако, в некоторых странах (Франция, Россия, Ирак и Пакистан) до сих пор требуется специальное разрешение в соответствующих структурах для использования определенных методов шифрования, включая SSH. См. закон Российской Федерации «О федеральных органах правительственной связи и информации».

Распространены две реализации SSH: собственническая коммерческая, и бесплатная свободная. Свободная реализация называется OpenSSH. К 2006 году 80 % компьютеров Интернет использовало именно OpenSSH. Собственническая реализация разрабатывается организацией SSH Inc., http://ssh.com/; она бесплатна для некоммерческого использования. Эти реазилации содержат практически одинаковый набор команд.

Существуют две версии протокола SSH: SSH-1 и SSH-2. В первой версии протокола есть существенные недостатки, поэтому в настоящее время SSH-1 практически нигде не применяется.

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

Протокол SSH-2 устойчив к атакам «man-in-middle», в отличие от протокола telnet. То есть, прослушивание трафика, «снифинг», ничего не дает злоумышленнику. Протокол SSH-2 также устойчив к атакам путем присоединения посредине (англ. session hijacking) и обманом сервера имен (DNS spoofing).

Поддержка SSH реализована во всех UNIX‑подобных системах, и на большинстве из них в числе стандартных утилит присутствуют клиент и сервер ssh. Существует множество реализаций SSH-клиентов и для не-UNIX ОС. Большую популярность протокол получил после широкого развития анализаторов трафика и способов нарушения работы локальных сетей, как альтернативное небезопасному телнету решение для управления важными узлами.


SSH-сервераПравить

  • OpenBSD: OpenSSH
  • Debian GNU/Linux: dropbear, lsh-server, openssh-server, ssh
  • MS Windows: freeSSHd, OpenSSH sshd, WinSSHD

SSH-клиенты и оболочкиПравить

  • Debian GNU/Linux: kdessh, lsh-client, openssh-client, putty, ssh
  • MS Windows и Windows NT: PuTTY, SecureCRT, ShellGuard, Axessh, ZOC, SSHWindows, ProSSHD
  • Mac OS: NiftyTelnet SSH
  • Symbian OS: PuTTY
  • Java: MindTerm, AppGate Security Server
  • J2ME: MidpSSH

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

Для соединения сервер и клиент должны создать пары ключей — открытых и закрытых — и обменяться открытыми ключами. Обычно используется также и пароль.

Рекомендации по безопасности использования SSHПравить

  1. Запрещение удаленного root-доступа.
  2. Запрещение подключения с пустым паролем или отключение входа по паролю.
  3. Выбор нестандартного порта для SSH-сервера.
  4. Использование длинных SSH2 RSA-ключей (2048 бит и более). По состоянию на 2006 год система шифрования на основе RSA считалась надёжной, если длина ключа не менее 1024 бит. *) (см. КОММЕНТАРИЙ В КОНЦЕ ТЕКСТА)
  5. Ограничение списка IP-адресов, с которых разрешен доступ. Например, настройкой файрвола.
  6. Запрещение доступа с некоторых, потенциально опасных адресов.
  7. Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.
  8. Регулярный просмотр сообщений об ошибках аутентификации.
  9. Установка детекторов атак (IDS, Intrusion Detection System).
  10. Использование ловушек, подделывающих SSH-сервис (honeypots).

Примеры использования SSHПравить

Команда подключения к локальному SSH-серверу из командной строки GNU/Linux или FreeBSD для пользователя pacify (сервер слушает нестандартный порт 30000):

$ ssh -p30000 [email protected]

Генерация пары SSH-2 RSA-ключей длиной 4096 бита программой puttygen

под UNIX‐подобными ОС:

$ puttygen -t rsa -b 4096 -o sample


Некоторые клиенты — например, PuTTY — имеют и графический интерфейс пользователя.


Для использования SSH в Python существуют модули вроде python-paramiko и python-twisted-conch.


Техническая информация о протоколеПравить

SSH — это протокол прикладного уровня (или уровня приложений). SSH-сервер обычно слушает соединения на TCP-порту номер 22. Спецификация протокола SSH-2 содержится в RFC 4251. Для аутентификации сервера SSH использует алгоритм Diffie-Hellman’а. Для аутентификации клиента — шифрование с открытым ключом (оно сравнительно медленное). Для шифрования передаваемых данных — симметричное шифрование (оно более быстрое). Среди алгоритмов шифрования с открытым ключом чаще всего используются RSA и DSA. Из симметричных алгоритмов — AES, Blowfish и 3DES. Целостность переданных данных проверяется с помощью CRC32 в SSH1 или HMAC-SHA1/HMAC-MD5 в SSH2. Для сжатия шифруемых данных используется алгоритм LempelZiv (LZ77), обеспечивает такую же компрессию, что и архиватор ZIP.

Безопасность RSAПравить

Безопасность алгоритма RSA (криптосистемы Ривеста-Шамира-Адельмана) основана на трудности задачи разложения больших чисел на множители. Это означает, что с появлением мощных компьютеров, основанных на квантовых вычислениях, не составит большого труда взломать RSA. Используя законы квантовой механики, можно легко решать задачу факторизации чисел.

См. такжеПравить

СсылкиПравить

Стандарты
Программы терминального доступа
Программы доступа к файлам
  • FTP Commander Deluxe — популярная программа поддерживает все безопасные протоколы
  • WinSCP [1]SFTP-клиент для Microsoft Windows
  • SSH Filesystem [2] — позволяет подключить директорию, доступную на удаленной машине по ssh, как локальную директорию в GNU/Linux.
Прочее

hu:Secure Shell lt:SSH