Ne përshkruajmë një procedurë për qasje urgjente në hostet SSH me çelësa harduerikë

Ne përshkruajmë një procedurë për qasje urgjente në hostet SSH me çelësa harduerikë

Në këtë postim, ne do të zhvillojmë një procedurë për qasje urgjente në hostet SSH duke përdorur çelësat e sigurisë së harduerit jashtë linje. Kjo është vetëm një qasje, dhe ju mund ta përshtatni atë për t'iu përshtatur nevojave tuaja. Ne do të ruajmë autoritetin e certifikatës SSH për hostet tanë në çelësin e sigurisë së harduerit. Kjo skemë do të funksionojë pothuajse në çdo OpenSSH, duke përfshirë SSH me një hyrje të vetme.

Për çfarë është e gjitha kjo? Epo, ky është një opsion i fundit. Kjo është një derë e pasme që do t'ju lejojë të keni akses në serverin tuaj kur për ndonjë arsye asgjë tjetër nuk funksionon.

Pse të përdorni certifikata në vend të çelësave publikë/privat për qasje emergjente?

  • Ndryshe nga çelësat publikë, certifikatat mund të kenë një jetëgjatësi shumë të shkurtër. Ju mund të gjeneroni një certifikatë që është e vlefshme për 1 minutë apo edhe 5 sekonda. Pas kësaj periudhe, certifikata do të bëhet e papërdorshme për lidhje të reja. Kjo është ideale për akses urgjent.
  • Ju mund të krijoni një certifikatë për çdo llogari në hostet tuaj dhe, nëse është e nevojshme, t'u dërgoni kolegëve certifikata të tilla "një herë".

Farë keni nevojë

  • Çelësat e sigurisë së harduerit që mbështesin çelësat rezidentë.
    Çelësat rezidentë janë çelësa kriptografikë që ruhen tërësisht brenda çelësit të sigurisë. Ndonjëherë ato mbrohen nga një PIN alfanumerik. Pjesa publike e çelësit rezident mund të eksportohet nga çelësi i sigurisë, opsionalisht së bashku me dorezën e çelësit privat. Për shembull, çelësat USB të serisë Yubikey 5 mbështesin çelësat rezidentë. Këshillohet që ato të jenë të destinuara vetëm për akses urgjent në host. Për këtë postim do të përdor vetëm një çelës, por ju duhet të keni një shtesë për kopje rezervë.
  • Një vend i sigurt për të ruajtur ato çelësa.
  • OpenSSH versioni 8.2 ose më i lartë në kompjuterin tuaj lokal dhe në serverët ku dëshironi të keni akses urgjence. Ubuntu 20.04 vjen me OpenSSH 8.2.
  • (opsionale, por e rekomanduar) Një mjet CLI për kontrollimin e certifikatave.

Trajnimi

Së pari, duhet të krijoni një autoritet certifikimi që do të vendoset në çelësin e sigurisë së harduerit. Fusni çelësin dhe ekzekutoni:

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

Si koment (-C) tregova [email mbrojtur]në mënyrë që të mos harroni se cilit çelës sigurie i përket ky autoritet certifikimi.

Përveç shtimit të çelësit në Yubikey, dy skedarë do të gjenerohen në nivel lokal:

  1. sk-user-ca, një dorezë çelësi që i referohet çelësit privat të ruajtur në çelësin e sigurisë,
  2. sk-user-ca.pub, i cili do të jetë çelësi publik për autoritetin tuaj të certifikatës.

Por mos u shqetësoni, Yubikey ruan një çelës tjetër privat që nuk mund të merret. Prandaj, gjithçka është e besueshme këtu.

Në hostet, si rrënjë, shtoni (nëse nuk e keni tashmë) sa vijon në konfigurimin tuaj SSHD (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

Më pas në host, shtoni çelësin publik (sk-user-ca.pub) në /etc/ssh/ca.pub

Rinisni demonin:

# /etc/init.d/ssh restart

Tani mund të përpiqemi të hyjmë në host. Por së pari na duhet një certifikatë. Krijo një çift çelësash që do të shoqërohet me certifikatën:

$ ssh-keygen -t ecdsa -f emergency

Certifikatat dhe çiftet SSH
Ndonjëherë është joshëse të përdoret një certifikatë si një zëvendësim për një çift çelësash publik/privat. Por vetëm një certifikatë nuk mjafton për të vërtetuar një përdorues. Çdo certifikatë ka gjithashtu një çelës privat të lidhur me të. Kjo është arsyeja pse ne duhet të gjenerojmë këtë çift çelësash "emergjente" përpara se të lëshojmë një certifikatë. E rëndësishme është që ne të shfaqim certifikatën e nënshkruar në server, duke treguar çiftin e çelësave për të cilin kemi një çelës privat.

Pra, shkëmbimi i çelësave publik është ende i gjallë dhe i mirë. Kjo funksionon edhe me certifikata. Certifikatat thjesht eliminojnë nevojën që serveri të ruajë çelësat publikë.

Tjetra, krijoni vetë certifikatën. Më duhet autorizimi i përdoruesit të ubuntu në intervalin 10 minutash. Ju mund ta bëni atë në mënyrën tuaj.

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

Do t'ju kërkohet të nënshkruani certifikatën duke përdorur gjurmën tuaj të gishtit. Ju mund të shtoni emra përdoruesish shtesë të ndarë me presje, për shembull -n ubuntu,carl,ec2-user

Kjo është ajo, tani ju keni një certifikatë! Më pas ju duhet të specifikoni lejet e sakta:

$ chmod 600 emergency-cert.pub

Pas kësaj, ju mund të shikoni përmbajtjen e certifikatës tuaj:

$ step ssh inspect emergency-cert.pub

Ja si duket e imja:

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

Këtu çelësi publik është çelësi i urgjencës që kemi krijuar dhe sk-user-ca është i lidhur me autoritetin e certifikimit.

Më në fund ne jemi gati të ekzekutojmë komandën SSH:


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

  1. Tani mund të krijoni certifikata për çdo përdorues në një host që i beson autoritetit tuaj të certifikatës.
  2. Mund të hiqni urgjencën. Ju mund të ruani sk-user-ca, por nuk keni nevojë, pasi është gjithashtu në çelësin e sigurisë. Ju gjithashtu mund të dëshironi të hiqni çelësin publik origjinal PEM nga hostet tuaja (për shembull në ~/.ssh/authorized_keys për përdoruesin e ubuntu-së) nëse e keni përdorur atë për akses urgjent.

Qasja emergjente: Plani i Veprimit

Ngjitni çelësin e sigurisë dhe ekzekutoni komandën:

$ ssh-add -K

Kjo do të shtojë çelësin publik të autoritetit certifikues dhe përshkruesin e çelësit te agjenti SSH.

Tani eksportoni çelësin publik për të krijuar një certifikatë:

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

Krijoni një certifikatë me një datë skadimi, për shembull, jo më shumë se një orë:

$ 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

Dhe tani SSH përsëri:

$ ssh -i emergency username@host

Nëse skedari juaj .ssh/config po shkakton disa probleme gjatë lidhjes, mund të ekzekutoni ssh me opsionin -F none për ta anashkaluar atë. Nëse keni nevojë t'i dërgoni një certifikatë një kolegu, opsioni më i lehtë dhe më i sigurt është Wormhole Magjike. Për ta bërë këtë, ju nevojiten vetëm dy skedarë - në rastin tonë, emergjenca dhe emergjenca-cert.pub.

Ajo që më pëlqen në lidhje me këtë qasje është mbështetja e harduerit. Ju mund t'i vendosni çelësat tuaj të sigurisë në një kasafortë dhe ata nuk do të shkojnë askund.

Për të Drejtat e Reklamimit

Serverë epikë - A VPS e lirë me procesorë të fuqishëm nga AMD, frekuencë bërthamore të CPU deri në 3.4 GHz. Konfigurimi maksimal ju lejon të zgjidhni pothuajse çdo problem - 128 bërthama CPU, 512 GB RAM, 4000 GB NVMe. Bashkohu me ne!

Ne përshkruajmë një procedurë për qasje urgjente në hostet SSH me çelësa harduerikë

Burimi: www.habr.com

Shto një koment