Eljárást írunk elő a hardverkulcsokkal rendelkező SSH-állomások vészhelyzeti elérésére

Eljárást írunk elő a hardverkulcsokkal rendelkező SSH-állomások vészhelyzeti elérésére

Ebben a bejegyzésben egy eljárást dolgozunk ki az SSH-állomásokhoz való vészhelyzeti hozzáféréshez hardveres biztonsági kulcsok offline használatával. Ez csak egy megközelítés, és saját igényeihez igazíthatja. A hardver biztonsági kulcsán tároljuk a gazdagépeink SSH-tanúsítványkibocsátóját. Ez a séma szinte minden OpenSSH-n működik, beleértve az egyszeri bejelentkezéses SSH-t is.

Mire való ez az egész? Nos, ez az utolsó lehetőség. Ez egy hátsó ajtó, amely lehetővé teszi, hogy hozzáférjen a szerveréhez, amikor valamilyen oknál fogva semmi más nem működik.

Miért használjunk tanúsítványokat nyilvános/magán kulcsok helyett vészhelyzeti hozzáféréshez?

  • A nyilvános kulcsokkal ellentétben a tanúsítványok élettartama nagyon rövid lehet. Létrehozhat egy tanúsítványt, amely 1 percig vagy akár 5 másodpercig is érvényes. Ezen időszak után a tanúsítvány használhatatlanná válik az új kapcsolatokhoz. Ez ideális vészhelyzeti hozzáféréshez.
  • Bármely fiókhoz létrehozhat tanúsítványt a gazdagépen, és szükség esetén elküldheti az ilyen „egyszeri” tanúsítványokat kollégáinak.

Amire szüksége van

  • Rezidens kulcsokat támogató hardveres biztonsági kulcsok.
    A rezidens kulcsok olyan kriptográfiai kulcsok, amelyeket teljes egészében a biztonsági kulcsban tárolnak. Néha alfanumerikus PIN-kód védi őket. A rezidens kulcs nyilvános része exportálható a biztonsági kulcsból, opcionálisan a privát kulcs kezelőjével együtt. Például a Yubikey 5 sorozatú USB kulcsok támogatják a rezidens kulcsokat, célszerű csak a gazdagéphez való vészhelyzeti hozzáférésre szolgálni. Ehhez a bejegyzéshez csak egy kulcsot fogok használni, de szükség van egy másikra is a biztonsági mentéshez.
  • Biztonságos hely a kulcsok tárolására.
  • OpenSSH 8.2-es vagy újabb verziója a helyi számítógépen és azokon a kiszolgálókon, amelyekhez vészhelyzeti hozzáférést szeretne elérni. Az Ubuntu 20.04 OpenSSH 8.2-vel érkezik.
  • (opcionális, de ajánlott) CLI-eszköz a tanúsítványok ellenőrzéséhez.

Edzés

Először is létre kell hoznia egy hitelesítési hatóságot, amely a hardver biztonsági kulcsán található. Helyezze be a kulcsot, és futtassa:

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

Megjegyzésként (-C) jeleztem [e-mail védett]így nem felejti el, hogy melyik biztonsági kulcshoz tartozik ez a tanúsító hatóság.

Amellett, hogy hozzáadjuk a kulcsot a Yubikey-hez, két fájl jön létre helyben:

  1. sk-user-ca, egy kulcsfogó, amely a biztonsági kulcsban tárolt privát kulcsra utal,
  2. sk-user-ca.pub, amely a tanúsító hatóság nyilvános kulcsa lesz.

De ne aggódjon, a Yubikey egy másik privát kulcsot is tárol, amelyet nem lehet visszakeresni. Ezért itt minden megbízható.

A gazdagépeken rootként adja hozzá (ha még nem tette meg) a következőket az SSHD konfigurációjához (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

Ezután a gazdagépen adja hozzá a nyilvános kulcsot (sk-user-ca.pub) az /etc/ssh/ca.pub fájlhoz

Indítsa újra a démont:

# /etc/init.d/ssh restart

Most megpróbálhatjuk elérni a gazdagépet. De először bizonyítványra van szükségünk. Hozzon létre egy kulcspárt, amely társítva lesz a tanúsítvánnyal:

$ ssh-keygen -t ecdsa -f emergency

Tanúsítványok és SSH-párok
Néha csábító lehet tanúsítványt használni a nyilvános/privát kulcspár helyettesítésére. De a tanúsítvány önmagában nem elegendő a felhasználó hitelesítéséhez. Minden tanúsítványhoz tartozik egy privát kulcs is. Ezért kell létrehoznunk ezt a "vészhelyzeti" kulcspárt, mielőtt tanúsítványt állítanánk ki magunknak. Az a fontos, hogy az aláírt tanúsítványt mutassuk meg a szervernek, jelezve, hogy melyik kulcspárhoz van privát kulcsunk.

Tehát a nyilvános kulcscsere továbbra is él és virul. Ez még tanúsítványokkal is működik. A tanúsítványok egyszerűen kiküszöbölik annak szükségességét, hogy a szerver nyilvános kulcsokat tároljon.

Ezután hozza létre magát a tanúsítványt. Ubuntu felhasználói engedélyre van szükségem 10 perces időközönként. Meg tudod csinálni a magad módján.

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

A rendszer felkéri, hogy írja alá a tanúsítványt az ujjlenyomatával. Hozzáadhat további felhasználóneveket vesszővel elválasztva, például -n ubuntu,carl,ec2-user

Ez az, most már van bizonyítványod! Ezután meg kell adnia a megfelelő engedélyeket:

$ chmod 600 emergency-cert.pub

Ezt követően megtekintheti a tanúsítvány tartalmát:

$ step ssh inspect emergency-cert.pub

Az enyém így néz ki:

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

Itt a nyilvános kulcs az általunk létrehozott vészkulcs, az sk-user-ca pedig a hitelesítési hatósághoz van társítva.

Végül készen állunk az SSH parancs futtatására:


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

  1. Mostantól létrehozhat tanúsítványokat bármely olyan gazdagépen lévő felhasználó számára, amely megbízik a tanúsító hatóságában.
  2. Eltávolíthatja a vészhelyzetet. Az sk-user-ca fájlt elmentheti, de nincs rá szüksége, mivel az is a biztonsági kulcson van. Érdemes lehet eltávolítani az eredeti PEM nyilvános kulcsot is a gazdagépekről (például az ~/.ssh/authorized_keys fájlból az ubuntu felhasználó számára), ha vészhelyzeti hozzáférésre használta.

Vészhelyzeti hozzáférés: cselekvési terv

Illessze be a biztonsági kulcsot, és futtassa a parancsot:

$ ssh-add -K

Ez hozzáadja a tanúsító hatóság nyilvános kulcsát és kulcsleíróját az SSH-ügynökhöz.

Most exportálja a nyilvános kulcsot egy 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 lejárati dátuma 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 az .ssh/config fájl problémát okoz a csatlakozás során, akkor az ssh-t a -F none kapcsolóval futtatva megkerülheti. Ha igazolást kell küldenie egy kollégának, a legegyszerűbb és legbiztonságosabb megoldás Mágikus féreglyuk. Ehhez mindössze két fájlra van szüksége – esetünkben a vészhelyzeti és a rendkívüli-cert.pub fájlra.

Amit szeretek ebben a megközelítésben, az a hardveres támogatás. A biztonsági kulcsokat egy széfbe helyezheti, és nem mennek sehova.

A Reklám Jogairól

Epic szerverek - Van olcsó VPS nagy teljesítményű AMD processzorokkal, CPU magfrekvenciával akár 3.4 GHz-ig. A maximális konfiguráció lehetővé teszi szinte bármilyen probléma megoldását - 128 CPU mag, 512 GB RAM, 4000 GB NVMe. Csatlakozz hozzánk!

Eljárást írunk elő a hardverkulcsokkal rendelkező SSH-állomások vészhelyzeti elérésére

Forrás: will.com

Hozzászólás