След четири месеца разработка беше представена версия OpenSSH 8.7, открито реализиране на клиент и сървър за работа с протоколите SSH 2.0 и SFTP.
Основни промени:
- В scp беше добавен експериментален режим на пренос на данни с използване на SFTP протокол вместо традиционно прилагания SCP/RCP протокол. При SFTP се прилагат по-предсказуеми методи за обработка на имена и не се използва обработка на glob шаблони през командния интерпретатор на другия хост, което създава проблеми със сигурността. За активиране на SFTP в scp е предложен флаг „-s“, но в бъдеще се планира да се премине към този протокол по подразбиране.
- В sftp-server са реализирани разширения на SFTP протокола за разкриване на пътища ~/ и ~user/, което е необходимо за scp.
- В утилитата scp поведението при копиране на файлове между два отдалечени хоста (например, „scp host-a:/path host-b:“) беше променено, така че сега по подразбиране се извършва чрез междинен локален хост, както при указване на флага „-3“. Посоченият подход позволява да се избегне предаването на излишни данни за вход на първия хост и тройна интерпретация на имената на файловете в командния интерпретатор (от страна на източника, приемника и локалната система), а също така при използването на SFTP позволява да се използват всички методи на удостоверяване при достъп до отдалечени хостове, а не само неинтерактивни методи. За възстановяване на старото поведение е добавена опция „-R“.
- В ssh беше добавена настройка ForkAfterAuthentication, която съответства на флага „-f“.
- В ssh беше добавена настройка StdinNull, която съответства на флага „-n“.
- В ssh беше добавена настройка SessionType, чрез която могат да се установят режимите, съответстващи на флаговете „-N“ (без сесия) и „-s“ (подсистема).
- В 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).
Източник: opennet.ru
