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:
- sk-user-ca, xavfsizlik kalitida saqlangan shaxsiy kalitga ishora qiluvchi kalit dastagi,
- 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:~$
- Endi siz sertifikat vakolatiga ishonadigan hostda istalgan foydalanuvchi uchun sertifikatlar yaratishingiz mumkin.
- 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
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?
Manba: www.habr.com