Telnet and SSH

827 views
765 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
827
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Telnet and SSH

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

×