Príkaz Linux / Unix: sshd

názov

sshd - démon OpenSSH SSH

synopse

- - - - - - - - - - - - - - - - - [] -

popis

sshd (SSH Daemon) je démonový program pre ssh (1). Spoločne tieto programy nahradzujú rlogin a rsh a zabezpečiť bezpečnú šifrovanú komunikáciu medzi dvoma nedôveryhodnými hostiteľmi cez neistú sieť. Programy sú určené na to, aby boli čo najjednoduchšie nainštalované a používané.

sshd je démon, ktorý počúva pripojenia od klientov. Za normálnych okolností sa spúšťa pri bootovaní z / etc / rc Vytvára nový démon pre každé prichádzajúce spojenie. Vidlicové démoni pracujú s výmenou kľúčov, šifrovaním, autentifikáciou, vykonávaním príkazov a výmenou dát. Táto implementácia sshd podporuje súčasne SSH protokol verzie 1 a 2.

SSH protokol verzia 1

Každý hostiteľ má kľúč RSA špecifický pre hostiteľa (zvyčajne 1024 bitov), ​​ktorý sa používa na identifikáciu hostiteľa. Okrem toho, keď začína démon, generuje serverový kľúč RSA (normálne 768 bitov). Tento kľúč je zvyčajne obnovovaný každú hodinu, ak bol použitý, a nikdy nie je uložený na disku.

Kedykoľvek klient spája démon, reaguje pomocou verejných kľúčov hostiteľa a servera. Klient porovná kľúč RSA hostiteľa s vlastnou databázou a overí, či sa nezmenil. Klient potom vygeneruje 256-bitové náhodné číslo. Šifruje toto náhodné číslo pomocou kľúča hostiteľa a kľúča servera a odošle šifrované číslo na server. Obe strany potom použijú toto náhodné číslo ako kľúč relácie, ktorý sa používa na šifrovanie všetkých ďalších komunikácií v relácii. Zvyšok relácie je zašifrovaný pomocou bežnej šifry, v súčasnosti Blowfish alebo 3DES, pričom štandardne sa používa 3DES. Klient si vyberie šifrovací algoritmus, ktorý sa použije od tých, ktoré ponúka server.

Potom server a klient zadajú autentifikačný dialóg. Klient sa pokúsi autentifikovať pomocou autentifikácie .rhosts, autentifikácie .rhosts v kombinácii s autentifikáciou hostiteľa RSA, autentifikáciou RSA challenge-response alebo overovaním na základe hesla .

Autentifikácia systému Rhosts je zvyčajne zakázaná, pretože je v podstate neistá, ale môže byť povolená v konfiguračnom súbore servera, ak je to potrebné. Zabezpečenie systému sa nezlepší, ak rshd rlogind a rexecd nie sú deaktivované (čím úplne zablokuje rlogin a rsh do zariadenia).

SSH verzia 2 protokolu

Verzia 2 funguje podobne: Každý hostiteľ má kľúč špecifický pre hostiteľa (RSA alebo DSA), ktorý sa používa na identifikáciu hostiteľa. Keď sa však démon spustí, nevygeneruje kľúč servera. Zabezpečenie vpred je poskytované prostredníctvom kľúčovej dohody spoločnosti Diffie-Hellman. Táto kľúčová dohoda vedie k kľúču zdieľanej relácie.

Zvyšok relácie je šifrovaný pomocou symetrickej šifry, v súčasnosti 128 bitových AES, Blowfish, 3DES, CAST128, Arcfour, 192 bitových AES alebo 256 bitových AES. Klient si vyberie šifrovací algoritmus, ktorý sa použije od tých, ktoré ponúka server. Okrem toho je integrita relácie zabezpečená prostredníctvom kryptografickej autentifikačnej správy (hmac-sha1 alebo hmac-md5).

Protokol verzia 2 poskytuje metódu overovania používateľa založenú na verejných kľúčoch (PubkeyAuthentication) alebo hostiteľskej hostiteľskej hostiteľskej metóde (HostbasedAuthentication), konvenčné autentifikácie heslom a metódy založené na reakcii na výzvy.

Spravovanie a prenos údajov

Ak sa klient úspešne autentizuje, zadá sa dialógové okno na prípravu relácie. V tomto okamihu môže klient požadovať napríklad pridelenie pseudo-tty, preposielanie pripojení X11, preposielanie pripojení TCP / IP alebo presmerovanie pripojenia agentu overovania cez zabezpečený kanál.

Nakoniec klient buď požiada shell alebo vykonanie príkazu. Po stranách prejdite do režimu relácie. V tomto režime môžu obe strany kedykoľvek posielať dáta a takéto údaje sa posielajú do / z príkazu shell alebo príkazu na strane servera a užívateľský terminál na strane klienta.

Po ukončení užívateľského programu a ukončení všetkých preposielaných X11 a iných pripojení server pošle klientovi výstupný stav príkazu a obe strany opustí.

sshd možno konfigurovať pomocou príkazového riadku alebo konfiguračného súboru. Možnosti príkazového riadku prepisujú hodnoty zadané v konfiguračnom súbore.

sshd opätovne preštuduje svoj konfiguračný súbor, keď dostane signál zavesenia SIGHUP tým, že sa spustí s názvom, ktorý bol spustený ako / usr / sbin / sshd

Možnosti sú nasledujúce:

-b bitov

Určuje počet bitov v kľúči servera prvej verzie protokolu 1 (predvolené 768).

-d

Režim ladenia. Server odošle podrobný ladenie výstup do systémového denníka a nevedie sa do pozadia. Server tiež nefunguje a spracováva iba jedno spojenie. Táto možnosť je určená len na ladenie pre server. Možnosti viacerých -d zvyšujú úroveň ladenia. Maximálne je 3.

-e

Keď je táto voľba zadaná, sshd zašle výstup štandardnej chybe namiesto systémového denníka.

-f konfiguračný súbor

Určuje názov konfiguračného súboru. Predvolená hodnota je / etc / ssh / sshd_config sshd odmieta spustiť, ak neexistuje konfiguračný súbor.

-g login_grace_time

Poskytuje klientom čas potrebný na ich autentifikáciu (predvolené 120 sekúnd). Ak sa klientovi počas niekoľkých sekúnd nepodarí overiť totožnosť, server sa odpojí a ukončí. Hodnota nula označuje žiadny limit.

-h host_key_file

Určuje súbor, z ktorého sa číta kľúč hostiteľa. Táto voľba musí byť uvedená, ak sshd nie je spustený ako root (pretože bežné súbory kľúčov hostiteľa obvykle nie sú čitateľné nikým iným ako root). Predvolená hodnota je verzia protokolu / / etc / ssh / ssh_host_key pre protokol verzie 1 a / etc / ssh / ssh_host_rsa_key a / etc / ssh / ssh_host_dsa_key pre verziu protokolu 2. Je možné mať viaceré súbory kľúčov hostiteľa pre rôzne verzie protokolov a kľúč hostiteľa algoritmy.

-i

Určuje, že sshd sa spúšťa z inetd. sshd sa zvyčajne nespúšťa z inetdu, pretože potrebuje vygenerovať kľúč servera predtým, ako môže reagovať na klienta, čo môže trvať desiatky sekúnd. Klienti by museli príliš dlho čakať, keby bol kľúč zakaždým regenerovaný. Avšak s malými veľkosťami kľúčov (napr. 512) pomocou sshd z inetdu môže byť uskutočniteľné.

-k key_gen_time

Určuje, ako často sa regeneruje kľúč servera prvej verzie protokolu 1 (predvolené 3600 sekúnd alebo jednu hodinu). Motivácia na obnovenie kľúča pomerne často spočíva v tom, že kľúč nie je uložený nikde a po približne jednej hodine sa stáva, že nie je možné obnoviť kľúč na dešifrovanie zachytenej komunikácie, a to aj v prípade, že je stroj popraskaný alebo fyzicky zabavený. Hodnota nula znamená, že kľúč nebude nikdy regenerovaný.

-o možnosť

Môže sa použiť na poskytnutie možností vo formáte použitom v konfiguračnom súbore. To je užitočné pri určovaní možností, pre ktoré neexistuje žiadna samostatná príznaková príkazová riadka.

-p port

Určuje port, na ktorom server počúva pripojenia (predvolené 22). Možnosti viacerých portov sú povolené. Porty špecifikované v konfiguračnom súbore sa ignorujú pri zadaní portu príkazového riadka.

-q

Tichý režim. Do systémuového denníka sa nezasiela nič. Bežne sa zaznamená začiatok, overovanie a ukončenie každého spojenia.

-t

Testovací mód. Skontrolujte len správnosť konfiguračného súboru a správnosť kľúčov. To je užitočné pre spoľahlivé aktualizovanie sshd, pretože sa môžu meniť možnosti konfigurácie.

-u len

Táto voľba sa používa na určenie veľkosti poľa v štruktúre utmp, ktorá obsahuje meno vzdialeného hostiteľa. Ak je vyriešený názov hostiteľa dlhší ako len, namiesto toho sa použije desatinná hodnota s tečkami. To umožňuje hosťom s veľmi dlhými hostiteľskými názvami, ktoré pretečia toto pole, aby boli stále jednoznačne identifikované. Zadanie - u0 označuje, že do súboru utmp sa majú vložiť iba tečkované desatinné adresy. - u0 sa tiež používa na zabránenie tomu, aby sshd robila žiadosti o DNS, pokiaľ to nevyžaduje mechanizmus autentifikácie alebo konfigurácia. Mechanizmy overenia, ktoré môžu vyžadovať DNS, zahŕňajú RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication a pomocou možnosti = pattern-list in key file. Možnosti konfigurácie, ktoré vyžadujú DNS, zahŕňajú použitie vzoru USER @ HOST v súboroch AllowUsers alebo DenyUsers

-D

Keď je táto možnosť špecifikovaná, sshd sa neoddelí a nestane sa démonom. To umožňuje jednoduché sledovanie sshd

-4

Sily sshd používa iba adresy IPv4.

-6

Sily sshd používajú len adresy IPv6.

Konfiguračný súbor

sshd číta konfiguračné dáta z / etc / ssh / sshd_config (alebo súbor špecifikovaný pomocou - f na príkazovom riadku). Formát súboru a možnosti konfigurácie sú popísané v sshd_config5.

Proces prihlásenia

Keď sa používateľ úspešne prihlási, sshd urobí nasledovné:

  1. Ak je prihlásenie na tty a nie je zadaný žiadny príkaz, vytlačí posledný čas prihlásenia a / etc / motd (ak to nie je zabránené v konfiguračnom súbore alebo $ HOME / .hushlogin pozri sekciu Sx FILES).
  2. Ak je prihlásenie na tty, zaznamená sa prihlasovací čas.
  3. Kontroluje / etc / nologin, ak existuje, vytlačí obsah a ukončí (ak nie root).
  4. Zmeny bežiace s bežnými používateľskými privilégiami.
  5. Nastavuje základné prostredie.
  6. Číta $ $ HOME / .ssh / prostredie, ak existuje a používatelia môžu zmeniť svoje prostredie. Pozrite si možnosť PermitUserEnvironment v sshd_config5.
  7. Zmeny domovského adresára používateľa.
  8. Ak $ HOME / .ssh / rc existuje, spustí to; inak, ak / etc / ssh / sshrc existuje, spustí to; inak beží xauth. Súborom `` rc '' sa priradí autentifikačný protokol X11 a cookie na štandardnom vstupe.
  9. Spúšťa shell alebo príkaz používateľa.

Formát súboru Authorized_Keys

$ HOME / .ssh / authorized_keys je predvolený súbor, ktorý uvádza verejné kľúče, ktoré sú povolené na autentifikáciu RSA v protokole verzie 1 a na overovanie verejných kľúčov (PubkeyAuthentication) v verzii protokolu 2. AuthorizedKeysFile môže byť použitý na špecifikáciu alternatívneho súboru.

Každý riadok súboru obsahuje jeden kľúč (prázdne riadky a riadky začínajúce znakom # sú ignorované ako komentáre). Každý verejný kľúč RSA pozostáva z nasledujúcich polí, oddelených medzerami: možnosti, bity, exponent, modul, komentár. Každá verejná kľúčová verzia protokolu 2 sa skladá z: možností, typu kľúča, kľúča kódovaného base64, komentár. Pole možností je voliteľné. jeho prítomnosť sa určuje podľa toho, či riadok začína číslom alebo nie (pole s možnosťami sa nikdy nezačína číslom). Polia bitov, exponentov, modulov a komentárov poskytujú kľúč RSA pre verziu protokolu 1; pole poznámky sa nepoužíva na čokoľvek (ale môže byť pre používateľa vhodné na identifikáciu kľúča). Pre verziu protokolu 2 je typ kľúča `` ssh-dss '' alebo `` ssh-rsa ''

Všimnite si, že riadky v tomto súbore sú zvyčajne dlhé niekoľko stoviek bajtov (kvôli veľkosti kódovania verejného kľúča). Nechcete ich zadávať; skopírujte súbor identity.pub id_dsa.pub alebo súbor id_rsa.pub a upravte ho.

sshd vynucuje minimálnu veľkosť kľúča modulu RSA pre protokol 1 a protokol 2 klávesy s 768 bitmi.

Možnosti (ak sú k dispozícii) pozostávajú z špecifikácií voľby oddelených čiarkou. Nie sú povolené žiadne medzery, s výnimkou dvojitých úvodzoviek. Sú podporované nasledujúce špecifikácie volieb (všimnite si, že kľúčové slová s možnosťou nie sú citlivé na veľké a malé písmená):

z = vzor-listu

Určuje, že okrem overovania verejnými kľúčmi musí byť kanonický názov vzdialeného hostiteľa prítomný v zozname vzoriek oddelených čiarkami ("*" a "?" Slúžia ako zástupné znaky). Zoznam môže tiež obsahovať vzory negované tým, že ich predprimuje znakom `! ' ; ak kanonické meno hostiteľa zodpovedá negovanému vzoru, kľúč nie je akceptovaný. Účelom tejto možnosti je voliteľne zvýšiť bezpečnosť: autentifikácia verejným kľúčom sama osebe nedôveruje sieťovým alebo menovacím serverom ani čokoľvek (ale kľúč); Ak však niekto nejako ukradne kľúč, kľúč umožňuje vniknutiu vniknutia z ktoréhokoľvek miesta na svete. Táto dodatočná možnosť komplikuje používanie ukradnutého kľúča (okrem kľúča by sa mali narušiť aj menovacie servery a / alebo smerovače).

príkaz = príkaz

Určuje, že príkaz sa vykoná vždy, keď sa tento kľúč používa na autentifikáciu. Príkaz dodaný používateľom (ak existuje) je ignorovaný. Príkaz je spustený na pty, ak klient požaduje pty; inak sa beží bez tty. Ak je potrebný 8-bitový čistý kanál, nemožno požadovať pty alebo by ste mali špecifikovať no-pty . Citácia môže byť zahrnutá v príkaze tak, že ju zadáte spätným lomikom. Táto možnosť môže byť užitočná na obmedzenie niektorých verejných kľúčov, aby vykonávali iba určitú operáciu. Príkladom môže byť kľúč, ktorý umožňuje vzdialené zálohovanie, ale nič iné. Upozorňujeme, že klient môže špecifikovať presmerovanie TCP / IP a / alebo X11, pokiaľ nie sú výslovne zakázané. Všimnite si, že táto voľba platí pre shell, príkaz alebo podsystém.

prostredie = NAME = hodnota

Určuje, že reťazec sa pridáva do prostredia pri prihlasovaní pomocou tohto kľúča. Premenné prostredia nastavené týmto spôsobom prekonávajú iné štandardné hodnoty prostredia. Mnohé možnosti tohto typu sú povolené. Spracovanie prostredia je predvolene zakázané a je riadené prostredníctvom možnosti PermitUserEnvironment . Táto možnosť sa automaticky deaktivuje, ak je zapnutá funkcia UseLogin .

no-port-forwarding

Zakazuje presmerovanie protokolu TCP / IP, ak sa tento kľúč používa na autentifikáciu. Akékoľvek požiadavky na preposlanie portov klientom vrátia chybu. Môže sa to použiť napríklad v spojení s možnosťou príkazu .

no-X11-forwarding

Zakazuje presmerovanie X11, keď sa tento kľúč používa na autentifikáciu. Akékoľvek žiadosti o preposlanie X11 od klienta vrátia chybu.

ne-agent-forwarding

Zakazuje presmerovanie overovacieho agenta, keď sa tento kľúč používa na autentifikáciu.

no-pty

Zabraňuje alokácii tty (žiadosť o pridelenie pty zlyhá).

permitopen = hostiteľ: port

Obmedzte miestne presmerovanie portov ssh -L tak, že sa môže pripojiť iba k určenému hostiteľovi a portu. Adresy IPv6 je možné špecifikovať alternatívnou syntaxou: hostiteľ / port Možnosti viacerých povolení môžu byť použité oddelene čiarkami. Na zadané názvy hostiteľov sa nevykonáva žiadna zhoda vzhľadu, musia to byť doslovné domény alebo adresy.

Príklady

1024 33 12121 ... 312314325 ylo@foo.bar

z = "*. niksula.hut.fi,! pc.niksula.hut.fi" 1024 35 23 ... 2334 ylo @ niksula

príkaz = "dump / home", no-pty, no-forward-forwardovanie 1024 33 23 ... 2323 backup.hut.fi

allowopen = "10.2.1.55:80", allowopen = "10.2.1.56:25" 1024 33 23 2323

Formát súboru Ssh_Known_Hosts

Súbory / etc / ssh / ssh_known_hosts a $ HOME / .ssh / known_hosts obsahujú hostiteľské verejné kľúče pre všetkých známych hostiteľov. Globálny súbor by mal byť pripravený administrátorom (voliteľný) a súbor pre jednotlivých používateľov sa udržiava automaticky: kedykoľvek sa používateľ pripojí z neznámeho hostiteľa, jeho kľúč sa pridá do súboru pre užívateľa.

Každý riadok v týchto súboroch obsahuje nasledujúce polia: názvy hostiteľov, bity, exponent, modul, komentár. Polia sú oddelené medzerami.

Názvy hostiteľov sú zoznamom vzoriek oddelených čiarkami ("*" a "?" Pôsobia ako zástupné znaky); každý vzor je zase porovnateľný s kanonickým názvom hostiteľa (pri autentifikácii klienta) alebo s menom dodaným používateľom (pri autentifikácii servera). Vzor môže tiež predchádzať znak "!" na označenie negovania: ak sa názov hostiteľa zhoduje s negovaným vzorom, nie je prijatý (týmto riadkom), aj keď zodpovedá inému vzoru na riadku.

Bity, exponent a modul sú prevzaté priamo z kľúča hostiteľa RSA; možno ich získať napríklad z /etc/ssh/ssh_host_key.pub Voliteľné pole s poznámkami pokračuje na koniec riadku a nepoužíva sa.

Linky začínajúce znakom "#" a prázdne riadky sa ignorujú ako komentáre.

Pri autentifikácii hostiteľa je autentifikácia akceptovaná, ak akýkoľvek zodpovedajúci riadok má správny kľúč. Je preto prípustné (ale neodporúča sa) mať niekoľko riadkov alebo rôzne hostiteľské kľúče pre rovnaké názvy. To sa nevyhnutne stane, keď sa v súbore vložia krátke formy hostiteľských mien z rôznych domén. Je možné, že súbory obsahujú konfliktné informácie; autentifikácia je akceptovaná, ak je možné nájsť platné informácie z každého súboru.

Všimnite si, že riadky v týchto súboroch sú zvyčajne stovky znakov dlhé a určite nechcete ručne písať kľúč hostiteľa. Skôr ich vygenerujte pomocou skriptu alebo pomocou súboru /etc/ssh/ssh_host_key.pub a pridaním názvov hostiteľov vpredu.

Príklady

closenet, ..., 130.233.208.41 1024 37 159 ... 93 closenet.hut.fi cvs.openbsd.org, 199.185.137.3 ssh-rsa AAAA1234 ..... =

Pozri tiež

scsh (1), sftp (1), ssh (1), ssh-add1, ssh-agent1, ssh-keygen1, login.conf5, moduli (5), sshd_config5, sftp-server8

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "Architektúra protokolu SSH" draft-ietf-secsh-architecture-12.txt január 2002 nedokončené materiály

M. Friedl N. Provos WA Simpson "Diffie-Hellman Group Exchange pre protokol SSH Transport Layer" draft-ietf-seksh-dh-group-exchange-02.txt január 2002 nedokončené materiály

Dôležité: Pomocou príkazu man ( % man ) môžete zistiť, ako sa príkaz používa vo vašom konkrétnom počítači.