[править]
Материал из Википедии — свободной энциклопедии
SSH (англ. Secure Shell — «безопасная оболочка»[1]) — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и передачу файлов. Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы имеются для большинства операционных систем.
SSH позволяет безопасно передавать в незащищенной среде практически любой другой сетевой протокол, таким образом, можно не только удаленно работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры)[2]. Также 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., она бесплатна для некоммерческого использования. Эти реализации содержат практически одинаковый набор команд.
Существуют две версии протокола 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 ОС. Большую популярность протокол получил после широкого развития анализаторов трафика и способов нарушения работы локальных сетей, как альтернативное небезопасному протоколу Telnet решение для управления важными узлами.
- 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
- MS Windows Mobile: PocketPuTTy, mToken, sshCE, PocketTTY, OpenSSH, PocketConsole
- 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 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-сервер обычно прослушивает соединения на TCP-порту 22. Спецификация протокола SSH-2 содержится в RFC 4251. Для аутентификации сервера SSH использует алгоритм Diffie-Hellman’а. Для аутентификации клиента — шифрование с открытым ключом (оно сравнительно медленное). Для шифрования передаваемых данных — более быстрое симметричное шифрование. Среди алгоритмов шифрования с открытым ключом чаще всего используются RSA и DSA. Из симметричных алгоритмов — AES, Blowfish и 3DES. Целостность переданных данных проверяется с помощью CRC32 в SSH1 или HMAC-SHA1/HMAC-MD5 в SSH2.
Для сжатия шифруемых данных используется алгоритм LempelZiv (LZ77), который обеспечивает такой же уровень сжатия, что и архиватор ZIP.
- Стандарты
- Программы терминального доступа
- Программы доступа к файлам
- Прочее
Прикладной уровень: HTTP, DHCP, IRC, SNMP, DNS, NNTP, XMPP, SIP, BitTorrent, XDR, IPP…
-
- Электронная почта: SMTP, POP3, IMAP4 • Передача файлов: FTP, TFTP, SFTP • Удалённый доступ: rlogin, Telnet, SSH
Транспортный уровень: TCP, UDP, SCTP, DCCP, RTP, RUDP…
Сетевой уровень: IPv4, IPv6, ARP, RARP, ICMP, IGMP
Канальный уровень: Ethernet, 802.11 WiFi, Token ring, FDDI, PPP, HDLC, SLIP, ATM, DTM, X.25, Frame Relay, SMDS
Физический уровень: RS-232, EIA-422, RS-449 (англ.), EIA-485…
|