Biz apparat kalitlari bilan SSH xostlariga favqulodda kirish tartibini belgilaymiz

Biz apparat kalitlari bilan SSH xostlariga favqulodda kirish tartibini belgilaymiz

Ushbu postda biz SSH xostlariga apparat xavfsizlik kalitlari yordamida oflayn rejimda favqulodda kirish tartibini ishlab chiqamiz. Bu faqat bitta yondashuv va siz uni ehtiyojlaringizga moslashtirishingiz mumkin. Biz xostlarimiz uchun SSH sertifikat vakolatini apparat xavfsizlik kalitida saqlaymiz. Ushbu sxema deyarli har qanday OpenSSH da, shu jumladan bir marta kirish bilan SSH da ishlaydi.

Buning hammasi nima uchun? Xo'sh, bu oxirgi chora. Bu negadir boshqa hech narsa ishlamasa, serveringizga kirish imkonini beruvchi orqa eshikdir.

Favqulodda kirish uchun umumiy/maxfiy kalitlar o'rniga sertifikatlardan foydalanish nega kerak?

  • Ochiq kalitlardan farqli o'laroq, sertifikatlar juda qisqa muddatga ega bo'lishi mumkin. Siz 1 daqiqa yoki hatto 5 soniya davomida amal qiladigan sertifikat yaratishingiz mumkin. Ushbu muddatdan so'ng sertifikat yangi ulanishlar uchun yaroqsiz bo'ladi. Bu favqulodda kirish uchun ideal.
  • Xostlaringizdagi har qanday hisob uchun sertifikat yaratishingiz mumkin va agar kerak bo'lsa, bunday "bir martalik" sertifikatlarni hamkasblarga yuborishingiz mumkin.

Nima kerak

  • Rezident kalitlarni qo'llab-quvvatlaydigan apparat xavfsizlik kalitlari.
    Rezident kalitlar to'liq xavfsizlik kalitida saqlanadigan kriptografik kalitlardir. Ba'zan ular alfanumerik PIN-kod bilan himoyalangan. Rezident kalitning umumiy qismi ixtiyoriy ravishda shaxsiy kalit tutqichi bilan birga xavfsizlik kalitidan eksport qilinishi mumkin. Masalan, Yubikey 5 seriyali USB kalitlari rezident kalitlarni qo'llab-quvvatlaydi.Ular faqat xostga favqulodda kirish uchun mo'ljallangan bo'lishi tavsiya etiladi. Ushbu post uchun men faqat bitta kalitdan foydalanaman, lekin sizda zaxira uchun qo'shimcha kalit bo'lishi kerak.
  • Bu kalitlarni saqlash uchun xavfsiz joy.
  • Mahalliy kompyuteringizda va favqulodda kirishni xohlagan serverlarda OpenSSH 8.2 yoki undan yuqori versiyasi. Ubuntu 20.04 OpenSSH 8.2 bilan birga keladi.
  • (ixtiyoriy, lekin tavsiya etiladi) Sertifikatlarni tekshirish uchun CLI vositasi.

o'quv

Birinchidan, siz apparat xavfsizlik kalitida joylashgan sertifikatlashtirish organini yaratishingiz kerak. Kalitni joylashtiring va ishga tushiring:

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

Izoh sifatida (-C) ko'rsatdim [elektron pochta bilan himoyalangan]shuning uchun siz ushbu sertifikat vakolatxonasi qaysi xavfsizlik kalitiga tegishli ekanligini unutmaysiz.

Yubikey kalitini qo'shishdan tashqari, mahalliy sifatida ikkita fayl yaratiladi:

  1. sk-user-ca, xavfsizlik kalitida saqlangan shaxsiy kalitga ishora qiluvchi kalit dastagi,
  2. sk-user-ca.pub, bu sizning sertifikat organingiz uchun ochiq kalit bo'ladi.

Xavotir olmang, Yubikey boshqa shaxsiy kalitni saqlaydi, uni qaytarib bo'lmaydi. Shuning uchun, bu erda hamma narsa ishonchli.

Xostlarda, root sifatida, SSHD konfiguratsiyasiga (/etc/ssh/sshd_config) quyidagilarni qo'shing (agar sizda hali yo'q bo'lsa):

TrustedUserCAKeys /etc/ssh/ca.pub

Keyin xostda ochiq kalitni (sk-user-ca.pub) /etc/ssh/ca.pub ga qo'shing.

Demonni qayta ishga tushiring:

# /etc/init.d/ssh restart

Endi biz xostga kirishga harakat qilishimiz mumkin. Lekin birinchi navbatda bizga sertifikat kerak. Sertifikat bilan bog'langan kalit juftligini yarating:

$ ssh-keygen -t ecdsa -f emergency

Sertifikatlar va SSH juftliklari
Ba'zan sertifikatdan umumiy/maxfiy kalit juftligini almashtirish sifatida foydalanish vasvasasi bo'ladi. Lekin foydalanuvchini autentifikatsiya qilish uchun faqat sertifikat yetarli emas. Har bir sertifikat, shuningdek, u bilan bog'langan shaxsiy kalitga ega. Shuning uchun biz o'zimizga sertifikat berishdan oldin ushbu "favqulodda" kalit juftligini yaratishimiz kerak. Muhimi shundaki, biz imzolangan sertifikatni serverga ko'rsatamiz, bunda bizda shaxsiy kalit mavjud bo'lgan kalit juftligi ko'rsatiladi.

Shunday qilib, ochiq kalit almashinuvi hali ham tirik va yaxshi. Bu hatto sertifikatlar bilan ham ishlaydi. Sertifikatlar serverning ochiq kalitlarni saqlash zaruriyatini shunchaki yo'q qiladi.

Keyinchalik, sertifikatning o'zini yarating. Menga 10 daqiqalik intervalda ubuntu foydalanuvchi avtorizatsiyasi kerak. Siz buni o'zingiz qilishingiz mumkin.

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

Barmoq izingiz yordamida sertifikatga imzo chekishingiz so'raladi. Siz vergul bilan ajratilgan qo'shimcha foydalanuvchi nomlarini qo'shishingiz mumkin, masalan -n ubuntu, carl, ec2-user

Bo'ldi, endi sizda sertifikat bor! Keyin to'g'ri ruxsatlarni belgilashingiz kerak:

$ chmod 600 emergency-cert.pub

Shundan so'ng siz sertifikatingiz mazmunini ko'rishingiz mumkin:

$ step ssh inspect emergency-cert.pub

Mening ko'rinishim shunday:

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

Bu erda ochiq kalit biz yaratgan favqulodda kalit bo'lib, sk-user-ca sertifikatlash organi bilan bog'langan.

Nihoyat, biz SSH buyrug'ini ishga tushirishga tayyormiz:


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

  1. Endi siz sertifikat vakolatiga ishonadigan hostda istalgan foydalanuvchi uchun sertifikatlar yaratishingiz mumkin.
  2. Favqulodda vaziyatni olib tashlashingiz mumkin. Siz sk-user-ca-ni saqlashingiz mumkin, lekin bunga hojat yo'q, chunki u ham xavfsizlik kalitida. Agar siz uni favqulodda kirish uchun ishlatgan bo'lsangiz, asl PEM umumiy kalitini xostlaringizdan olib tashlashni xohlashingiz mumkin (masalan, ubuntu foydalanuvchisi uchun ~/.ssh/authorized_keys).

Favqulodda kirish: Harakatlar rejasi

Xavfsizlik kalitini joylashtiring va buyruqni bajaring:

$ ssh-add -K

Bu SSH agentiga sertifikat organining ochiq kaliti va kalit identifikatorini qo'shadi.

Endi sertifikat yaratish uchun ochiq kalitni eksport qiling:

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

Yaroqlilik muddati, masalan, bir soatdan ko'p bo'lmagan sertifikat yarating:

$ 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

Va endi yana SSH:

$ ssh -i emergency username@host

Agar .ssh/config faylingiz ulanishda ba'zi muammolarni keltirib chiqarsa, uni chetlab o'tish uchun ssh-ni -F none opsiyasi bilan ishga tushirishingiz mumkin. Agar siz hamkasbingizga sertifikat yuborishingiz kerak bo'lsa, eng oson va xavfsiz variant Sehrli qurt teshigi. Buning uchun sizga faqat ikkita fayl kerak bo'ladi - bizning holatlarimizda favqulodda va favqulodda-cert.pub.

Ushbu yondashuv menga yoqadigan narsa - bu apparat yordami. Xavfsizlik kalitlaringizni seyfga qo'yishingiz mumkin va ular hech qaerga ketmaydi.

Reklama huquqlari to'g'risida

Epik serverlar Ismi? arzon VPS AMD dan kuchli protsessorlar, protsessor yadro chastotasi 3.4 gigagertsgacha. Maksimal konfiguratsiya deyarli har qanday muammoni hal qilish imkonini beradi - 128 protsessor yadrosi, 512 GB RAM, 4000 GB NVMe. Bizga qo'shiling!

Biz apparat kalitlari bilan SSH xostlariga favqulodda kirish tartibini belgilaymiz

Manba: www.habr.com

a Izoh qo'shish