
Në këtë postim do të zhvillojmë një procedurë për akses emergjent në hostet SSH, duke përdorur çelësa të sigurisë në modalitet offline. Ky është vetëm një nga qasjet, dhe mund ta përshtatni sipas nevojave tuaja. Ne do të ruajmë qendrën e certifikimit SSH për hostet tona në një çelës sigurie. Kjo skemë do të funksionojë pothuajse në çdo version të OpenSSH, duke përfshirë SSH me hyrje të vetme.
Pse gjithë kjo? Epo, kjo është një mundësi për raste ekstreme. Kjo është një derë përpara që do t'ju lejojë të hyni në serverin tuaj në rast se për ndonjë arsye nuk ka asnjë zgjidhje tjetër.
Pse të përdoren certifikatat në vend të çelësave publikë/privatë për akses emergjent?
- Ndryshe nga çelësat publikë, afati i skadencës së certifikatave mund të jetë shumë i shkurtër. Mund të gjeneroni një certifikatë që është e vlefshme për 1 minutë ose madje për 5 sekonda. Pasi të skadojë ky afat, certifikata do të bëhet e pavlefshme për lidhje të reja. Kjo është ideale për akses emergjent.
- Mund të krijoni një certifikatë për çdo llogari në host-et tuaj dhe, nëse është e nevojshme, t'i dërgoni këto certifikata "njëherësh" kolegëve tuaj.
ĂfarĂ« do t'ju nevojitet
- ĂelĂ«sat e sigurisĂ« harduerikĂ« qĂ« mbĂ«shtesin çelĂ«sat rezidentĂ«.
ĂelĂ«sat rezidentĂ« janĂ« çelĂ«sa kriptografikĂ« qĂ« ruajten plotĂ«sisht brenda çelĂ«sit tĂ« sigurisĂ«. NdĂ«rkohĂ«, ata ndonjĂ«herĂ« janĂ« tĂ« mbrojtur me njĂ« kod PIN alfanumerik. Pjesa e hapur e çelĂ«sit rezident mund tĂ« eksportohet nga çelĂ«si i sigurisĂ«, nĂ«se Ă«shtĂ« e nevojshme, sĂ« bashku me pĂ«rshkrimin e çelĂ«sit tĂ« mbyllur. MbĂ«shtetje pĂ«r çelĂ«sat rezidentĂ« kanĂ«, pĂ«r shembull, çelĂ«sat USB tĂ« serisĂ« Yubikey 5. Preferohet qĂ« ato tĂ« jenĂ« tĂ« destinuara vetĂ«m pĂ«r akses emergjent nĂ« host. PĂ«r kĂ«tĂ« post, 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 ruajtjen e kĂ«tyre çelĂ«save.
- OpenSSH versioni 8.2 ose më i lartë në kompjuterin tuaj lokal dhe në serverat ku dëshironi të keni akses emergjent. Ubuntu 20.04 vjen me OpenSSH 8.2.
- (opsionale, por e preferueshme) Një mjet CLI për verifikimin e certifikatave.
Përgatitja
Së pari, duhet të krijoni një qendër certifikimi, e cila do të jetë në çelësin e sigurisë. Futni çelësin dhe filloni:
$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]Si një koment (-C), kam vendosur yubikey-9-512-742@smallstep.com, në mënyrë që të mos harroj se për cilin çelës sigurie është kjo qendër certifikimi.
Përveç shtimit të çelësit në Yubikey, do të gjenerohen lokal dy skedarë:
- sk-user-ca, një përshkrim çelësi që referon në çelësin privat që ruhet në çelësin e sigurisë,
- sk-user-ca.pub, i cili do të jetë çelësi publik për qendrën tuaj të certifikimit.
Por mos u shqetësoni, në Yubikey ruhet një çelës privat tjetër, i cili nuk mund të nxirret. Pra, këtu gjithçka është e sigurt.
Në hostët në emrin e përdoruesit root, shtoni (nëse nuk e keni shtuar ende) në konfigurimin e SSHD (/etc/ssh/sshd_config) sa vijon:
TrustedUserCAKeys /etc/ssh/ca.pubPastaj, në host, shtoni çelësin publik (sk-user-ca.pub) në /etc/ssh/ca.pub
Rinisni demonin:
# /etc/init.d/ssh restartTani mund të përpiqemi të qassim hostin. Por së pari, do të na nevojitet një certifikat. Krijoni një çift çelësash, i cili do të lidhet me certifikatën:
$ ssh-keygen -t ecdsa -f emergencyCertifikatat dhe çiftet SSH
NdonjĂ«herĂ« ndihesh se do tĂ« ishte mĂ« mirĂ« tĂ« pĂ«rdorĂ«sh njĂ« certifikatĂ« si zĂ«vendĂ«sim pĂ«r çiftin çelĂ«s publik / privat. Por pĂ«r autentifikimin e pĂ«rdoruesit, njĂ« certifikatĂ« nuk mjafton. Ădo certifikatĂ« ka gjithashtu njĂ« çelĂ«s privat tĂ« lidhur me tĂ«. Kjo Ă«shtĂ« arsyeja pse duhet tĂ« gjenerojmĂ« kĂ«tĂ« çift "çelĂ«sash emergjent", para se t'i japim vetes njĂ« certifikatĂ«. E rĂ«ndĂ«sishme Ă«shtĂ« se certifikata e nĂ«nshkruar i tregohet serverit, me caktimin e çiftit tĂ« çelĂ«save pĂ«r tĂ« cilĂ«t kemi çelĂ«sin privat.Prandaj, shkĂ«mbimi i çelĂ«save publikĂ« Ă«shtĂ« ende i gjallĂ«. Kjo e funksionon edhe me certifikatat. Certifikatat thjesht çlirojnĂ« serverin nga nevoja pĂ«r tĂ« ruajtur çelĂ«sat publikĂ«.
Tani krijoni certifikatën vetë. Kam nevojë për autorizimin e përdoruesit ubuntu brenda një intervali prej 10 minutash. Mund ta bëni sipas mënyrës suaj.
$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergencyDo t'ju kĂ«rkohet tĂ« nĂ«nshkruani certifikatĂ«n me anĂ« tĂ« gjurmĂ«s sĂ« gishtave. Mund tĂ« shtoni emra tĂ« tjerĂ« pĂ«rdoruesish, tĂ« ndarĂ« me vĂrgula, pĂ«r shembull, -n ubuntu,carl,ec2-user
Kaq, tani keni një certifikatë! Tani duhet të caktosh lejet e duhura:
$ chmod 600 emergency-cert.pubPasi kësaj, mund të shikoni përmbajtjen e certifikatës tuaj:
$ step ssh inspect emergency-cert.pubJa si duket e imja:
emergency-cert.pub
Lloj: ecdsa-sha2-nistp256-cert-v01@openssh.com certifikata e përdoruesit
ĂelĂ«si publik: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
CA nënshkrimi: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
ID e çelësit: "test-key"
Serial: 0
I vlefshëm: nga 2020-06-24T16:53:03 deri në 2020-06-24T17:03:03
Principals:
ubuntu
Opsionet Kritike: (asnjë)
Zgjerime:
lejo-forwarding-X11
lejo-agent-forwarding
lejo-port-forwarding
lejo-pty
lejo-user-rcKëtu çelësi publik është çelësi emergency që krijuam, dhe është i lidhur me qendrën e certifikimit sk-user-ca.
Më në fund jemi gati të fillojmë komandën SSH:
$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$- Tani mund të krijoni certifikata për çdo përdorues në hostin që i beson qendrës tuaj të certifikimit.
- Mund ta hiqni emergency. Mund ta ruani sk-user-ca, por nuk keni nevojë për të, pasi ndodhet gjithashtu në çelësin e sigurisë. Mund të dëshironi gjithashtu të hiqni çelësin origjinal publik PEM nga hostet tuaja (p.sh., në ~/ .ssh/authorized_keys për përdoruesin ubuntu), nëse e keni përdorur për qasje emergjente.
Qasja emergjente: plani i veprimit
Vendosni çelësin e sigurisë dhe nisni komandën:
$ ssh-add -KNë këtë mënyrë do të shtoni çelësin publik të qendrës së të dhënave dhe descriptorin e çelësit në SSH-agent.
Tani eksporto çelësin publik për të krijuar certifikatën:
$ ssh-add -L | tail -1 > sk-user-ca.pubKrijoni një certifikatë me një skadencë, 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.pubDhe tani përsëri SSH:
$ ssh -i emergency username@hostNĂ«se skedari juaj .ssh/config shkakton ndonjĂ« problem me lidhjen, mund tĂ« ekzekutoni ssh me parametrin -F none pĂ«r ta anashkaluar atĂ«. NĂ«se duhet tĂ« dĂ«rgoni certifikatĂ«n te njĂ« koleg, opsioni mĂ« i thjeshtĂ« dhe mĂ« i sigurt Ă«shtĂ« . PĂ«r kĂ«tĂ« do tĂ« nevojiten vetĂ«m dy skedarĂ« â nĂ« rastin tonĂ« kĂ«to janĂ« emergency dhe emergency-cert.pub.
Më pëlqen ky qasje, pasi ka mbështetje harduerike. Mund të vendosni çelësat e sigurisë në një kasafortë, dhe ata nuk do të humbasin.
Si reklamë
Servera epik â kjo Ă«shtĂ« me procesorĂ« tĂ« fuqishĂ«m nga AMD, shkalla e frekuencĂ«s sĂ« CPU deri nĂ« 3.4 GHz. Konfigurimi maksimal lejon tĂ« zgjidhni pothuajse çdo detyrĂ« â 128 bĂ«rthama CPU, 512 GB RAM, 4000 GB NVMe. Bashkohuni!
Burimi: habr.com
