Telnet a ssh
Lukáš Apalovič
Lukáš Tencer
SSH• Secure shell
• kombinácia klienta a servera
• pripájanie na vzdialené servery podobne ako použitím príkazu "telnet"
• spojenie je šifrované a teda bezpečné!
• úplna nahráda telnetu (okrem šifrovania) + ďalšie vymoženosti
SSH vs. OpenSSH
• dve rôzne "verzie" SSH na Internete:
– komerčné "ssh": za určitých podmienok použiteľné aj zadarmo (treba si pozrieť licenciu)
– "OpenSSH": voľne použiteľné
Princíp činnosti a konfigurácia sú rovnaké alebo veľmi podobné
Základ balíčka
• démon "sshd", ktorého úlohou je počúvať na porte 22 a reagovať na prichádzajúce spojenia
• po pripojení - nový proces na obsluhu požiadavky
• nasleduje autentifikácia používateľa
• potom proces "sshd" zmení identitu na práve prihláseného používateľa
Pripojenie
• na pripojenie sa používa klientský program "ssh"
• Bleskový návod na pripojenie pomocou SSH: – ssh -l login server.example.com – resp. ssh [email protected]
Pripojenie (pokr.)
• pripojenie na server "server.example.com" ako používateľ "login"
• Autentifikácia - štandardne, zadaním hesla pre dané používateľské meno a server
Protokol SSH1
• jedna z dvoch verzií protokolu ssh (druhá je SSH2)
• Každý server - RSA identifikačný kľúč (default: 1024 bitov), ktorý ho jednoznačne identifikuje
• Pri štarte démona - ďalší RSA kľúč (default: 768 bitov), ktorý sa generuje každú hodinu (3600 sekúnd), ak bol aspoň raz použitý
SSH1(pokr.)
• klient pripojí na démona
• ten mu sprístupní svoje verejné RSA kľúče
• klient porovná verejný identifikačný RSA kľúč servera so svojou uloženou kópiou (ak existuje)
• detekuje zmeny kľúča (ku ktorým za normálnych okolností dochádza zriedkavo - typicky po preinštalovaní SSH servera)
SSH1 (pokr.)• klient potom vygeneruje náhodné 256-
bitové číslo • zašifruje ho obomi verejnými kľúčmi
servera • server - dešifrovanie vďaka privátnym
kľúčom • toto číslo - symetrický kľúč • používané šifry - 3DES a Blowfish • nasleduje autentifikácia
Protokol SSH2
• každý server - identifikačný DSA kľúč • Diffie-Hellmanov algoritmus - obe strany
získavajú kľúč, ktorý sa použije na symetrické šifrovanie (Blowfish, 3DES a ďalšie)
• dve prístupové metódy: autentifikáciu verejným kľúčom alebo pomocou hesla
• Autentifikácia pomocou súborov ".rhosts" je nebezpečná
Konfigurácia SSH démona
• z väčšej časti upravením konfiguračného súboru "/etc/ssh/sshd_config"
• Najdôležitejšie direktívy:– Port 22: port, na ktorom počúva "sshd" (default: 22) – Protocol 2,1: podporované protokoly, primárne sa
používa SSH2 – ListenAddress: adresa, na ktorej počúva "sshd"
(default: všetky sieťové rozhrania servera) RSAAuthentication: umožní používať autentifikáciu
pomocou verejného a privátneho kľúča (nie heslom na server). Platí pre protokol SSH1.
Obmedzenie prístupu
• na základe používateľského mena (na ktoré sa používateľ prihlasuje) - direktívy PermitRootLogin, AllowGroups, AllowUsers, DenyGroups, DenyUsers v "/etc/ssh/sshd_config"
• na základe IP adresy klienta: položky "ssh" v súboroch TCP wrappera - ("/etc/hosts.allow", "/etc/hosts.deny"), ak bol démon skompilovaný s knižnicou "libwrap" (o tom sa môžete jednoducho presvedčiť príkazom "ldd `which sshd`")
Generovanie serverových kľúčov
• ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ''
• ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
• nové kľúče sú platné po reštartovaní "sshd" démona:
• /etc/init.d/sshd restart
Súbor "/etc/ssh/ssh_config" ("~/.ssh/config")
• nastavenia klientského programu "ssh"
• súbor "~/.ssh/config" (v domácom adresári používateľa) a parametre na príkazovom riadku však majú prednosť
• klient "Putty" - stačí nastaviť adresu vzdialeného servera a zadať používateľské meno
Používanie sftp a scp
• dva protokoly na prenos súborov
• "scp" funguje pre SSH1 aj SSH2
• "sftp" je určený iba pre SSH2
• šifrovanie sieťovej prevádzky
• Linux - rovnomenné klientské programy "scp", resp. "sftp"
• Windows - "WinSCP", "SecureFX" (sftp), "FileZilla" (sftp,scp)
Používanie sftp a scp (pokr.)
• Ak chcete používať "sftp" => "/etc/ssh/sshd_config" obsahovať direktívu "Subsystem sftp /usr/lib/ssh/sftp-server"
• Na klientskom počítači stačí spustiť program "sftp": – sftp server.example.com – resp. sftp [email protected]
Telnet
• vzájomná spolupráca dvoch svojich zložiek
• ich postavenie vychádza z architektúry klient-server
• jedna zložka beží na "lokálnom" počítači (Telnet klient), druhá zložka na "vzdialenom" počítači (Telnet server)
Ako funguje Telnet
• klient príma všetky vstupy od terminálu • ich po sieti svojej partnerskej zložke v roli
servera na "vzdialenom" počítači • táto zložka potom príslušné vstupy "podstrkuje"
svojmu okoliu tak, ako keby šlo o vstupy terminálu, pripojeného k miestnemu vzdialenému počítaču
• zložky nie sú "pevne zabudované" v operačnom systéme
• majú formu aplikačných programov
Výhody/nevýhody
• výhodou je väčšia flexibilita a ľahkosť robenia prípadných zmien
• nevýhodou menšia efektívnosť • jednotlivý znak prechádza celkom päťkrát "cez"
celý operačný systém:– od terminálu ku klientskej zložke – zložka ju odosiela na vzdialený počítač – na vzdialenom počítači až ku zložke v úlohe serveru – serverová zložka ju "podstrkuje" späť svojmu
operačnému systému – operační systém ju predáva inej aplikačnej úlohe
Unix a Telnet
• nutné, aby operačný systém (aspoň na strane serveru) vychádzal v ústrety vyššie citovanej možnosti "podstrkovania" vstupov
• Unix - zvláštne vstupné/výstupné body • napodobňujú chovanie skutočného
terminálu • pseudoterminály (v AT&T Unixe),
pseudo tty (v BSD Unixe)
Telnet a iné OS
• TELNET sa zámerne snaží neviazať na vlastnosti, schopnosti a služby určitého konkrétneho prostredia
• príklad: keď sa užívateľ prihlási na prácu v operačnom systéme určitého počítača (tj. urobí tzv. login), a potom si prostredníctvom TELNET-u otvorí vzdialenú terminálovú reláciu s iným počítačom, musí sa na ňom znovu sám prihlásiť
• TENLNET nepozná konkrétne konvencie pre prihlasovanie a zadávanie hesiel, spôsob uchovávania informácií o užívateľoch a ich heslách a veľa iné konkrétne informácie
Telnet a iné OS (pokr.)
• Telnet môže byť implementovaný v prostrediach rôznych operačných systémov
• vďaka tomu, že sa nesnaží o automatické prihlasovanie
• z rozličných operačných systémov je možné si zriaďovať vzdialené terminálové relácie s Unixovskými počítači
• obrátene (zložka v úlohe serveru môže byť implementovaná v inom prostredí než v Unixe) to platí tiež
• implementácií TELNET serverov je zatiaľ akosi menej
TELNET server na PC
• existujú implementácie serverových zložiek protokolu TELNET pre operačný systém MS DOS – je to zaujímavosť, lebo MS DOS je jednoúlohový a jednouživatelský operačný systém, ktorý pojem terminálovej relácie vôbec nepozná
• vlastne formou diaľkového ovládania (remote control) počítača PC ako celku
TELNET server na PC(pokr.)
• výhodou TELNET serveru na počítači PC je možnosť využitia štandardnej klientskej zložky protokolu TELNET, ktorá môže byť navyše používaná i inde, než len v prostredí MS DOSu
• vďaka tomu je možné, aby napríklad Unixový počítač na diaľku ovládal počítač PC
• problémy:– obmedzenej prenosovej rýchlosti – odlišnosť v počte riadkov (Unixový počítač – 24
riadkov, PC – 25 riadkov)
Rlogin
• TELNET nie je zďaleka jediným protokolom pre realizáciu vzdialených terminálových relácií
• existuje rada ďalších, omnoho prepracovanejších a komplexnejších protokolov pre vzdialené terminálové relácie, ktoré ponúkajú väčší rozsah služieb, ale za svoju dokonalosť platia obmedzenejšími možnosťami nasadenia, než jednoduchší TELNET
• rlogin pochádza z prostredia BSD Unixu • Rozdiel oproti Telnetu - "vníma" prostredie, v ktorom
pracuje jeho klientska i serverová zložka, a snaží sa využívať špecifické vlastnosti a schopnosti týchto prostredí - napr. pre zaistenie automatického prihlasovania
NVT - Network Virtual Terminal
• Virtuálny terminál používaný protokolom TELNET
• obojsmerné, znakovo orientované zariadenie, ktoré možno najlepšie prirovnať k dvojici klávesnica - tlačiareň
• klávesnica generuje jednotlivé znaky v kódu ASCII, zatiaľ tlačiareň je priebežne tlačí
• Celok zodpovedá predstave tzv. znakového, resp. riadkového terminálu
NVT (pokr.)
• predpokladá, že prenos dát bude tzv. bufferovaný - teda že dáta nebudú vysielané po jednotlivých znakoch, ale že sa budú najprv hromadiť vo vhodných vyrovnávacích pamätiach (anglicky: buffers)
• vysielané potom budú až väčšie celky • jednoznačným kandidátom je riadok • ak nie je dĺžka riadku dopredu obmedzená, môže sa
stať, že pre ňu nebude k dispozícii dostatočne veľká vyrovnávacia pamäť
• niekedy môže byť vhodné, či dokonca nutné odosielať menšie celky než celé riadky
Ostatné je na vzájomnej dohode
• každý virtuálny terminál vždy obmedzuje "individualitu" konkrétnych terminálov
• redukuje ich vlastnosti a schopnosti na takú úroveň, ktorá môže byť spoločná prakticky všetkým fyzicky existujúcim terminálom
• Protokol TELNET chápe NVT len ako "povinné minimum" a pripúšťa, aby sa obe strany mohli v konkrétnom prípade dohodnúť "na lepšom" - teda na tom, že majú a sú schopné používať nejaké rozšírenia voči tomu, čo požaduje NVT
• TELNET samozrejme musí definovať konkrétny spôsob, akým majú obe strany postupovať pri vzájomnej "licitácií" (anglicky: options negotiation)
Sedembitové znaky v osembitových bytoch
• pre kódovanie jednotlivých znakov používa protokol TELNET znakový kód ASCII
• znaky sedembitového kódu ASCII sú prenášané zásadne v ôsmich bitoch
• vďaka tomu je možné k nim "pridať" ešte i riadiace príkazy
• obe strany sa ale môžu dohodnúť na tom, že si budú predávať osembitové znaky
Zaistenie transparentnosti
• využíva sa riadiaci bit• pre kódovanie riadiacich príkazov sa tvorcom protokolu
TELNET ponúkalo všetkých 128 možných 8-bitových hodnôt
• najvyšší bit nastavený na jednotku• zaistenie potrebnej transparentnosti dát: pred samotný
riadiaci znak je zaradený špeciálny znak, ktorý zmení interpretáciu jedného, resp. niekoľko nasledujúcich znakov
• v prípade protokolu TELNET bol zvolený znak s číselných kódom 255 - označovaný ako IAC (Interpret As Command)
Príkazy protokolu TELNET
• reprezentovaná jedným riadiacim znakom, ku ktorému sa pridáva povinný prefix - znak IAC
• 3 skupiny príkazov:– príkazy pre editáciu (sú len dva: pre vymazanie
aktuálneho riadku a pre vymazanie predchádzajúceho znaku
– príkazy pre riadenie komunikácie medzi oboma stranami (napr. pre prerušenie aplikačného procesu na strane serveru, pre zastavenie jeho výstupu, pre vzájomnú synchronizáciu apod.)
– príkazy, umožňujúce obom stranám dohodnúť sa na použití konkrétnych rozšíreniach
Koniec
Top Related