SSH

Материал из Russian Underground
Перейти к: навигация, поиск

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

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

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

Содержание

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

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

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

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

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

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

Протокол SSH-2 в отличие от протокола telnet устойчив к атакам прослушивания трафика («снифинг»), но неустойчив к атакам «MITM|man-in-the-middle». Протокол SSH-2 также устойчив к атакам путем присоединения посредине - невозможно включиться в или перехватить уже установленную сессию.

Для предотвращения атак «MITM|man-in-the-middle» при подключении к хосту, ключ которого ещё не известен клиенту, клиентское ПО показывает пользователю "слепок ключа" (key fingerprint). Рекомендуется тщательно проверять показываемый клиентским ПО "слепок ключа" (key fingerprint) со слепком ключа сервера, желательно полученным по надежным каналам связи или лично.

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

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

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

SSH-серверы

SSH-клиенты и оболочки

  • GNU/Linux, *BSD: kdessh, lsh-client, openssh-client, putty, ssh
  • MS Windows и Windows NT: PuTTY, SecureCRT, ShellGuard, Axessh, ZOC, SSHWindows, ProSSHD, XShell
  • MS Windows Mobile: PocketPuTTy, mToken, sshCE, PocketTTY, OpenSSH, PocketConsole
  • Mac OS: NiftyTelnet SSH
  • Symbian OS: PuTTY
  • Java: MindTerm, AppGate Security Server
  • J2ME: MidpSSH
  • iPhone: i-SSH, ssh (в комплекте с Terminal)
  • Android: connectBot
  • Blackberry: BBSSH
  • MAEMO 5: OpenSSH

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

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

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

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

$ ssh -p 30000 pacify@127.0.0.1

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

$ puttygen -t rsa -b 4096 -o sample

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

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

SSH-туннелирование

SSH-туннель — это туннель, создаваемый посредством SSH-соединения и используемый для шифрования туннелированных данных. Используется для того, чтобы обезопасить передачу данных в Интернете (аналогичное назначение имеет IPsec). Особенность состоит в том, что незашифрованный трафик какого-либо протокола шифруется на одном конце SSH-соединения и расшифровывается на другом.

Практическая реализация может выполняться двумя способами:

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

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

SSH — это протокол прикладного уровня (или уровня приложений). SSH-сервер обычно прослушивает соединения на TCP-порту 22. Спецификация протокола SSH-2 содержится в RFC 4251. Для аутентификации сервера в SSH используется протокол аутентификации сторон на основе алгоритмов Электронная цифровая подпись|электронно-цифровой подписи RSA или DSA. Для аутентификации клиента также может использоваться ЭЦП RSA или DSA, но допускается также аутентификация при помощи пароля (режим обратной совместимости с Telnet) и (даже!) ip-адреса хоста (режим обратной совместимости с rlogin). Аутентификация по паролю наиболее распространена; она безопасна, так как пароль передается по зашифрованному виртуальному каналу. Аутентификация по ip-адресу небезопасна, эту возможность чаще всего отключают. Для создания общего секрета (сеансового ключа) используется алгоритм Диффи — Хеллмана (DH). Для шифрования передаваемых данных используется симметричное шифрование, алгоритмы Advanced Encryption Standard|AES, Blowfish или 3DES. Целостность переданных данных проверяется с помощью CRC32 в SSH1 или HMAC-SHA1/HMAC-MD5 в SSH2.

Для сжатия шифруемых данных может использоваться алгоритм LempelZiv (LZ77), который обеспечивает такой же уровень сжатия, что и архиватор ZIP. Сжатие SSH включается лишь по запросу клиента, и на практике используется редко.

См. также

  • SFTP
  • SCP
  • SSL
  • TLS

Ссылки

Стандарты
  • RFC 4250 — The Secure Shell (SSH) Protocol Assigned Numbers
  • RFC 4251 — The Secure Shell (SSH) Protocol Architecture
  • RFC 4252 — The Secure Shell (SSH) Authentication Protocol
  • RFC 4253 — The Secure Shell (SSH) Transport Layer Protocol
  • RFC 4254 — The Secure Shell (SSH) Connection Protocol
  • RFC 4255 — Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
  • RFC 4256 — Generic Message Exchange Authentication for the Secure Shell Protocol (SSH)
  • RFC 4335 — The Secure Shell (SSH) Session Channel Break Extension
  • RFC 4344 — The Secure Shell (SSH) Transport Layer Encryption Modes
  • RFC 4345 — Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4419 — Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4432 — RSA Key Exchange for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4716 — The Secure Shell (SSH) Public Key File Format
SSH-клиенты
  • OpenSSH — свободная библиотека и набор утилит для поддержки шифрования
  • PuTTY — популярный кроссплатформенный SSH-клиент
  •  :en:Comparison of SSH clients|Сравнение SSH-клиентов
  • MidpSSH — SSH-клиент для мобильных телефонов
Программы доступа к файлам
  • FTP Commander Deluxe — популярная программа поддерживает все безопасные протоколы
  • WinSCP — SFTP-клиент для Microsoft Windows
  • SftpDrive — SFTP-клиент для Microsoft Windows
  • SSH Filesystem — позволяет подключить директорию, доступную на удаленной машине по ssh, как локальную директорию в GNU/Linux.
Прочее
Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Сцена
Материалы
Разное
Donate
Инструменты