Differences

This shows you the differences between two versions of the page.

Link to this comparison view

gsr:laboratoare:laborator-03 [2015/10/29 20:06]
alexandru.carp
gsr:laboratoare:laborator-03 [2016/10/27 13:21] (current)
alexandru.carp
Line 1: Line 1:
-====== Laborator 03: Servicii web ======+~~SHOWSOLUTION~~ 
 + 
 +====== Laborator 03: Serviciile de DHCP si SSH ====== 
 + 
 +===== 01. Pregatirea infrastructurii virtuale (OpenStack) ===== 
 + 
 +Incepand cu acest laborator vom lucra si pe topologia virtuala OpenStack. Aceeasi topologie va fi folosita si la proiect. 
 +Acest task are ca scop crearea infrastructurii virtuale. 
 + 
 +<​note>​ 
 +Fiecare student va avea propriul subnet, din care va aloca adrese pentru masinile virtuale. Puteti gasi alocarea aici: 
 +https://​docs.google.com/​spreadsheets/​d/​14QgTyn41hzinWqHaUQ16kf9_UeUcwXNQ__MR5C6Q70U/​pubhtml 
 +</​note>​ 
 + 
 +<​note>​ 
 +Pentru crearea contului, a masinilor virtuale si a legaturilor dintre ele, urmati pasii de aici: 
 +http://​ocw.cs.pub.ro/​courses/​gsr/​resurse/​proiect 
 +</​note>​ 
 + 
 +===== 02. DHCP ===== 
 + 
 +==== a) Demo: Funcționarea dhclient ==== 
 + 
 +<​note>​ 
 +Executati acest demo pe masina fizica din laborator. 
 +</​note>​ 
 + 
 +Clientul de DHCP este reprezentat în Linux de comanda ''​dhclient''​. La o rulare a comenzii ''​dhclient''​ este interogat serverul DHCP pentru transmiterea unei adrese. 
 + 
 +Pentru a testa această funcționalitate,​ vom dezactiva configurația curentă și apoi vom face o nouă configurație. 
 + 
 +Pentru dezactivare identificăm interfața activă prin rularea comenzii<​code>​ 
 +ip a s 
 +</​code>​ 
 + 
 +Apoi dezactivăm configurația interfeței:<​code>​ 
 +sudo ip a f dev <​interface>​ 
 +</​code>​ 
 +unde ''<​interface>''​ este numele interfeței. 
 + 
 +Apoi solicităm o nouă adresă IP pentru interfață folosind comanda<​code>​ 
 +sudo dhclient <​interface>​ 
 +</​code>​ 
 +unde ''<​interface>''​ este numele interfeței. 
 + 
 +Putem urmări în ''/​var/​log/​syslog''​ mesajele afișate de clientul ''​DHCP''​. 
 + 
 +Dacă dorim să dăm release la configurație,​ putem folosi comanda<​code>​ 
 +sudo dhclient -r <​interace>​ 
 +</​code>​ 
 +unde ''<​interface>''​ este numele interfeței. 
 + 
 +==== b) Configurare server de DHCP ==== 
 + 
 +<​note>​ 
 +Acest task se va executa pe infrastructura virtuala. 
 +Masina ''​Sn-R''​ va are rol de server DHCP, iar masina ''​D''​ va avea rol de client DHCP. 
 +</​note>​ 
 + 
 +Instalati serverul ''​isc-dhcp-server''​ pe masina ''​Sn-R''​. 
 + 
 +Creati configurația serverului de DHCP în ''/​etc/​default/​isc-dhcp-server''​ și în ''/​etc/​dhcp/​dhcpd.conf''​. Verificați că serverul este pornit și ascultă conexiuni pe portul ''​68''​ UDP. 
 + 
 +Urmăriți în fișierele de tip jurnal de pe fiecare sistem (''/​var/​log/​syslog''​) mesaje afișate de clientul și serverul DHCP. 
 + 
 +Folosiți, pe client, comanda 
 +<​code>​ 
 +sudo dhclient eth0 
 +</​code>​ 
 +pentru reinterogarea serverului DHCP, care duce la conduce la generarea de noi mesaje de jurnalizare. 
 + 
 +===== 03. SSH ===== 
 + 
 +==== a) Conectare prin SSH între mașina virtuală ''​Sn-R''​ și ''​D''​ === 
 + 
 +Încercați să vă conectați prin SSH de pe mașina virtuală ''​Sn-R''​ pe masina virtuala ''​D''​ folosind o comandă de forma<​code>​ 
 +ssh student@192.168.N.X 
 +</​code>​ 
 + 
 +Acum încercați și invers, să vă conectați de pe mașina virtuală ''​D''​ pe masina virtuala ''​Sn-R''​ 
 + 
 +Apoi configurați autentificarea fără parolă (pe bază de chei) de la utilizatorul ''​student''​ de pe mașina virtuală ''​Sn-R''​ la utilizatorul ''​student''​ și la utilizatorul ''​root''​ de pe mașina virtuală ''​D''​. Va trebui să ajungă cheia publică a utilizatorului ''​student''​ de pe masina virtuala ''​Sn-R''​ în fișierul ''​~/​.ssh/​authorized_keys''​ din directorul home al utilizatorilor ''​student''​ și ''​root''​ pe mașina virtuală ''​D''​. 
 + 
 +<note tip> 
 +Dacă simțiți că "​scârțâiți",​ pentru documentare despre folosirea SSH recomandăm să urmariți [[:​rl:​labs:​08|laboratorul 8 de RL: Securizarea unui server]]. 
 +</​note>​ 
 + 
 +/* 
 +==== Adăugarea cheii asistentului pentru conectare la mașina virtuală ==== 
 + 
 +Obiectivul acestui exercițiu este ca asistentul să ajungă pe mașina voastră virtuală de pe laptop-ul său. Pentru aceasta trebuie să faceți două lucruri: 
 +  - Să adăugați cheia publică a asistentului (vă va da el link la cheie) în contul utilizatorului ''​student''​ de pe mașina virtuală. 
 +  - Să folosiți DNAT (//port forwarding//​) pe **sistemul fizic** astfel încât conexiunile pe portul ''​2222''​ pe sistemul fizic să ajungă pe portul ''​22''​ pe mașina virtuală. 
 + 
 +Pentru pasul 2, pe **sistemul fizic** folosiți o comandă de forma<​code>​ 
 +sudo iptables -t nat -A PREROUTING -i ethX -p tcp --dport 2222 -j DNAT --to-destination <​IP-vm>:​22 
 +sudo sysctl -w net.ipv4.ip_forward=1 
 +</​code>​ 
 +unde: 
 +  * ''​ethX''​ este ''​eth0''​ sau ''​eth1''​ sau ''​eth2''​ este interfața de Internet a sistemului fizic, cu o adresă din spațiul ''​172.16.4.0/​22''​ 
 +  * ''<​IP-vm>''​ este adresa IP a mașinii virtuale (adresa din rețeaua ''​192.168.56.0/​24''​ 
 + 
 +Iar pe **mașina virtuală** rulați comanda de mai jos pentru a crea o rută din mașina virtuală către rețeaua fizică<​code>​ 
 +sudo ip route add 172.16.4.0/​22 via 192.168.56.1 
 +</​code>​ 
 +Cu această rută veți permite pachetelor să se întoarcă din mașina virtuală către cheia SSH a asistentului. 
 + 
 +Asistentul va încerca conexiunea la adresa IP a sistemului vostru fizic pe portul ''​2222''​ și, dacă e totul bine, va ajunge pe mașina voastră virtuală. 
 + 
 +<note tip> 
 +Dacă simțiți că scârțâiți legat de NAT/DNAR, informații despre folosirea ''​iptables''​ pentru DNAT găsiți în [[:​rl:​labs:​09|laboratorul 9 de RL: Translatarea de adrese]]. 
 +</​note>​ 
 + 
 +<note tip> 
 +Dacă greșiți ceva în configurarea iptables, curățați regulile folosind comanda<​code>​ 
 +sudo iptables -t nat -F 
 +</​code>​ 
 +</​note>​ 
 +*/ 
 + 
 +====  b) Configurare remote logging pentru SSH ==== 
 + 
 +Configurați daemon-ul syslog de pe mașina virtuală ''​D''​ să livreze mesajele de jurnalizare emise de SSH (de facilitatea ''​auth''​) către daemonul de syslog de pe masina virtuala ''​Sn-R''​. Adică daemonul de syslog de pe masina virtuala ''​Sn-R''​ va fi listener pentru mesajele livrate de pe mașina virtuală ''​D''​. 
 + 
 +Realizați conexiuni SSH de pe mașina virtuala ''​Sn-R''​ spre mașina virtuală ''​D''​ pentru a declanșa mesaje de jurnalizare. 
 + 
 +/* 
 +==== Bonus: Conectare cu X Forwarding ==== 
 + 
 +Realizați o conexiune SSH care folosește X Forwarding **de la sistemul fizic** la mașina virtuală. Porniți utilitarul ''​xterm''​. Instalați orice pachete sunt necesare pentru a permite rularea utilitarului ''​xterm''​. 
 +*/ 
 + 
 +==== Bonus: Pornirea manuală a sshd === 
 + 
 +Porniți serviciul SSH manual, pe mașina virtuală ''​D'',​ folosind executabilul ''/​usr/​sbin/​sshd''​ astfel incat să asculte conexiuni pe portul ''​22''​. Încercați conexiuni către masina virtuala ''​D''​ de pe masina virtuala ''​Sn-R''​. 
 + 
 +Rulați serverul de SSH sub ''​strace''​ (eventual folosind opțiunea ''​-f''​) și urmăriți ce se întâmplă atunci când se încearcă noi conexiuni. 
 +/*
  
 ===== Demo ===== ===== Demo =====
Line 132: Line 269:
  
  
-/* 
  
 ~~SHOWSOLUTION~~ ~~SHOWSOLUTION~~
gsr/laboratoare/laborator-03.1446141992.txt.gz · Last modified: 2015/10/29 20:06 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0