Az SSH hosztok vészhelyzeti hozzáférési eljárásának rögzítése hardverkulcsokkal

Az SSH hosztok vészhelyzeti hozzáférési eljárásának rögzítése hardverkulcsokkal

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:

  1. sk-user-ca, a kulcs leírója, amely hivatkozik az üzemi kulcsra, ami a biztonsági kulcsban van tárolva,
  2. 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.pub

Ezutá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 restart

Most 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 emergency

Tanú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 emergency

Meg 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.pub

Ezutá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-rc

Itt 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:~$

  1. 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.
  2. 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.pub

Hozzon 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@host

Ha 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 Magic Wormhole. 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 olcsó VPS 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!

Az SSH hosztok vészhelyzeti hozzáférési eljárásának rögzítése hardverkulcsokkal

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster