32
Telnet a ssh Lukáš Apalovič Lukáš Tencer

Telnet and SSH

Embed Size (px)

DESCRIPTION

Presentation from my early school time on telnet and SSH. Basic overview of techniques and technical details. In cooperation with Lukas Apalovic. Presentation is in slovak

Citation preview

Page 1: Telnet and SSH

Telnet a ssh

Lukáš Apalovič

Lukáš Tencer

Page 2: Telnet and SSH

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

Page 3: Telnet and SSH

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é

Page 4: Telnet and SSH

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

Page 5: Telnet and SSH

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]

Page 6: Telnet and SSH

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

Page 7: Telnet and SSH

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ý

Page 8: Telnet and SSH

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)

Page 9: Telnet and SSH

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

Page 10: Telnet and SSH

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á

Page 11: Telnet and SSH

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.

Page 12: Telnet and SSH

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`")

Page 13: Telnet and SSH

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

Page 14: Telnet and SSH

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

Page 15: Telnet and SSH

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)

Page 16: Telnet and SSH

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]

Page 17: Telnet and SSH

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)

Page 18: Telnet and SSH

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

Page 19: Telnet and SSH

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

Page 20: Telnet and SSH

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)

Page 21: Telnet and SSH

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

Page 22: Telnet and SSH

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

Page 23: Telnet and SSH

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

Page 24: Telnet and SSH

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)

Page 25: Telnet and SSH

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

Page 26: Telnet and SSH

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

Page 27: Telnet and SSH

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

Page 28: Telnet and SSH

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)

Page 29: Telnet and SSH

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

Page 30: Telnet and SSH

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)

Page 31: Telnet and SSH

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

Page 32: Telnet and SSH

Koniec