Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

OpenSSH (также известный как OpenBSD Secure Shell [a] ) - это набор безопасных сетевых утилит, основанный на протоколе Secure Shell (SSH), который обеспечивает безопасный канал через незащищенную сеть в архитектуре клиент-сервер . [4] [5]

OpenSSH начал как вилку из свободной программы SSH , разработанная Tatu Ylonen ; более поздние версии SSH Илонена были проприетарным программным обеспечением, предлагаемым SSH Communications Security . [6] OpenSSH был впервые выпущен в 1999 году и в настоящее время разрабатывается как часть операционной системы OpenBSD .

OpenSSH - это не отдельная компьютерная программа, а скорее набор программ, которые служат альтернативой незашифрованным протоколам, таким как Telnet и FTP . OpenSSH интегрирован в несколько операционных систем, а именно в macOS и большинство операционных систем Linux [7] [8], в то время как портативная версия доступна в виде пакета в других системах. [9] [10] [11]

История [ править ]

OpenBSD Secure Shell была создана разработчиками OpenBSD в качестве альтернативы оригинальному программному обеспечению SSH от Tatu Ylönen , которое теперь является проприетарным программным обеспечением . [12] Хотя для исходного SSH доступен исходный код, на его использование и распространение накладываются различные ограничения. OpenSSH был создан как форк OSSH Бьорна Грёнвалля, который сам был форком оригинального бесплатного выпуска SSH 1.2.12 Тату Юлёнена, который был последним, имеющим лицензию, подходящую для форкования. [13] Разработчики OpenSSH заявляют, что их приложение более безопасно, чем оригинальное, из-за их политики создания чистых и проверенныхкода, и поскольку он выпущен под лицензией BSD, лицензией с открытым исходным кодом, к которой относится слово open в названии.

OpenSSH впервые появился в OpenBSD 2.6. Первый переносимый выпуск был выпущен в октябре 1999 года. [14] С тех пор разработки включали добавление шифров (например, chacha20 - poly1305 в версии 6.5 января 2014 года [15] ), сокращающих зависимость от OpenSSL (6.7, октябрь 2014 года [16] ] ) и расширение для облегчения обнаружения и ротации открытых ключей для доверенных хостов (для перехода с DSA на открытые ключи хоста Ed25519 , версия 6.8 от марта 2015 г. [17] ).

19 октября 2015 года Microsoft объявила, что OpenSSH будет изначально поддерживаться в Microsoft Windows и доступен через PowerShell , выпустив раннюю реализацию и сделав код общедоступным. [18] Клиентские и серверные программы на основе OpenSSH были включены в Windows 10 с версии 1803. Клиент SSH и ключевой агент включены и доступны по умолчанию, а сервер SSH является дополнительной функцией Feature-on-Demand. [19]

В октябре 2019 года в OpenSSH 8.1 была добавлена защита закрытых ключей, находящихся в ОЗУ, от спекуляций и атак по побочным каналам памяти . [20]

Развитие [ править ]

OpenSSH удаленно управляет сервером через оболочку Unix

OpenSSH разработан как часть операционной системы OpenBSD . Вместо того, чтобы вносить изменения для других операционных систем непосредственно в OpenSSH, группа по переносимости OpenSSH поддерживает отдельную инфраструктуру переносимости, а «переносимые версии» выпускаются периодически. Эта инфраструктура значительна, отчасти потому, что OpenSSH требуется для выполнения аутентификации - возможности, которая имеет множество различных реализаций. Эта модель также используется для других проектов OpenBSD, таких как OpenNTPD .

Пакет OpenSSH включает следующие служебные программы и демоны командной строки :

  • scp , замена для rcp .
  • sftp , замена ftp для копирования файлов между компьютерами.
  • ssh , замена для rlogin , rsh и telnet, позволяющая оболочке получить доступ к удаленному компьютеру.
  • ssh-add и ssh-agent , утилиты для облегчения аутентификации, удерживая ключи наготове и избегая необходимости вводить парольные фразы каждый раз, когда они используются.
  • ssh-keygen , инструмент для проверки и генерацииключей RSA , DSA и эллиптических кривых , которые используются для аутентификации пользователя и хоста.
  • ssh-keyscan , который сканирует список хостов и собирает их открытые ключи.
  • sshd , демон сервера SSH.

Сервер OpenSSH может аутентифицировать пользователей стандартными методами, поддерживаемыми протоколом ssh : с помощью пароля; аутентификация с открытым ключом с использованием индивидуальных ключей; аутентификация на основе хоста, которая является безопасной версией доверительных отношений хоста rlogin с использованием открытых ключей; интерактивная клавиатура, общий механизм запрос-ответ , который часто используется для простой аутентификации по паролю, но может также использовать более надежные аутентификаторы, такие как токены ; и Kerberos / GSSAPI . Сервер использует методы аутентификации, присущие операционной системе хоста; это может включать использование системы аутентификации BSD илиПодключаемые модули аутентификации (PAM) для обеспечения дополнительной аутентификации с помощью таких методов, как одноразовые пароли . Однако иногда это имеет побочные эффекты: при использовании PAM с OpenSSH он должен запускаться от имени пользователя root , поскольку для работы PAM обычно требуются привилегии root. Версии OpenSSH после 3.7 (16 сентября 2003 г.) позволяют отключать PAM во время выполнения, поэтому обычные пользователи могут запускать экземпляры sshd.

В OpenBSD OpenSSH по умолчанию использует выделенного пользователя sshd для сброса привилегий и выполнения разделения привилегий в соответствии с принципом наименьших привилегий , применяемым во всей операционной системе, включая X-сервер Xenocara .

Особенности [ править ]

OpenSSH включает в себя возможность настроить защищенный канал, через который данные, отправленные на локальные клиентские сокеты домена Unix или локальные клиентские TCP- порты, могут « пересылаться » (отправляться по защищенному каналу) для маршрутизации на стороне сервера; когда эта переадресация настроена, серверу дается указание отправить эти перенаправленные данные на какой-либо сокет или хост / порт TCP (хост может быть самим сервером, "localhost"; или, хост может быть другим компьютером, так что он другому компьютеру кажется, что сервер является источником данных). Пересылка данных является двунаправленной, что означает, что любая обратная связь сама пересылается обратно на сторону клиента таким же образом; это известно как « туннель SSH », [21]и его можно использовать для мультиплексирования дополнительных TCP-соединений через одно SSH-соединение с 2004 года [22], чтобы скрыть соединения, зашифровать протоколы, которые в противном случае незащищены, и обойти брандмауэры путем отправки / получения всех видов данных через один порт, который разрешено брандмауэром. Например, туннель системы X Window может быть создан автоматически при использовании OpenSSH для подключения к удаленному хосту, а другие протоколы, такие как HTTP и VNC , могут быть легко перенаправлены. [23]

Туннелирование полезной нагрузки, инкапсулирующей TCP (например, PPP ) через TCP-соединение (например, переадресацию портов SSH ), известно как «TCP-over-TCP», и это может привести к резкому снижению производительности передачи (известная проблема как «обвал TCP»), [24] [25] поэтому виртуальная частная сетьпрограммное обеспечение может вместо этого использовать для туннельного соединения протокол более простой, чем TCP. Однако это часто не проблема при использовании переадресации портов OpenSSH, потому что многие варианты использования не влекут за собой туннелирование TCP-over-TCP; краха можно избежать, потому что клиент OpenSSH обрабатывает локальное TCP-соединение на стороне клиента, чтобы получить фактическую отправляемую полезную нагрузку, а затем отправляет эту полезную нагрузку непосредственно через собственное TCP-соединение туннеля на сторону сервера, где OpenSSH сервер аналогичным образом «разворачивает» полезную нагрузку, чтобы «обернуть» ее снова для маршрутизации к конечному месту назначения. [26]

Кроме того, некоторые сторонние программы включают поддержку туннелирования через SSH. К ним относятся DistCC , CVS , rsync и Fetchmail . В некоторых операционных системах удаленные файловые системы могут быть смонтированы через SSH с помощью таких инструментов, как sshfs (с использованием FUSE ).

Специальный SOCKS прокси - сервер может быть создан с помощью OpenSSH. Это обеспечивает более гибкое проксирование, чем это возможно при обычном перенаправлении портов.

Начиная с версии 4.3, OpenSSH реализует VPN на основе туннеля OSI уровня 2/3 . Это самая гибкая из возможностей OpenSSH по туннелированию, позволяющая приложениям получать прозрачный доступ к удаленным сетевым ресурсам без каких-либо модификаций для использования SOCKS. [27]

Поддерживаемые типы открытых ключей [ править ]

OpenSSH поддерживает следующие типы открытых ключей: [28]  · [29]

  • ecdsa -sha2-nistp256 (начиная с OpenSSH 5.7, выпущенного в 2011 году) [30]
  • ecdsa -sha2-nistp384 (начиная с OpenSSH 5.7)
  • ecdsa -sha2-nistp521 (начиная с OpenSSH 5.7)
  • ecdsa -sk (начиная с версии OpenSSH 8.2, выпущенной в 2020 г.) [31]
  • ed25519 -sk (начиная с OpenSSH 8.2)
  • ssh- ed25519 (с OpenSSH 6.5 , выпущенный в 2014 году) [32]
  • ssh- dss (отключен во время выполнения с момента выпуска OpenSSH 7.0 в 2015 году) [33]
  • ssh- rsa
  • rsa -sha2-256 (начиная с версии OpenSSH 7.2, выпущенной в 2016 г.) [34]
  • rsa -sha2-512 (начиная с OpenSSH 7.2)

Уязвимости [ править ]

До версии 5.2 openssh злоумышленник мог восстановить до 14 бит открытого текста с вероятностью успеха 2 −14 . [35] Уязвимость была связана с режимом шифрования CBC. Режим AES CTR и шифры arcfour не уязвимы для этой атаки.

Уязвимость локального повышения привилегий существовала в OpenSSH 6.8–6.9 ( CVE - 2015-6565 ) из-за универсальных (622) устройств TTY с возможностью записи, что считалось уязвимостью типа «отказ в обслуживании». [36] Благодаря использованию TIOCSTI ioctl, аутентифицированные пользователи могли вводить символы в терминалы других пользователей и выполнять произвольные команды в Linux. [37]

Вредоносные или скомпрометированные серверы OpenSSH могут считывать конфиденциальную информацию о клиенте, такую ​​как закрытые ключи входа в систему для других систем, используя уязвимость, основанную на недокументированной функции возобновления соединения клиента OpenSSH, которая называется роумингом, включенным по умолчанию на клиенте. но не поддерживается на сервере OpenSSH. Это относится к версиям клиента OpenSSH от 5.4 (выпущена 8 марта 2010 [38] ) до 7.1 и было исправлено в OpenSSH 7.1p2, выпущенном 14 января 2016 года. Номера CVE, связанные с этой уязвимостью: CVE - 2016-0777 (информация утечка) и CVE - 2016-0778 (переполнение буфера). [39] [40]

Торговая марка [ править ]

В феврале 2001 года Тату Юленен, председатель и технический директор SSH Communications Security сообщил в список рассылки разработчиков OpenSSH, что компания намерена подтвердить свое право собственности на товарные знаки SSH и Secure Shell , [41] и попыталась изменить ссылки на протокол на «SecSH» или «secsh», чтобы сохранить контроль над именем «SSH». Он предложил OpenSSH изменить название, чтобы избежать судебного разбирательства, но разработчики сопротивлялись этому предложению. Разработчик OpenSSH Дэмиен Миллер в ответ призвал Илонена пересмотреть свое решение, утверждая, что SSH с давних пор является общим товарным знаком . [42]

В то время «SSH», «Secure Shell» и «ssh» появились в документах, предлагающих протокол в качестве открытого стандарта. Не отмечая их в предложении как зарегистрированные товарные знаки, Юленен рискнул отказаться от всех исключительных прав на имя как средство описания протокола. Неправильное использование товарного знака или разрешение другим лицам использовать товарный знак неправильно, приводит к тому, что товарный знак становится общим термином, таким как Kleenex или Aspirin , что открывает возможность использования товарного знака другими лицами. [43] После исследования USPTOБаза данных товарных знаков, многие онлайн-эксперты полагали, что термин «ssh» не является товарным знаком, а просто логотип, использующий строчные буквы «ssh». Кроме того, шесть лет между созданием компании и тем временем, когда она начала защищать свой товарный знак, и то, что только OpenSSH получал угрозы судебных преследований, оказались против действительности товарного знака. [44]

Оба разработчика OpenSSH и сам Юленен входили в рабочую группу IETF, разрабатывающую новый стандарт; после нескольких встреч эта группа отклонила просьбу Юленена о переименовании протокола, сославшись на опасения, что это создаст плохой прецедент для других претензий по товарным знакам к IETF. Участники утверждали, что «Secure Shell» и «SSH» являются общими терминами и не могут быть товарными знаками. [6]

См. Также [ править ]

  • Сравнение клиентов SSH
  • Сравнение SSH серверов
  • Протокол передачи файлов SSH (SFTP)

Примечания [ править ]

  1. ^ Имя "OpenBSD Secure Shell" в основном используется в различных сценариях запуска sshd .

Ссылки [ править ]

  1. ^ «OpenSSH: Примечания к выпуску» . Дата обращения 1 октября 2020 .
  2. ^ "Портативный выпуск OpenSSH" . OpenBSD . Проверено 15 октября 2015 года .
  3. ^ «Спецификации, реализованные OpenSSH» . Проект OpenBSD . Проект OpenBSD . Проверено 14 октября 2015 года .
  4. ^ Венкатачала, Гириш (апрель 2007). «Протокол OpenSSH под капотом». Linux Journal (156): 74–77 Доступно через базу данных Discovery в LSU
  5. ^ Сетевая рабочая группа IETF, январь 2006 г., RFC 4252 , Протокол аутентификации Secure Shell (SSH).
  6. ^ a b Даффи Марсан, Кэролайн (22 марта 2001 г.). «Изобретатель Secure Shell отказал в заявке на использование товарного знака» . ITworld.com . Проверено 8 сентября 2014 года .
  7. ^ "dragonfly.git / blob - crypto / openssh / README" . gitweb.dragonflybsd.org . Дата обращения 19 мая 2016 . Это порт отличного OpenSSH OpenBSD для Linux и других Unix.
  8. ^ "src / crypto / external / bsd / openssh / dist / README - просмотр - 1.4" . Хранилища CVS NetBSD . Дата обращения 19 мая 2016 .
  9. ^ "openssh" . OpenSUSE . Дата обращения 17 мая 2016 .
  10. ^ "Debian - Подробная информация о пакете openssh-client в jessie" . Debian . Дата обращения 17 мая 2016 .
  11. ^ "Arch Linux - openssh 7.2p2-1 (x86_64)" . Arch Linux . Дата обращения 17 мая 2016 .
  12. ^ «История проекта и кредиты» . OpenBSD . Проверено 8 апреля 2008 года .
  13. ^ «OpenSSH: история проекта и кредиты» . openssh.com. 22 декабря 2004 . Проверено 27 февраля 2014 года .
  14. ^ "Portable OpenSSH - Freecode" . Freshmeat.net . Проверено 11 февраля 2014 .
  15. ^ Murenin Константин А. (11 декабря 2013). Неизвестный Ламер (ред.). "OpenSSH имеет новый шифр - Chacha20-poly1305 - от DJ Bernstein" . Slashdot . Проверено 26 декабря 2014 .
  16. ^ Murenin, Константин А. (30 апреля 2014). Soulskill (ред.). «OpenSSH больше не должен зависеть от OpenSSL» . Slashdot . Проверено 26 декабря 2014 .
  17. ^ Murenin Константин А. (1 февраля 2015). Soulskill (ред.). «OpenSSH будет обеспечивать обнаружение и ротацию ключей для упрощения перехода на Ed25519» . Slashdot . Проверено 1 февраля 2015 года .
  18. ^ «OpenSSH для Центра обновления Windows» . 19 октября 2015 . Проверено 23 октября 2015 года .
  19. Дурр, Йосеф (7 марта 2018 г.). «Что нового в командной строке в Windows 10 версии 1803» . Инструменты командной строки Windows для разработчиков .
  20. ^ «Защита закрытых ключей, находящихся в ОЗУ» .
  21. ^ "Справочные страницы OpenBSD: SSH" . openbsd.org . 3 июля 2014 . Проверено 14 июля 2014 года .
  22. ^ «Примечания к выпуску OpenSSH» .
  23. ^ «Особенности» . OpenSSH . Проверено 26 июня +2016 .
  24. ^ Тиц, Olaf (23 апреля 2001). «Почему TCP поверх TCP - плохая идея» . Проверено 17 октября 2015 года .
  25. ^ Хонда, Осаму; Осаки, Хироюки; Имасе, Макото; Ишизука, Мика; Мураяма, Джуничи (октябрь 2005 г.). Понимание TCP через TCP: влияние туннелирования TCP на сквозную пропускную способность и задержку . Производительность, качество обслуживания и контроль коммуникационных и сенсорных сетей следующего поколения III. Труды Spie. 6011 . стр. 60110H. Bibcode : 2005SPIE.6011..138H . DOI : 10.1117 / 12.630496 .
  26. Перейти ↑ Kaminsky, Dan (13 июня 2003 г.). "Re: Расширения для длинных толстых сетей?" . [email protected] (список рассылки). код пересылки TCP также довольно быстрый. Просто чтобы заранее ответить на вопрос, ssh декапсулирует и повторно инкапсулирует TCP, поэтому у вас не возникает классических проблем TCP-over-TCP.
  27. ^ «Примечания к выпуску OpenSSH 4.3» . openssh.com . 1 февраля 2006 . Проверено 14 июля 2014 года .
  28. ^ https://www.man7.org/linux/man-pages/man8/sshd.8.html#AUTHORIZED_KEYS_FILE_FORMAT
  29. ^ https://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man5/sshd_config.5#PubkeyAcceptedKeyTypes
  30. ^ https://www.openssh.com/txt/release-5.7
  31. ^ https://www.openssh.com/txt/release-8.2
  32. ^ https://www.openssh.com/txt/release-6.5
  33. ^ https://www.openssh.com/txt/release-7.0
  34. ^ https://www.openssh.com/txt/release-7.2
  35. ^ Атака CBC с рекомендациями по безопасности OpenSSH
  36. ^ CVE - 2015-6565
  37. ^ Уязвимость OpenSSH PTY
  38. ^ Выпущен OpenSSH 5.4
  39. Томсон, Иэн (14 января 2016 г.). «Злые серверы OpenSSH могут украсть ваши личные ключи входа в другие системы - исправьте сейчас» . Реестр .
  40. ^ Только что был выпущен OpenSSH 7.1p2.
  41. ^ Илонен, Tatu (14 февраля 2001). «Торговые марки SSH и название продукта OpenSSH» . openssh-unix-dev (список рассылки). MARC . Проверено 11 февраля 2014 .
  42. Миллер, Дэмиен (14 февраля 2001 г.). «Re: товарные знаки SSH и название продукта OpenSSH» . openssh-unix-dev (список рассылки). MARC . Проверено 11 февраля 2014 .
  43. Лемос, Роберт (2 января 2002 г.). «Шшш! Не используйте этот товарный знак» . CNET . Дата обращения 19 мая 2016 .
  44. ^ Илонен, Tatu (1 марта 2002). «Юленен: У нас есть торговая марка ssh, но вот предложение» . NewsForge . Архивировано из оригинала 1 марта 2002 года . Дата обращения 20 мая 2016 .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • ssh(1) -  Руководство по основным командам OpenBSD
  • sshd(8) -  Руководство администратора системы OpenBSD
  • OpenSSH в перекрестной ссылке BSD суперпользователя (BXR.SU) OpenGrok