Hoʻokuʻu ʻia o OpenSSH 8.2 me ke kākoʻo no FIDO/U2F mau hōʻailona hōʻoia ʻelua kumu.

Ma hope o ʻehā mahina o ka hoʻomohala ʻana hōʻike ʻia hoʻokuʻu OpenSSH 8.2, he mea kūʻai wehe a me ka hoʻokō kikowaena no ka hana ʻana ma o nā protocol SSH 2.0 a me SFTP.

ʻO kahi hoʻomaikaʻi koʻikoʻi i ka hoʻokuʻu ʻana o OpenSSH 8.2 ʻo ia ka hiki ke hoʻohana i ka hōʻoia ʻelua-factor me ka hoʻohana ʻana i nā polokalamu e kākoʻo ana i ka protocol. U2F, hoʻomohala ʻia e ka hui kuʻikahi Fido. ʻAe ʻo U2F i ka hana ʻana i nā hōʻailona lako haʻahaʻa haʻahaʻa e hōʻoia i ka noho kino o ka mea hoʻohana, e launa pū me lākou ma o USB, Bluetooth a i ʻole NFC. Hoʻolaha ʻia kēlā mau mea hana ma ke ʻano o ka hōʻoia ʻelua-factor ma nā pūnaewele, ua kākoʻo ʻia e nā polokalamu kele nui a hana ʻia e nā mea hana like ʻole, me Yubico, Feitian, Thetis a me Kensington.

No ka launa pū ʻana me nā polokalamu e hōʻoia i ka hele ʻana o ka mea hoʻohana, ua hoʻohui ʻia nā ʻano kī hou "ecdsa-sk" a me "ed25519-sk" i OpenSSH, e hoʻohana ana i ka ECDSA a me Ed25519 kikohoʻe algorithms, i hui pū ʻia me ka SHA-256 hash. Hoʻokomo ʻia nā kaʻina hana no ka launa pū ʻana me nā hōʻailona i loko o kahi waihona waena, i hoʻouka ʻia ma ke ʻano like me ka waihona no ke kākoʻo PKCS#11 a he ʻōwili ma luna o ka waihona. libfido2, e hāʻawi ana i nā mea hana no ke kamaʻilio ʻana me nā hōʻailona ma luna o USB (FIDO U2F/CTAP 1 a me FIDO 2.0/CTAP 2 protocols kākoʻo ʻia). ʻO ka hale waihona puke waena libsk-libfido2 i hoʻomākaukau ʻia e nā mea hoʻomohala OpenSSH hui pū ʻia i loko o ka libfido2 kumu, a me Keaukaha HID no OpenBSD.

No ka hōʻoiaʻiʻo ʻana a me ka hana ʻana i kahi kī, pono ʻoe e kuhikuhi i ka parameter "SecurityKeyProvider" i nā hoʻonohonoho a i ʻole e hoʻonohonoho i ka hoʻololi kaiapuni SSH_SK_PROVIDER, e hōʻike ana i ke ala i ka waihona waho libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2. pela). Hiki ke kūkulu i openssh me ke kākoʻo i kūkulu ʻia no ka waihona waihona (--with-security-key-builtin), i kēia hihia pono ʻoe e hoʻonohonoho i ka "SecurityKeyProvider=internal" parameter.
A laila pono ʻoe e holo i "ssh-keygen -t ecdsa-sk" a i ʻole, inā ua hana ʻia a hoʻonohonoho ʻia nā kī, e hoʻopili i ke kikowaena me ka hoʻohana ʻana i "ssh". Ke holo ʻoe i ka ssh-keygen, e mālama ʻia ka pālua kī i hana ʻia ma "~/.ssh/id_ecdsa_sk" a hiki ke hoʻohana like me nā kī ʻē aʻe.

Pono e kope ʻia ke kī lehulehu (id_ecdsa_sk.pub) i ke kikowaena ma ka waihona authorized_keys. Ma ka ʻaoʻao kikowaena, ʻo ka hōʻailona kikohoʻe wale nō i hōʻoia ʻia, a hana ʻia ka launa pū me nā hōʻailona ma ka ʻaoʻao o ka mea kūʻai aku (ʻaʻole pono ʻoe e hoʻokomo i ka libsk-libfido2 ma ke kikowaena, akā pono ke kikowaena e kākoʻo i ke ʻano kī "ecdsa-sk") . ʻO ke kī pilikino i hana ʻia (id_ecdsa_sk) he kī kī maoli nō ia, e hana ana i kī maoli wale nō i hui pū ʻia me ke kaʻina huna i mālama ʻia ma ka ʻaoʻao hōʻailona U2F. Inā hāʻule ke kī id_ecdsa_sk i loko o ka lima o ka mea hoʻouka, no ka hōʻoia ʻana, pono ʻo ia e komo i ka hōʻailona hardware, me ka ʻole o ke kī pilikino i mālama ʻia i ka faila id_ecdsa_sk he mea ʻole.

Eia kekahi, ma ka maʻamau, i ka wā e hana ai i nā hana me nā kī (i ka wā o ka hanauna a i ka wā o ka hōʻoia ʻana), koi ʻia ka hōʻoia kūloko o ka noho kino o ka mea hoʻohana, no ka laʻana, ua manaʻo ʻia e hoʻopā i ka mea ʻike ma ka hōʻailona, ​​​​e paʻakikī ai. hoʻokō i nā hoʻouka mamao ma nā ʻōnaehana me kahi hōʻailona pili. E like me kahi laina pale ʻē aʻe, hiki ke kuhikuhi ʻia kahi ʻōlelo huna i ka wā hoʻomaka o ssh-keygen e komo i ka faila kī.

Ua hoʻolaha pū ka mana hou o OpenSSH i ka hoʻopau ʻana o nā algorithm e hoʻohana ana i nā hashes SHA-1 ma muli o hoʻokiʻekiʻe ka maikaʻi o ka hoʻouka kaua ʻana me kahi prefix i hāʻawi ʻia (ʻo ke kumukūʻai o ke koho ʻana i kahi collision i manaʻo ʻia ma kahi o 45 tausani kālā). Ma kekahi o nā hoʻokuʻu e hiki mai ana, hoʻolālā lākou e hoʻopau i ka hiki ke hoʻohana i ke kī kī kīwī algorithm algorithm "ssh-rsa", i ʻōlelo ʻia ma ka RFC kumu no ka protocol SSH a hoʻomau i ka hoʻomaʻamaʻa (e hoʻāʻo i ka hoʻohana. o ssh-rsa i kāu mau ʻōnaehana, hiki iā ʻoe ke hoʻāʻo e hoʻopili ma o ssh me ke koho "-oHostKeyAlgorithms=-ssh-rsa").

No ka hoʻomaʻamaʻa ʻana i ka hoʻololi ʻana i nā algorithms hou ma OpenSSH, i ka wā e hiki mai ana e hoʻohana ʻia ka hoʻonohonoho UpdateHostKeys ma ke ʻano paʻamau, kahi e neʻe ai i nā mea kūʻai aku i nā algorithm ʻoi aku ka hilinaʻi. ʻO nā algorithm i manaʻo ʻia no ka neʻe ʻana me rsa-sha2-256/512 e pili ana i ka RFC8332 RSA SHA-2 (kākoʻo ʻia mai OpenSSH 7.2 a hoʻohana ʻia e ka paʻamau), ssh-ed25519 (kākoʻo ʻia mai OpenSSH 6.5) a me ecdsa-sha2-nistp256/384/521. ma RFC5656 ECDSA (kākoʻo ʻia mai OpenSSH 5.7).

Ma OpenSSH 8.2, hiki ke hoʻohui ʻia me ka hoʻohana ʻana i ka "ssh-rsa", akā ua wehe ʻia kēia algorithm mai ka papa inoa CASignatureAlgorithms, e wehewehe ana i nā algorithms i ʻae ʻia no ke kau inoa ʻana i nā palapala hōʻoia hou. Pēlā nō, ua wehe ʻia ka algorithm diffie-hellman-group14-sha1 mai nā algorithms hoʻololi kī paʻamau i kākoʻo ʻia. Hoʻomaopopo ʻia ʻo ka hoʻohana ʻana o SHA-1 i nā palapala hōʻoia e pili ana i ka pilikia hou, no ka mea he manawa palena ʻole ka mea hoʻouka e ʻimi ai i kahi hui ʻana no kahi palapala i loaʻa, ʻoiai ka manawa o ka hoʻouka ʻana i nā kī hoʻokipa e kaupalena ʻia e ka manawa pili (LoginGraceTime ).

Ke holo nei ka ssh-keygen i kēia manawa i ka rsa-sha2-512 algorithm, i kākoʻo ʻia mai ka OpenSSH 7.2, hiki ke hana i nā pilikia pili i ka wā e hoʻāʻo ai e hana i nā palapala hōʻoia i hoʻopaʻa ʻia ma OpenSSH 8.2 ma nā ʻōnaehana e holo ana i nā hoʻokuʻu OpenSSH kahiko (e hana a puni ka pilikia i ka wā ka hana ʻana i kahi pūlima, hiki iā ʻoe ke kuhikuhi pololei i ka "ssh-keygen -t ssh-rsa" a i ʻole e hoʻohana i ka ecdsa-sha2-nistp256/384/521 algorithms, i kākoʻo ʻia mai OpenSSH 5.7).

Nā hoʻololi ʻē aʻe:

  • Ua hoʻohui ʻia kahi kuhikuhi Include i sshd_config, e hiki ai iā ʻoe ke hoʻokomo i nā ʻike o nā faila ʻē aʻe i ke kūlana o ka faila hoʻonohonoho i kēia manawa (hiki ke hoʻohana ʻia nā glob masks ke kuhikuhi ʻana i ka inoa faila);
  • Ua hoʻokomoʻia ka koho "no-touch-required" i ka ssh-keygen, kahi e hoʻopau ai i ka pono e hōʻoia kino i ke komoʻana i ka hōʻailona i ka wā e hana ai i ke kī;
  • Ua hoʻohui ʻia kahi kuhikuhi PubkeyAuthOptions i sshd_config, kahi e hui pū ai i nā koho like ʻole e pili ana i ka hōʻoia kī lehulehu. I kēia manawa, kākoʻo wale ʻia ka hae "no-touch-required" no ka hoʻokuʻu ʻana i ka nānā ʻana i ke kino no ka hōʻoia hōʻailona. Ma ka hoʻohālikelike, ua hoʻohui ʻia ke koho "no-touch-required" i ka faila authorized_keys;
  • Hoʻohui ʻia ke koho "-O write-attestation=/path" i ssh-keygen e ʻae i nā palapala hōʻoia FIDO hou e kākau ʻia i ka wā e hana ai i nā kī. ʻAʻole hoʻohana ʻo OpenSSH i kēia mau palapala hōʻoia, akā hiki ke hoʻohana ʻia ma hope aku e hōʻoia i ka waiho ʻana o ke kī i kahi hale kūʻai lako hilinaʻi;
  • I nā hoʻonohonoho ssh a me sshd, hiki i kēia manawa ke hoʻonohonoho i ke ʻano hoʻonohonoho mua o ke kaʻa ma o ke kuhikuhi IPQoS. LE DSCP (Lower-Effort Per-Hop Behavior);
  • I ka ssh, i ka wā e hoʻonoho ai i ka waiwai "AddKeysToAgent = ʻae", inā ʻaʻole i loaʻa i ke kī kahi kahua manaʻo, e hoʻohui ʻia i ka ssh-agent e hōʻike ana i ke ala i ke kī ma ke ʻano he manaʻo. IN
    Ke hoʻohana nei ʻo ssh-keygen a me ssh-agent i nā lepili PKCS#11 a me ka inoa kumuhana X.509 ma kahi o ke ala waihona e like me nā manaʻo ma ke kī;

  • Hoʻohui i ka hiki ke lawe aku i ka PEM no nā kī DSA a me ECDSA i ssh-keygen;
  • Hoʻohui i kahi mea hoʻokō hou, ssh-sk-kōkua, i hoʻohana ʻia e hoʻokaʻawale i ka waihona waihona komo FIDO/U2F;
  • Hoʻohui ʻia "--with-zlib" koho kūkulu i ssh a me sshd no ka hoʻohui ʻana me ke kākoʻo waihona zlib;
  • E like me ke koi o RFC4253, ua hāʻawi ʻia kahi ʻōlelo aʻo e pili ana i ka pale ʻana ma muli o ka nui o nā palena MaxStartups ma ka hae i hōʻike ʻia i ka wā pili. No ka maʻalahi o ka diagnostics, ke poʻomanaʻo kaʻina hana sshd, ʻike ʻia i ka wā e hoʻohana ai i ka pono ps, hōʻike i kēia manawa i ka helu o nā pilina i kēia manawa a me ke kūlana o ka palena MaxStartups;
  • Ma ka ssh a me ka ssh-agent, i ke kāhea ʻana i kahi papahana e hōʻike i kahi kono ma ka pale, i kuhikuhi ʻia ma $SSH_ASKPASS, ua hoʻouna hou ʻia kahi hae me ke ʻano o ke kono: "hōʻoia" - kamaʻilio hōʻoia (ʻae/ʻaʻole), "ʻaʻohe. ” - memo ʻike, “blank” — noi ʻōlelo huna;
  • Hoʻohui ʻia kahi hana hōʻailona kikohoʻe hou "find-principals" i ssh-keygen e ʻimi i ka faila i ʻae ʻia no ka mea hoʻohana e pili ana i kahi pūlima kikohoʻe i ʻōlelo ʻia;
  • Hoʻonui i ke kākoʻo no ka hoʻokaʻawale kaʻina hana sshd ma Linux me ka hoʻohana ʻana i ka mīkini seccomp: hoʻopau i nā kelepona ʻōnaehana IPC, e ʻae iā clock_gettime64(), clock_nanosleep_time64 a me clock_nanosleep().

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka