SSH
Secure Shell SSH
|
- Уровень:
- Прикладной
- Семейство:
- TCP/IP
- Порт:
- 22 (TCP)
- Назначение:
- Удалённый доступ
- Спецификация:
- RFC 4251
- Серверы:
- 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[править | править код]
- Запрещение удаленного root-доступа.
- Запрещение подключения с пустым паролем или отключение входа по паролю.
- Выбор нестандартного порта для SSH-сервера.
- Использование длинных SSH2 RSA-ключей (2048 бит и более). По состоянию на 2006 год система шифрования на основе RSA считалась надёжной, если длина ключа не менее 1024 бит. *) (см. КОММЕНТАРИЙ В КОНЦЕ ТЕКСТА)
- Ограничение списка IP-адресов, с которых разрешен доступ. Например, настройкой файрвола.
- Запрещение доступа с некоторых, потенциально опасных адресов.
- Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.
- Регулярный просмотр сообщений об ошибках аутентификации.
- Установка детекторов атак (IDS, Intrusion Detection System).
- Использование ловушек, подделывающих 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. Используя законы квантовой механики, можно легко решать задачу факторизации чисел.
См. также[править | править код]
Ссылки[править | править код]
- Стандарты
- RFC4251. The Secure Shell (SSH) Protocol Architecture (англ.)
- RFC4251. Архитектура протокола SSH (русск.)
- Программы терминального доступа
- OpenSSH — свободная библиотека и набор утилит для поддержки шифрования, открытый код
- PuTTY — популярный кроссплатформенный SSH-клиент
- ShellGuard — SSH-клиент
- SecureCRT — SSH-клиент
- Сравнение SSH-клиентов (англ.)
- Программы доступа к файлам
- FTP Commander Deluxe — популярная программа поддерживает все безопасные протоколы
- WinSCP [1] — SFTP-клиент для Microsoft Windows
- SSH Filesystem [2] — позволяет подключить директорию, доступную на удаленной машине по ssh, как локальную директорию в GNU/Linux.
- Прочее
- Защита SSH в GNU/Linux от взлома
- Краткое введение в SSH
- Сравнение SSH-клиентов
- PuTTY под Windows
- Работаем с PuTTY из Windows
- Русскоязычный сайт PuTTY (русск.)
- Форк PuTTY для iPhone и iPod
- Теория и практика использования SSH
- SSH в Windows
- Analyzing Malicious SSH Login Attеmpts