Бид техник хангамжийн түлхүүрээр SSH хостуудад яаралтай хандах журмыг зааж өгдөг

Бид техник хангамжийн түлхүүрээр SSH хостуудад яаралтай хандах журмыг зааж өгдөг

Энэ нийтлэлд бид техник хангамжийн аюулгүй байдлын түлхүүрүүдийг офлайнаар ашиглан SSH хостуудад яаралтай хандах журмыг боловсруулах болно. Энэ бол зөвхөн нэг арга бөгөөд та үүнийг өөрийн хэрэгцээнд тохируулан өөрчилж болно. Бид хостуудын SSH гэрчилгээний эрхийг техник хангамжийн аюулгүй байдлын түлхүүр дээр хадгалах болно. Энэ схем нь бараг бүх OpenSSH дээр ажиллах болно, үүнд нэг удаагийн SSH орно.

Энэ бүхэн юуны төлөө вэ? За, энэ бол эцсийн сонголт юм. Энэ бол ямар нэг шалтгаанаар өөр юу ч ажиллахгүй үед сервертээ нэвтрэх боломжийг олгох арын хаалга юм.

Яаралтай хандахад нийтийн/хувийн түлхүүрийн оронд яагаад гэрчилгээ ашиглах ёстой вэ?

  • Нийтийн түлхүүрээс ялгаатай нь гэрчилгээ нь маш богино хугацаатай байдаг. Та 1 минут эсвэл бүр 5 секундын хугацаанд хүчинтэй гэрчилгээ үүсгэж болно. Энэ хугацааны дараа гэрчилгээг шинэ холболтод ашиглах боломжгүй болно. Энэ нь яаралтай тусламжийн үйлчилгээ авахад тохиромжтой.
  • Та өөрийн хостууд дээр дурын дансанд гэрчилгээ үүсгэж, шаардлагатай бол ийм "нэг удаагийн" гэрчилгээг хамт ажиллагсаддаа илгээж болно.

Чамд юу хэрэгтэй вэ

  • Оршин суугч түлхүүрүүдийг дэмждэг техник хангамжийн аюулгүй байдлын түлхүүрүүд.
    Суурин түлхүүрүүд нь аюулгүй байдлын түлхүүр дотор бүхэлдээ хадгалагддаг криптограф түлхүүрүүд юм. Заримдаа тэдгээрийг үсэг, тоон PIN кодоор хамгаалдаг. Оршин суугч түлхүүрийн нийтийн хэсгийг аюулгүй байдлын түлхүүрээс хувийн түлхүүрийн бариулын хамт экспортлох боломжтой. Жишээлбэл, Yubikey 5 цувралын USB түлхүүрүүд нь оршин суугч түлхүүрүүдийг дэмждэг. Эдгээр нь зөвхөн хост руу яаралтай хандахад зориулагдсан байхыг зөвлөж байна. Энэ нийтлэлд би зөвхөн нэг түлхүүр ашиглах болно, гэхдээ танд нөөцлөх нэмэлт түлхүүр байх ёстой.
  • Эдгээр түлхүүрүүдийг хадгалах аюулгүй газар.
  • OpenSSH хувилбар 8.2 буюу түүнээс дээш хувилбар нь таны локал компьютер болон яаралтай үед хандахыг хүсэж буй серверүүд дээр. Ubuntu 20.04 нь OpenSSH 8.2-тэй хамт ирдэг.
  • (заавал биш, гэхдээ санал болгож байна) Сертификат шалгах CLI хэрэгсэл.

Сургалт

Эхлээд та тоног төхөөрөмжийн аюулгүй байдлын түлхүүр дээр байрлах гэрчилгээжүүлэх байгууллагыг үүсгэх хэрэгтэй. Түлхүүрийг оруулаад ажиллуулна уу:

$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]

Тайлбар болгон (-C) би зааж өгсөн [имэйлээр хамгаалагдсан]Тиймээс та энэ гэрчилгээний байгууллага ямар аюулгүй байдлын түлхүүрт хамаарахаа мартдаггүй.

Yubikey-д түлхүүр нэмэхээс гадна хоёр файлыг дотооддоо үүсгэнэ:

  1. sk-user-ca, аюулгүй байдлын түлхүүрт хадгалагдсан хувийн түлхүүрийг илэрхийлдэг түлхүүр бариул,
  2. sk-user-ca.pub, энэ нь таны гэрчилгээжүүлэх байгууллагын нийтийн түлхүүр болно.

Гэхдээ санаа зовох хэрэггүй, Yubikey нь өөр нууц түлхүүрийг хадгалдаг бөгөөд үүнийг олж авах боломжгүй. Тиймээс энд бүх зүйл найдвартай байдаг.

Хостууд дээр root болгон SSHD тохиргоондоо (/etc/ssh/sshd_config) дараахыг нэмнэ үү (хэрэв та хийгээгүй бол):

TrustedUserCAKeys /etc/ssh/ca.pub

Дараа нь хост дээр нийтийн түлхүүрийг (sk-user-ca.pub) /etc/ssh/ca.pub руу нэмнэ үү.

Демоныг дахин эхлүүлнэ үү:

# /etc/init.d/ssh restart

Одоо бид хост руу нэвтрэхийг оролдож болно. Гэхдээ эхлээд гэрчилгээ хэрэгтэй. Сертификаттай холбогдох түлхүүрийн хослолыг үүсгэнэ үү:

$ ssh-keygen -t ecdsa -f emergency

Сертификат ба SSH хосууд
Заримдаа гэрчилгээг нийтийн/хувийн түлхүүрийн хослол болгон ашиглах нь сонирхол татдаг. Гэхдээ зөвхөн гэрчилгээ нь хэрэглэгчийг баталгаажуулахад хангалтгүй юм. Сертификат бүр түүнтэй холбоотой хувийн түлхүүртэй байдаг. Ийм учраас бид өөрсдөө гэрчилгээ олгохоосоо өмнө энэхүү "яаралтай" түлхүүрийн хослолыг бий болгох хэрэгтэй. Хамгийн гол нь бид гарын үсэг зурсан гэрчилгээг серверт үзүүлж, бидэнд хувийн түлхүүр байгаа түлхүүрийн хослолыг зааж өгөх явдал юм.

Тиймээс нийтийн түлхүүрийн солилцоо амьд, сайн хэвээр байна. Энэ нь гэрчилгээтэй ч ажилладаг. Сертификатууд нь серверт нийтийн түлхүүр хадгалах хэрэгцээг арилгадаг.

Дараа нь гэрчилгээг өөрөө үүсгэ. Надад 10 минутын зайтай ubuntu хэрэглэгчийн зөвшөөрөл хэрэгтэй байна. Та үүнийг өөрийнхөөрөө хийж чадна.

$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency

Танаас хурууны хээгээ ашиглан гэрчилгээнд гарын үсэг зурахыг хүсэх болно. Та таслалаар тусгаарласан нэмэлт хэрэглэгчийн нэрийг нэмж болно, жишээлбэл -n ubuntu, carl, ec2-user

Ингээд л та гэрчилгээтэй боллоо! Дараа нь та зөв зөвшөөрлийг зааж өгөх хэрэгтэй:

$ chmod 600 emergency-cert.pub

Үүний дараа та гэрчилгээнийхээ агуулгыг үзэх боломжтой:

$ step ssh inspect emergency-cert.pub

Минийх иймэрхүү харагдаж байна:

emergency-cert.pub
        Type: [email protected] user certificate
        Public key: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
        Signing CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
        Key ID: "test-key"
        Serial: 0
        Valid: from 2020-06-24T16:53:03 to 2020-06-24T17:03:03
        Principals:
                ubuntu
        Critical Options: (none)
        Extensions:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

Энд нийтийн түлхүүр нь бидний үүсгэсэн яаралтай тусламжийн түлхүүр бөгөөд sk-user-ca нь баталгаажуулалтын байгууллагатай холбоотой.

Эцэст нь бид SSH командыг ажиллуулахад бэлэн боллоо:


$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$

  1. Та одоо өөрийн гэрчилгээний байгууллагад итгэдэг хост дээрх дурын хэрэглэгчдэд гэрчилгээ үүсгэх боломжтой.
  2. Та яаралтай тусламжийг арилгах боломжтой. Та sk-user-ca-г хадгалах боломжтой, гэхдээ энэ нь аюулгүй байдлын түлхүүр дээр байгаа тул үүнийг хийх шаардлагагүй. Хэрэв та яаралтай тусламжийн хандалтад ашигласан бол анхны PEM нийтийн түлхүүрийг (жишээ нь ubuntu хэрэглэгчийн ~/.ssh/authorized_keys дээр) хостуудаасаа устгахыг хүсэж болно.

Яаралтай тусламж: Үйл ажиллагааны төлөвлөгөө

Аюулгүй байдлын түлхүүрийг буулгаж, тушаалыг ажиллуулна уу:

$ ssh-add -K

Энэ нь гэрчилгээний байгууллагын нийтийн түлхүүр болон түлхүүр тодорхойлогчийг SSH агент руу нэмнэ.

Одоо гэрчилгээ хийхийн тулд нийтийн түлхүүрийг экспортлоорой:

$ ssh-add -L | tail -1 > sk-user-ca.pub

Жишээлбэл, нэг цагаас илүүгүй хугацаатай гэрчилгээ үүсгэх:

$ ssh-keygen -t ecdsa -f emergency
$ ssh-keygen -Us sk-user-ca.pub -I test-key -n [username] -V -5m:+60m emergency
$ chmod 600 emergency-cert.pub

Одоо дахин SSH:

$ ssh -i emergency username@host

Хэрэв таны .ssh/config файл холбогдох үед асуудал үүсгэж байгаа бол та үүнийг тойрч гарахын тулд -F none сонголтоор ssh-г ажиллуулж болно. Хэрэв та хамтран ажиллагсаддаа гэрчилгээ илгээх шаардлагатай бол хамгийн хялбар бөгөөд найдвартай сонголт бол Шидэт өтний нүх. Үүнийг хийхийн тулд танд зөвхөн хоёр файл хэрэгтэй - манай тохиолдолд яаралтай тусламжийн болон яаралтай-cert.pub.

Энэ аргын надад таалагдаж байгаа зүйл бол техник хангамжийн дэмжлэг юм. Та аюулгүй байдлын түлхүүрээ сейфэнд хийж болно, тэд хаашаа ч явахгүй.

Сурталчилгааны эрх

Эпик серверүүд Байна уу хямд VPS AMD-ийн хүчирхэг процессоруудтай, CPU-ийн үндсэн давтамж 3.4 GHz хүртэл. Хамгийн их тохиргоо нь бараг бүх асуудлыг шийдэх боломжийг олгодог - 128 CPU цөм, 512 ГБ RAM, 4000 ГБ NVMe. Бидэнтэй нэгд!

Бид техник хангамжийн түлхүүрээр SSH хостуудад яаралтай хандах журмыг зааж өгдөг

Эх сурвалж: www.habr.com

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