FIDO/U8.2F эки факторлуу аутентификация токендерин колдоо менен OpenSSH 2 чыгаруу

Төрт айдан кийин иштеп чыгуу сунушталды бошотуу OpenSSH 8.2, SSH 2.0 жана SFTP протоколдору аркылуу иштөө үчүн ачык кардар жана серверди ишке ашыруу.

OpenSSH 8.2 чыгаруунун негизги жакшыруусу протоколду колдогон түзмөктөрдү колдонуу менен эки фактордук аутентификацияны колдонуу мүмкүнчүлүгү болду. U2F, альянс тарабынан иштелип чыккан Фидо. U2F USB, Bluetooth же NFC аркылуу колдонуучунун физикалык катышуусун текшерүү үчүн арзан аппараттык токендерди түзүүгө мүмкүндүк берет. Мындай түзмөктөр веб-сайттарда эки фактордук аутентификациянын каражаты катары илгериледи, ири браузерлер тарабынан колдоого алынган жана ар кандай өндүрүүчүлөр, анын ичинде Yubico, Feitian, Thetis жана Kensington тарабынан чыгарылган.

Колдонуучунун бар экенин ырастаган түзмөктөр менен өз ара аракеттенүү үчүн OpenSSHге SHA-25519 хэш менен айкалышкан ECDSA жана Ed25519 санарип колтамга алгоритмдерин колдонгон “ecdsa-sk” жана “ed256-sk” жаңы негизги түрлөрү кошулду. Токендер менен өз ара аракеттенүү процедуралары аралык китепканага жайгаштырылат, ал PKCS#11 колдоосу үчүн китепканага окшош жол менен жүктөлөт жана китепкананын үстүндөгү орогуч болуп саналат. libfido2, ал USB аркылуу токендер менен байланыш үчүн куралдар менен камсыз кылат (FIDO U2F/CTAP 1 жана FIDO 2.0/CTAP 2 протоколдору колдоого алынат). OpenSSH иштеп чыгуучулары тарабынан даярдалган libsk-libfido2 аралык китепканасы камтылган негизги libfido2 салып, ошондой эле HID айдоочу OpenBSD үчүн.

Ачкычтын аныктыгын текшерүү жана түзүү үчүн, сиз жөндөөлөрдөн “SecurityKeyProvider” параметрин көрсөтүшүңүз керек же libsk-libfido2.so тышкы китепканасына жолду көрсөтүү менен SSH_SK_PROVIDER чөйрө өзгөрмөсүн коюшуңуз керек (экспорт SSH_SK_PROVIDER=/path/to/libsk-libfido2. ошондой). Openssh катмарын китепканага орнотулган колдоо менен түзсө болот (--with-security-key-builtin), бул учурда сиз "SecurityKeyProvider=internal" параметрин коюшуңуз керек.
Андан кийин сиз "ssh-keygen -t ecdsa-sk" иштетишиңиз керек же эгер баскычтар мурунтан эле түзүлүп, конфигурацияланган болсо, "ssh" аркылуу серверге туташуу керек. Сиз ssh-keygen иштеткенде, түзүлгөн ачкыч жуптары “~/.ssh/id_ecdsa_sk” ичинде сакталат жана башка баскычтар сыяктуу эле колдонулушу мүмкүн.

Ачык ачкыч (id_ecdsa_sk.pub) authorized_keys файлындагы серверге көчүрүлүшү керек. Сервер тарапта санарип кол тамга гана текшерилет, ал эми токендер менен өз ара аракеттенүү кардар тарабынан аткарылат (серверге libsk-libfido2 орнотуунун кереги жок, бирок сервер "ecdsa-sk" ачкыч түрүн колдоого алышы керек) . Түзүлгөн жеке ачкыч (id_ecdsa_sk) U2F токен тарабында сакталган жашыруун ырааттуулук менен айкалышта гана чыныгы ачкычты түзүүчү негизги туткасы болуп саналат. Эгерде id_ecdsa_sk ачкычы чабуулчунун колуна түшүп калса, аутентификациядан өтүү үчүн ал аппараттык токенге кирүү мүмкүнчүлүгүнө ээ болушу керек, ансыз id_ecdsa_sk файлында сакталган купуя ачкыч пайдасыз.

Кошумчалай кетсек, демейки боюнча, баскычтар менен кандайдыр бир операцияларды жасоодо (генерациялоодо да, аутентификация учурунда да) колдонуучунун физикалык катышуусунун локалдык ырастоосу талап кылынат, мисалы, сенсорго токенге тийүү сунушталат, бул туташкан энбелгиси бар системаларга алыстан чабуул жасоо. Коргоонун башка линиясы катары сырсөздү ачкыч файлына кирүү үчүн ssh-keygen ишке киргизүү баскычында да көрсөтсө болот.

OpenSSH жаңы версиясы ошондой эле SHA-1 хэштерин колдонуу менен алгоритмдердин эскирилишин жарыялады. жылдыруу берилген префикс менен кагылышуу чабуулдарынын натыйжалуулугу (кагылышууну тандоонун баасы болжол менен 45 миң долларга бааланат). Алдыдагы чыгарылыштардын биринде алар SSH протоколу үчүн баштапкы RFCде айтылган жана практикада кеңири таралган (пайдаланууну текшерүү үчүн) “ssh-rsa” санариптик колтамгасынын ачык ачкычын колдонуу мүмкүнчүлүгүн демейки боюнча өчүрүүнү пландаштырууда. тутумуңуздагы ssh-rsa менен байланышсаңыз, "-oHostKeyAlgorithms=-ssh-rsa" параметри менен ssh аркылуу туташып көрүңүз).

OpenSSHдагы жаңы алгоритмдерге өтүүнү жылмакай кылуу үчүн, келечектеги чыгарылышта UpdateHostKeys жөндөөлөрү демейки боюнча иштетилет, ал кардарларды автоматтык түрдө ишенимдүү алгоритмдерге көчүрөт. Көчүрүү үчүн сунушталган алгоритмдер RFC2 RSA SHA-256 негизиндеги rsa-sha512-8332/2 (OpenSSH 7.2ден бери колдоого алынат жана демейки боюнча колдонулат), ssh-ed25519 (OpenSSH 6.5тен бери колдоого алынат) жана ecdsa-sha2-nistp256/384 негизиндеги камтыйт. RFC521 ECDSA боюнча (OpenSSH 5656ден бери колдоого алынат).

OpenSSH 8.2де “ssh-rsa” аркылуу туташуу мүмкүнчүлүгү дагы эле бар, бирок бул алгоритм жаңы сертификаттарга санариптик кол коюуга уруксат берилген алгоритмдерди аныктаган CASignatureAlgorithms тизмесинен алынып салынган. Ошо сыяктуу эле, diffie-hellman-group14-sha1 алгоритми колдоого алынган демейки ачкыч алмашуу алгоритмдеринен алынып салынган. Сертификаттарда SHA-1ди колдонуу кошумча тобокелчилик менен байланыштуу экени белгиленет, анткени чабуулчу учурдагы сертификаттын кагылышуусун издөө үчүн чексиз убакытка ээ, ал эми хост ачкычтарына чабуул жасоо убактысы туташуу күтүү убактысы менен чектелет (LoginGraceTime ).

ssh-keygen иштетүү азыр демейки OpenSSH 2ден бери колдоого алынган rsa-sha512-7.2 алгоритмине ылайыкташтырылган, ал OpenSSH 8.2де кол коюлган сертификаттарды эски OpenSSH релиздерин иштеткен системаларда иштетүүгө аракет кылганда шайкештик көйгөйлөрүн жаратышы мүмкүн (качан болгондо маселени чечүү үчүн). кол коюуну жаратып, сиз ачык "ssh-keygen -t ssh-rsa" көрсөтсөңүз болот же OpenSSH 2ден бери колдоого алынган ecdsa-sha256-nistp384/521/5.7 алгоритмдерин колдоно аласыз).

Башка өзгөртүүлөр:

  • Include директивасы sshd_configге кошулду, ал конфигурация файлынын учурдагы абалына башка файлдардын мазмунун кошууга мүмкүндүк берет (файлдын атын көрсөтүүдө глоб маскаларын колдонсо болот);
  • ssh-keygenге "но-тийбестен талап кылынбайт" опциясы кошулду, ал ачкычты түзүүдө маркерге жетүү мүмкүнчүлүгүн физикалык түрдө ырастоо зарылдыгын өчүрөт;
  • PubkeyAuthOptions директивасы sshd_configге кошулду, ал ачык ачкычтын аутентификациясына байланыштуу ар кандай варианттарды бириктирет. Учурда токендердин аутентификациясы үчүн физикалык бар-жогун текшерүүлөрдү өткөрүп жиберүү үчүн "тийүү талап кылынбайт" желек гана колдоого алынат. Аналогия боюнча, авторизацияланган_ачкычтар файлына "но-точ-талап кылынбайт" опциясы кошулду;
  • Ачкычтарды түзүүдө кошумча FIDO аттестациясынын сертификаттарын жазууга уруксат берүү үчүн ssh-keygenге "-O write-attestation=/path" опциясы кошулду. OpenSSH бул сертификаттарды азырынча колдонбойт, бирок алар кийинчерээк ачкычтын ишенимдүү аппараттык дүкөнгө жайгаштырылганын текшерүү үчүн колдонулушу мүмкүн;
  • ssh жана sshd жөндөөлөрүндө, азыр IPQoS директивасы аркылуу трафиктин артыкчылыктуу режимин коюуга болот LE DSCP (Төмөнкү аракет Per-Hop жүрүм-туруму);
  • sshде, “AddKeysToAgent=yes” маанисин коюуда, эгерде ачкычта комментарий талаасы жок болсо, ал ssh-агентке кошулуп, комментарий катары ачкычка баруучу жолду көрсөтөт. IN
    ssh-keygen жана ssh-агент дагы азыр ачкычтагы комментарийлер катары китепкананын жолунун ордуна PKCS#11 энбелгилерин жана X.509 предметтин атын колдонушат;

  • DSA жана ECDSA ачкычтары үчүн PEMди ssh-keygenге экспорттоо мүмкүнчүлүгү кошулду;
  • FIDO/U2F токенге кирүү китепканасын изоляциялоо үчүн колдонулган жаңы аткарылуучу, ssh-sk-helper кошулду;
  • Zlib китепканасынын колдоосу менен компиляциялоо үчүн ssh жана sshdге “--with-zlib” куруу опциясы кошулду;
  • RFC4253 талабына ылайык, туташуу учурунда көрсөтүлгөн баннерде MaxStartups чегинен ашкандыктан, кирүү мүмкүнчүлүгүн бөгөттөө жөнүндө эскертүү берилген. Диагностиканы жөнөкөйлөтүү үчүн, ps утилитасын колдонууда көрүнгөн sshd процессинин аталышы учурда аутентификацияланган туташуулардын санын жана MaxStartups чегинин абалын көрсөтөт;
  • ssh жана ssh-агентте $SSH_ASKPASS аркылуу көрсөтүлгөн чакырууну экранга көрсөтүү үчүн программага чалганда, чакыруунун түрү менен желек кошумча түрдө жөнөтүлөт: "тастыктоо" - ырастоо диалогу (ооба/жок), "жок" ” - маалыматтык билдирүү, “бош” — паролду суроо;
  • Белгиленген санарип колтамга менен байланышкан колдонуучуга уруксат берилген кол коюучулардын файлын издөө үчүн ssh-keygenге жаңы санариптик кол коюу операциясы "find-principals" кошулду;
  • seccomp механизмин колдонуу менен Linux'та sshd процессин изоляциялоо үчүн жакшыртылган колдоо: IPC тутумунун чалууларын өчүрүү, clock_gettime64(), clock_nanosleep_time64 жана clock_nanosleep().

Source: opennet.ru

Комментарий кошуу