
Ebben a bejegyzésben egy eljárást dolgozunk ki az SSH hosztok sürgősségi hozzáférésére, hardveres biztonsági kulcsok offline használatával. Ez csupán egy megközelítés, és az igényeid szerint alakíthatod. Az SSH tanúsítvány központunkat a hardveres biztonsági kulcson fogjuk tárolni. Ez a séma gyakorlatilag bármely OpenSSH-n működni fog, beleértve az egységes bejelentkezést használó SSH-t is.
Miért is mindez? Nos, ez egy végső megoldás. Ez egy hátsó ajtó, amely lehetővé teszi, hogy hozzáférj a szerveredhez, ha valamilyen okból már semmi más nem működik.
Miért érdemes tanúsítványokat használni a sürgősségi hozzáféréshez a nyílt/zárt kulcsok helyett?
- A nyílt kulcsokkal ellentétben a tanúsítványok lejárati ideje nagyon rövid lehet. Generálhatsz olyan tanúsítványt, amely egy percig, sőt akár öt másodpercig is érvényes. A lejárat után a tanúsítvány új kapcsolatokhoz érvénytelenné válik. Ez ideális a sürgősségi hozzáféréshez.
- Készíthetsz tanúsítványt bármely felhasználói fiók számára a hosztjaidon, és ha szükséges, ilyen „egy használatos” tanúsítványokat küldhetsz kollégáidnak.
Amire szüksége lesz
- Hardveres biztonsági kulcsok, amelyek támogatják a rezidens kulcsokat.
A rezidens kulcsok olyan kriptográfiai kulcsok, amelyek teljes mértékben a biztonsági kulcs belsejében tárolódnak. Néha alfanumerikus PIN-kóddal védettek. A rezidens kulcs nyilvános része exportálható a biztonsági kulcsból, ha szükséges, együtt a privát kulcs leírójával. Például a Yubikey 5 sorozatú USB-kulcsok támogatják a rezidens kulcsokat. Javasolt, hogy csak sürgősségi hozzáférésre legyenek fenntartva. Ehhez a bejegyzéshez egyetlen kulcsot fogok használni, de legyen egy extra kulcsod is biztonsági másolat céljából. - Biztonságos hely az ilyen kulcsok tárolására.
- OpenSSH 8.2 vagy újabb verzió a helyi számítógépeden és a szervereken, amelyekhez sürgősségi hozzáférést szeretnél kapni. Az Ubuntu 20.04 az OpenSSH 8.2-t tartalmazza.
- (nem kötelező, de javasolt) CLI eszköz a tanúsítványok ellenőrzésére.
Előkészületek
Első lépésként létre kell hozni egy tanúsítvány központot, amely a hardveres biztonsági kulcson fog elhelyezkedni. Helyezd be a kulcsot és indítsd el:
$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]Megjegyzésként (-C) a yubikey-9-512-742@smallstep.com címet adtam meg, hogy ne felejtsem el, melyik biztonsági kulcshoz tartozik ez a tanúsítványközpont.
A Yubikey kulcs hozzáadása mellett két fájl fog generálódni lokálisan:
- sk-user-ca, a kulcs leírója, amely hivatkozik az üzemi kulcsra, ami a biztonsági kulcsban van tárolva,
- sk-user-ca.pub, amely a tanúsítványközpontod nyilvános kulcsa lesz.
De ne aggódj, a Yubikey-en van egy másik üzemi kulcs is, amelyet nem lehet kibányászni. Tehát itt minden biztonságos.
A root felhasználó nevében futó hosztokon add hozzá (ha még nem adtad hozzá) az SSHD konfigurációhoz (\/etc\/ssh\/sshd_config) a következőt:
TrustedUserCAKeys \/etc\/ssh\/ca.pubEzután a hoszton add hozzá a nyilvános kulcsot (sk-user-ca.pub) a \/etc\/ssh\/ca.pub-hoz
Indítsd újra a démon:
# /etc/init.d/ssh restartMost megpróbálhatjuk elérni a hosztot. De először szükségünk lesz egy tanúsítványra. Hozz létre egy kulcspárt, amely a tanúsítvánnyal lesz összekapcsolva:
$ ssh-keygen -t ecdsa -f emergencyTanúsítványok és SSH-párok
Néha úgy érzi az ember, hogy a tanúsítványt használja a nyilvános / privát kulcspár helyett. De a felhasználó autentikációjához egy tanúsítvány nem elegendő. Minden tanúsítványhoz tartozik egy összekapcsolt üzemi kulcs. Ezért szükség van arra, hogy előbb létrehozzuk ezt a "vészhelyzeti" kulcspárt, mielőtt kiadnánk egy tanúsítványt magunknak. Fontos, hogy a szervernek azt a tanúsítványt mutatjuk, amelyhez a kulcspár tartozik, amelynek van üzemi kulcsa.Így az nyilvános kulcsok cseréje még mindig él és virul. Ez még a tanúsítványokkal is működik. A tanúsítványok egyszerűen megszüntetik a szervernek azt a szükségletét, hogy nyilvános kulcsokat tároljon.
Most létre kell hozni magát a tanúsítványt. Szükségem van az ubuntu felhasználó 10 perces időintervallumban való hitelesítésére. Megteheted a saját módodon.
$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergencyMeg fogják kérdezni, hogy aláírod a tanúsítványt az ujjlenyomatoddal. További felhasználóneveket is hozzáadhatsz, vesszővel elválasztva, például -n ubuntu,carl,ec2-user
Készen állsz, most van tanúsítványod! A következő lépés a megfelelő engedélyek megadása:
$ chmod 600 emergency-cert.pubEzután megtekintheted a tanúsítványod tartalmát:
$ step ssh inspect emergency-cert.pubÍgy néz ki a tanúsítványom:
emergency-cert.pub
Típus: ecdsa-sha2-nistp256-cert-v01@openssh.com felhasználói tanúsítvány
Nyilvános kulcs: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
Aláíró CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
Kulcs ID: "test-key"
Sorozatszám: 0
Érvényes: 2020-06-24T16:53:03-tól 2020-06-24T17:03:03-ig
Elvek:
ubuntu
Kritikus lehetőségek: (nincs)
Kiterjesztések:
permit-X11-forwarding
permit-agent-forwarding
permit-port-forwarding
permit-pty
permit-user-rcItt a nyilvános kulcs a mi általunk létrehozott emergency kulcs, és az aláíró hatósággal a sk-user-ca kapcsolódik.
Végre készen állunk az SSH parancs futtatására:
$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$- Most már bármilyen felhasználó számára tanúsítványt hozhat létre a gazdagépen, amely megbízik az Ön aláíró hatóságában.
- Törölheti az emergency kulcsot. Megtarthatja a sk-user-ca-t, de erre már nincs szüksége, mivel az is biztonsági kulcson van. Esetleg azt is szeretné eltávolítani a PEM formátumú nyilvános kulcsot a gazdagépről (például a ~/.ssh/authorized_keys fájlból az ubuntu felhasználó számára), ha azt vészhelyzeti hozzáféréshez használta.
Vészhelyzeti hozzáférés: cselekvési terv
Helyezze be a biztonsági kulcsot és futtassa a parancsot:
Használj PIV+PKCS11 és Yubikey-t. A korábbi SSHD verziókkal rendelkező eszközök csatlakoztatásához más megközelítés szükséges a titkosító kulcs használatához. A Yubicónál van egy útmutató az U2F+SSH PIV/PKCS11 használatához (angol). Ez nem ugyanaz, mint a FIDO U2F, és bár a módszer működik, nagy munkát igényel megérteni, hogy milyen varázslat irányítja.Ezzel hozzáadja a tanúsítvány aláíró központ nyilvános kulcsát és a kulcs leíróját az SSH-ügynökhöz.
Most exportálja a nyilvános kulcsot a tanúsítvány létrehozásához:
$ ssh-add -L | tail -1 > sk-user-ca.pubHozzon létre egy tanúsítványt, amelynek érvényességi ideje például legfeljebb egy óra:
$ 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És most újra SSH:
$ ssh -i emergency username@hostHa a .ssh/config fájlja problémákat okoz a csatlakozás során, használhatja az ssh-t a -F none paraméterrel, hogy kikerülje azt. Ha a tanúsítványt át kell adnia egy kollégának, a legegyszerűbb és legbiztonságosabb megoldás a . Ehhez csupán két fájlra lesz szüksége — esetünkben ez az emergency és az emergency-cert.pub.
Ami tetszik ebben a megközelítésben, az a hardveres támogatás. A biztonsági kulcsokat elhelyezheti egy trezorban, így azok nem vesznek el.
Hirdetés
Epikus szerverek — ez erős AMD processzorokkal, CPU magfrekvencia akár 3.4 GHz. A maximális konfiguráció lehetővé teszi szinte bármilyen feladat megoldását — 128 CPU mag, 512 GB RAM, 4000 GB NVMe. Csatlakozzon!
Forrás: habr.com
