Релиз OpenSSH 8.7

После четырёх месяцев разработки представлен релиз OpenSSH 8.7, открытой реализации клиента и сервера для работы по протоколам SSH 2.0 и SFTP.

Основные изменения:

  • В scp добавлен экспериментальный режим передачи данных с использованием протокола SFTP вместо традиционно применяемого протокола SCP/RCP. В SFTP применяются более предсказуемые методы обработки имён и не используется обработка glob-шаблонов через shell на стороне другого хоста, создающая проблемы с безопасностью. Для включения SFTP в scp предложен флаг »-s», но в будущем планируется перейти на данный протокол по умолчанию.
  • В sftp-server реализованы расширения протокола SFTP для раскрытия путей ~/ и ~user/, что необходимо для scp.

  • В утилите scp изменено поведение при копировании файлов между двумя удалёнными хостами (например, «scp host-a:/path host-b:»), которое теперь по умолчанию производится через промежуточный локальный хост, как при указании флага »-3». Указанный подход позволяет избежать передачи лишних учётных данных на первый хост и тройной интерпретации имён файлов в shell (на стороне источника, приёмника и локальной системы), а также при использовании SFTP позволяет использовать все методы аутентификации при обращении к удалённым хостам, а не только неинтерактивные методы. Для восстановления старого поведения добавлена опция »-R».

  • В ssh добавлена настройка ForkAfterAuthentication, соответствующая флагу »-f».

  • В ssh добавлена настройка StdinNull, соответствующая флагу »-n».

  • В ssh добавлена настройка SessionType, через которую можно установить режимы, соответствующие флагам »-N» (без сеанса) и »-s» (subsystem).
  • В ssh-keygen в файлах с ключами разрешено указывать интервал действия ключа.
  • В ssh-keygen добавлен флаг »-Oprint-pubkey» для вывода полного открытого ключа в составе подписи sshsig.

  • В ssh и sshd, как клиент, так и сервер, переведены на использование более строгого парсера файла конфигурации, в котором используются похожие на shell правила обработки кавычек, пробелов и escape-символов. Новый парсер также не пропускает ранее имевшиеся допущения, такие как пропуск аргументов в опциях (например, теперь нельзя оставлять пустой директиву DenyUsers), незакрытые кавычки и указание нескольких символов »=».

  • При использовании DNS-записей SSHFP при верификации ключей, ssh теперь проверяет все совпавшие записи, а не только содержащие определённый тип цифровой подписи.
  • В ssh-keygen при генерации ключа FIDO с указанием опции -Ochallenge для хэширования теперь используется встроенная прослойка, а не средства libfido2, что позволяет использовать challenge-последовательности, размером больше или меньше 32 байт.
  • В sshd при обработке директивы environment=»…» в файлах authorized_keys теперь принимается первое совпадение и действует ограничение в 1024 имён переменных окружения.

Разработчики OpenSSH также предупредили о переводе в разряд устаревших алгоритмов, использующих хеши SHA-1, в связи с повышением эффективности коллизионных атак с заданным префиксом (стоимость подбора коллизии оценивается примерно в 50 тысяч долларов). В следующем выпуске планируется отключить по умолчанию возможность использования алгоритма цифровых подписей по открытому ключу «ssh-rsa», который упоминается в оригинальном RFC для протокола SSH и остаётся широко распространённым на практике.

Для проверки применения ssh-rsa в своих системах можно попробовать подключиться по ssh с опцией »-oHostKeyAlgorithms=-ssh-rsa». При этом отключение по умолчанию цифровых подписей «ssh-rsa» не означает полный отказ от использования RSA-ключей, так как помимо SHA-1 протокол SSH допускает применение других алгоритмов вычисления хэшей. В частности, помимо «ssh-rsa» останется возможность использования связок «rsa-sha2–256» (RSA/SHA256) и «rsa-sha2–512» (RSA/SHA512).

Для сглаживания перехода на новые алгоритмы в OpenSSH ранее по умолчанию была включена настройка UpdateHostKeys, которая позволяет автоматически перевести клиентов на более надёжные алгоритмы. При помощи указанной настройки включается специальное расширение протокола «hostkeys@openssh.com», позволяющее серверу после прохождения аутентификации информировать клиента о всех доступных ключах хоста. Клиент может отразить эти ключи в своём файле ~/.ssh/known_hosts, что позволяет организовать обновление ключей хоста и упрощает смену ключей на сервере.

Использование UpdateHostKeys ограничено несколькими оговорками, которые в будущем могут быть отменены: ключ должен упоминаться в UserKnownHostsFile и не использоваться в GlobalKnownHostsFile; ключ должен присутствовать только под одним именем; не должен применяться сертификат хостового ключа; в known_hosts не должно применяться масок по имени хоста; должна быть отключена настройка VerifyHostKeyDNS; должен быть активен параметр UserKnownHostsFile.

Среди рекомендуемых для миграции алгоритмов упомянуты rsa-sha2–256/512 на базе RFC8332 RSA SHA-2 (поддерживается с OpenSSH 7.2 и используется по умолчанию), ssh-ed25519 (поддерживается с OpenSSH 6.5) и ecdsa-sha2-nistp256/384/521 на базе RFC5656 ECDSA (поддерживается с OpenSSH 5.7).

Источник: http://www.opennet.ru/opennews/art.shtml? num=55665

© OpenNet