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-д ECDSA болон Ed25519 тоон гарын үсгийн алгоритмуудыг SHA-25519 хэштэй хослуулан ашигладаг “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 орчны хувьсагчийг тохируулах ёстой (export SSH_SK_PROVIDER=/path/to/libsk-libfido2. тийм). Давхаргын номын сангийн (--with-security-key-builtin) суурилуулсан дэмжлэгтэйгээр openssh-г бүтээх боломжтой бөгөөд энэ тохиолдолд та "SecurityKeyProvider=дотоод" параметрийг тохируулах хэрэгтэй.
Дараа нь та "ssh-keygen -t ecdsa-sk"-г ажиллуулах эсвэл хэрэв товчлуурууд аль хэдийн үүсгэгдэж, тохируулагдсан бол "ssh" ашиглан серверт холбогдох хэрэгтэй. Таныг ssh-keygen-г ажиллуулах үед үүсгэсэн түлхүүрийн хослолыг "~/.ssh/id_ecdsa_sk"-д хадгалах бөгөөд бусад түлхүүрүүдийн адилаар ашиглах боломжтой.

Нийтийн түлхүүрийг (id_ecdsa_sk.pub) эрх бүхий_түлхүүр файл дахь сервер рүү хуулах ёстой. Серверийн тал дээр зөвхөн тоон гарын үсгийг баталгаажуулж, токенуудтай харилцан үйлчлэлийг клиент талд гүйцэтгэдэг (та сервер дээр 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 (OpenSSH 512-с хойш дэмжигдсэн бөгөөд анхдагчаар ашиглагддаг), ssh-ed8332 (OpenSSH 2-аас хойш дэмжигдсэн) болон ecdsa-sha7.2-nistp25519/6.5 дээр суурилсан rsa-sha2-256/384 орно. RFC521 ECDSA дээр (OpenSSH 5656-с хойш дэмжигддэг).

OpenSSH 8.2-д "ssh-rsa"-г ашиглан холбогдох боломжтой хэвээр байгаа боловч энэ алгоритмыг CASignatureAlgorithms жагсаалтаас хассан бөгөөд энэ нь шинэ гэрчилгээнд дижитал гарын үсэг зурах алгоритмыг тодорхойлдог. Үүний нэгэн адил, diffie-hellman-group14-sha1 алгоритмыг дэмждэг үндсэн түлхүүр солилцох алгоритмуудаас хасагдсан. Халдагчид одоо байгаа гэрчилгээний зөрчилдөөнийг хайх хязгааргүй хугацаатай байдаг бол хост түлхүүрүүд рүү халдах хугацаа нь холболтын завсарлага (LoginGraceTime) -ээр хязгаарлагддаг тул SHA-1-ийг гэрчилгээнд ашиглах нь нэмэлт эрсдэлтэй холбоотой болохыг тэмдэглэв. ).

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-д нэмсэн бөгөөд энэ нь тохиргооны файлын одоогийн байрлалд байгаа бусад файлын агуулгыг оруулах боломжийг олгодог (файлын нэрийг зааж өгөхдөө glob маск ашиглаж болно);
  • Түлхүүрийг үүсгэх үед токен руу нэвтрэх эрхийг биечлэн баталгаажуулах хэрэгцээг идэвхгүй болгосон ssh-keygen-д "хүрэлцэх шаардлагагүй" сонголтыг нэмсэн;
  • PubkeyAuthOptions удирдамжийг sshd_config-д нэмсэн бөгөөд энэ нь нийтийн түлхүүрийн баталгаажуулалттай холбоотой янз бүрийн сонголтуудыг нэгтгэдэг. Одоогоор токен баталгаажуулалтын биет байгаа эсэхийг шалгахыг алгасахын тулд зөвхөн "хүрчлэх шаардлагагүй" гэсэн тугийг дэмждэг. Үүнтэй адилтгаж үзвэл, эрх бүхий_түлхүүр файлд "хүрчлэх шаардлагагүй" сонголтыг нэмсэн;
  • Түлхүүр үүсгэх үед нэмэлт FIDO баталгаажуулалтын гэрчилгээг бичихийг зөвшөөрөхийн тулд ssh-keygen-д "-O write-attestation=/path" сонголтыг нэмсэн. OpenSSH эдгээр гэрчилгээг хараахан ашиглаагүй байгаа боловч дараа нь түлхүүрийг найдвартай тоног төхөөрөмжийн дэлгүүрт байрлуулсан эсэхийг шалгахад ашиглаж болно;
  • Ssh болон sshd тохиргоонд IPQoS удирдамжаар дамжуулан замын хөдөлгөөний тэргүүлэх горимыг тохируулах боломжтой боллоо. LE DSCP (Бага хүчин чармайлт Per-Hop Behavior);
  • Ssh-д “AddKeysToAgent=yes” утгыг тохируулахдаа хэрэв түлхүүр нь тайлбар талбар агуулаагүй бол ssh-agent-д нэмж, түлхүүр рүү хүрэх замыг тайлбар болгон зааж өгнө. IN
    ssh-keygen болон ssh-agent нь одоо 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-agent-д $SSH_ASKPASS-ээр заасан дэлгэцэн дээр урилга харуулах программ руу залгахад урилгын төрөл бүхий тугийг одоо нэмж илгээдэг: "баталгаажуулах" - баталгаажуулах харилцах цонх (тийм/үгүй), "байхгүй" ” - мэдээллийн мессеж, "хоосон" - нууц үгийн хүсэлт;
  • Заасан тоон гарын үсэгтэй холбоотой хэрэглэгчийн зөвшөөрөгдсөн гарын үсэг зурсан файлыг хайхын тулд ssh-keygen-д шинэ тоон гарын үсгийн "find-principals" үйлдлийг нэмсэн;
  • Seccomp механизмыг ашиглан Линукс дээрх sshd процессын тусгаарлалтыг сайжруулах дэмжлэг: IPC системийн дуудлагыг идэвхгүй болгох, clock_gettime64(), clock_nanosleep_time64 болон clock_nanosleep()-г зөвшөөрөх.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх