telnet and ssh

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

Upload: lukas-tencer

Post on 26-Jun-2015

692 views

Category:

Technology


5 download

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

TRANSCRIPT

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