Majhne skrivnosti SSH

V tem članku smo zbrali naše najboljše pristope za učinkovitejšo uporabo SSH. Iz njega boste izvedeli kako:

  • Dodati drugi faktor k prijavi SSH
  • Varno uporabljati agent forwarding
  • Izhod iz zataknjene SSH seje
  • Ohraniti stalni terminal odprt
  • Deliti oddaljeno sejo terminala s prijateljem (brez Zoom-a!)

Dodajanje drugega faktorja k svojemu SSH

Drugi faktor avtentikacije za vaše SSH povezave lahko dodate na pet različnih načinov:

  1. Posodobite svoj OpenSSH in uporabite šifrirni ključ. Februarja 2020 je OpenSSH dodal podporo za FIDO U2F (Universal Second Factor) šifre. To je odlična nova funkcija, vendar obstaja zasuka: samo tisti odjemalci in strežniki, ki so se posodobili na različico OpenSSH 8.2 in višje, bodo lahko uporabljali šifrirne ključe, saj februarska posodobitev uvaja nove tipe ključev. S ukazom ssh –V lahko preverite različico odjemalca SSH, strežniško različico pa s pomočjo ukaza nc [servername] 22

    Februarski različici sta bila dodana dva nova tipa ključev – ecdsa-sk in ed25519-sk (skupaj z ustreznimi certifikati). Za generiranje datoteke ključa preprosto vstavite svoj šifrirni ključ in zaženite ukaz:
    $ ssh-keygen -t ecdsa-sk -f ~\/ .ssh\/id_ecdsa_sk

    To bo ustvarilo javne in skrivne ključe ter ju povezalo z vašim U2F napravo. Naloga skrivnega ključa na U2F napravi je dešifriranje skrivne deskriptorja ključa na disku, ko je šifrirni ključ aktiviran.

    Poleg tega lahko kot sekundarni faktor navedete kodno frazo za vaše ključe.

    Ključ-rezident je še en podprt tip generacije -sk- ključev v OpenSSH. Ta pristop hrani deskriptor na U2F napravi in vam omogoča, da ga imate pri šifrirnem ključu, ko ga potrebujete. Ustvarite ključ-rezident lahko z ukazom:

    $ ssh-keygen -t ecdsa-sk -O resident -f ~\/ .ssh\/id_ecdsa_sk

    Nato, da deskriptor vrnete nazaj v pomnilnik na novi napravi, vstavite šifrirni ključ in zaženite ukaz:

    $ ssh-add -K

    Ob povezovanju s hostom boste še vedno morali aktivirati šifrirni ključ.

  2. Uporabiti PIV+PKCS11 in Yubikey. Za povezovanje z napravami z zgodnejšimi različicami SSHD bo potreben drugačen pristop s šifrirnim ključem. Na Yubicotu najdete vodnik za uporabo U2F+SSH s PIV\/PKCS11 (v angleščini). To ni isto kot FIDO U2F, in čeprav metoda deluje, zahteva veliko truda, da ugotovite, katera magija jo poganja.
  3. Uporabite prilagojeni yubikey-agent ssh-agent. Filippo Valsorda je napisal SSH agent za Yubikeye. Je povsem nov in vsebuje minimalno funkcionalnost.
  4. Uporabite Touch ID in sekey. Sekey je SSH agent z odprto kodo, ki shranjuje tajne ključe v zaščitenem okolju Maca in omogoča uporabo Touch ID za funkcijo dostopa.
  5. Uporabite Single Sign-On SSH. Napisal sem vadnico za pomoč pri nastavitvi te metode (angleščina). Ena od prednosti single sign-on SSH je možnost uporabe varnostnih politik vašega ponudnika identitete — vključno s podporo za večfaktorsko avtentikacijo (MFA).

Varna uporaba agent forwarding-a.

V SSH agent forwarding omogoča oddaljenemu sistemu dostop do SSH agenta vašega lokalnega naprave. Ko uporabljate SSH z vključenim agent forwarding-om (običajno preko ssh -A), bo v povezavi dva kanala: vaša interaktivna seja in kanal za agent forwarding. Preko tega kanala se Unix-socket, ki ga ustvari vaš lokalni SSH-agent, poveže z oddaljenim sistemom. To je tvegana metoda, saj lahko uporabnik z root dostopom na oddaljeni napravi dostopa do vašega lokalnega SSH agenta in potencialno prevzame vašo identiteto v omrežju. Ko uporabljate standardni SSH agent iz paketa Open SSH, sploh ne boste opazili, da se to dogaja. Imeti U2F ključ (ali Sekey) vam bo pomagalo učinkovito blokirati vse poskuse dostopa do vašega SSH agenta od zunaj.

Tudi z to mero previdnosti bo dobra ideja, da agent forwarding uporabljate čim manj pogosto. Ne uporabljajte ga v vsaki seji — uporabite agent forwarding samo takrat, ko ste prepričani v njegovo nujnost za trenutno sejo.

Izhod iz zamrznjene seje.

Prekinitev omrežja, nenadzorovano obnašanje programov ali kontrolna sekvenca, ki blokira vnos s tipkovnice — vse to so možni razlogi za prekinitev SSH seje.

Zamrznjeno sejo lahko končate na več načinov:

  1. Avtomatsko se izklopite ob pretrganju omrežja. V svoj .ssh/config morate dodati naslednje:
    ServerAliveInterval 5
    ServerAliveCountMax 1

    ssh bo oddaljenemu sistemu vsake ServerAliveInterval sekunde poslal echo za preverjanje povezave. Če več kot ServerAliveCountMax eho ne prejme odgovora, bo ssh prekinil povezavo zaradi izteka časa in izšel iz seje.

  2. Izstopite iz seje. ssh privzeto uporablja znak ~ (tilde) kot upravljalni. Ukaz ~. zapre odprto povezavo in vas vrne nazaj v terminal. (Upravne zaporedja lahko vnašate samo na novi vrstice.) Ukaz ~? bo izpisal celoten seznam razpoložljivih ukazov v tej seji. Upoštevajte, da bo za vnos znaka ~ na mednarodnih tipkovnicah morda potrebno pritisniti tipko ~ dvakrat.

Zakaj se sploh pojavljajo zamrznjene seje? V časih nastanka interneta računalniki redko premikajo z mesta na mesto. Ko uporabljate prenosne računalnike in preklapljate med več IPv4 omrežji WiFi, se vaš IP naslov spremeni. Ker SSH zanaša na TCP povezave, in te zasledujejo na končno točko s stabilnim IP naslovom, vsakič, ko preklopite med omrežji, vaša SSH povezava izgubi deskriptor soketa in dejansko izgubi. Ko se vaš IP naslov spremeni, vaš omrežni kup potrebuje čas, da zazna izgubo deskriptorja. Ko pride do omrežnih težav, nočemo, da en od vozlišč v TCP povezavi prekinja povezavo prehitro. Zato bo protokol poskusil znova poslati podatke še nekajkrat, preden se končno predaja. Medtem bo vaša seja v terminalu videti zamrznjena. IPv6 dodaja nekaj povezanih značilnosti mobilnosti, ki omogočajo napravi, da obdrži domači naslov med preklapljanjem omrežij. Morda en dan to ne bo več tako velik problem.

Kako obdržati stalni terminal odprt na oddaljenem vozlišču

Obstajata dva različna pristopa k temu, kako obdržati povezavo, ko preklapljate med različnimi omrežji ali želite začasno odklopiti.

1. Uporabite Mosh ili Eternal Terminal

Če potrebujete povezavo, ki se ne prekinja, tudi ko preklapljate med omrežji, uporabite mobilno lupino Mosh. To je zavarovana lupina, ki najprej uporabi SSH-pozdrav in nato preklopi na svoj lasten šifriran kanal za celotno trajanje seje. Tako Mosh ustvari ločen, zelo trden in zaščiten kanal, ki lahko prenese tako prekinitev internetne povezave kot spremembo IP-naslova vašega prenosnika, hude prekinitve omrežja in še več, vse to zahvaljujoč čarobnosti UDP-povezav in protokolu sinhronizacije, ki ga uporablja Mosh.

Za uporabo Mosh boste morali namestiti tako odjemalca kot strežnik ter odpreti vrata 60000-61000 za nes povezani UDP promet do vašega oddaljenega gostitelja. Kasneje vam bo za povezovanje dovolj, da uporabite mosh user@server.

Mosh deluje na ravni zaslonov in pritiskov tipk, kar mu daje vrsto prednosti pred prenosom binarnega toka standardnega vnosa in izhoda med odjemalcem in strežnikom SSH. Če moramo sinhronizirati le zaslone in pritiske tipk, postane ponovna vzpostavitev prekinjene povezave veliko bolj preprosta. Medtem ko SSH beleži in pošilja vse, kar se zgodi, Mosh preprosto zmanjša pritisk tipk in sinhronizira zadnji okvir okna terminala z odjemalcem.

2. Uporabite tmux

Če si želite 'prihajati in odhajati kadar koli' ter obdržati sejo terminala na oddaljenem vozlišču, uporabite multiplexer terminala tmux. Obožujem tmux in ga neprestano uporabljam. Če se vaše SSH-povezovanje prekine, se lahko preprosto ponovno povežete in vnesete tmux attach. Poleg tega ima čudovite funkcije, kot so znotraj-terminalne zavihke in plošče, podobne tistim v terminalu iOS, ter možnost deljenja terminalov z drugimi.

Nekateri radi izboljšajo svoj tmux z uporabo Byobu, paketa, ki znatno izboljša uporabniško izkušnjo tmux in dodaja številne bližnjice na tipkovnici. Byobu je priložen Ubuntu in ga je enostavno namestiti na Mac preko Homebrew.

Deli oddaljeno sejo terminala s prijateljem

Včasih, ko odpravite zapletene težave na svojih strežnikih, se lahko pojavi želja, da delite SSH sejo s kom, ki ni v isti sobi kot vi. tmux je idealen za to nalogo! Potrebno je le nekaj korakov:

  1. Prepričajte se, da je tmux nameščen na vašem bastionu ali na katerem koli strežniku, s katerim nameravate delati.
  2. Oba se bosta morala povezati preko SSH na napravo, z uporabo istega računa.
  3. Eden od vas mora zagnati tmux, da začne sejo tmux.
  4. Drugi mora zagnati tmux attach
  5. Voilà! Imata skupen terminal.

Če si želite bolj naprednih večuporabniških tmux sej, preizkusite tmate, to je fork tmux, ki bistveno poenostavi skupne terminalske seje.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster