This shows you the differences between two versions of the page.
gsr:laboratoare:laborator-03 [2016/10/26 16:03] alexandru.carp |
gsr:laboratoare:laborator-03 [2016/10/27 13:21] (current) alexandru.carp |
||
---|---|---|---|
Line 3: | Line 3: | ||
====== Laborator 03: Serviciile de DHCP si SSH ====== | ====== Laborator 03: Serviciile de DHCP si SSH ====== | ||
- | ===== Demo: Funcționarea dhclient ===== | + | ===== 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. | Clientul de DHCP este reprezentat în Linux de comanda ''dhclient''. La o rulare a comenzii ''dhclient'' este interogat serverul DHCP pentru transmiterea unei adrese. | ||
Line 12: | Line 33: | ||
ip a s | ip a s | ||
</code> | </code> | ||
- | Interfața activă este cea care are adresa IP din rețeaua ''172.16.4.0/24''. | ||
Apoi dezactivăm configurația interfeței:<code> | Apoi dezactivăm configurația interfeței:<code> | ||
Line 31: | Line 51: | ||
unde ''<interface>'' este numele interfeței. | unde ''<interface>'' este numele interfeței. | ||
- | ===== Verificare configurare server de DHCP ===== | + | ==== b) Configurare server de DHCP ==== |
<note> | <note> | ||
- | Dacă ați deschis mașina virtuală ''GSR Debian'', închideți-o și ștergeți-o (împreună cu fișierele aferente) din VirtualBox. Din ''/mnt/sda5/gsr/'' în VirtualBox deschideți aplicația ''DHCP-Appliance.ova''. Aplicația are două mașini virtuale. | + | 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. | |
- | Întâi porniți mașina virtuală ''GSR Debian'' care este serverul de DHCP și după ce a bootat, porniți mașina virtuală ''GSR Debian 2'' care este clientul de DHCP. | + | |
</note> | </note> | ||
- | Urmăriți adresele IP pe interfața ''eth2'' a fiecărei mașini virtuale. Urmăriți în fișierul ''/etc/network/interface'' configurația pentru interfața ''eth2'' a fiecărei mașini virtuale. | + | Instalati serverul ''isc-dhcp-server'' pe masina ''Sn-R''. |
- | Urmăriți 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. | + | 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. | 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, comenzile<code> | + | Folosiți, pe client, comanda |
- | sudo ifdown eth2 | + | <code> |
- | sudo ifup eth2 | + | sudo dhclient eth0 |
</code> | </code> | ||
- | pentru dezactivarea și reactivarea interfeței și, deci pentru reinterogarea serverului DHCP, care duce la conduce la generarea de noi mesaje de jurnalizare. | + | pentru reinterogarea serverului DHCP, care duce la conduce la generarea de noi mesaje de jurnalizare. |
- | ===== Configurare server de DHCP ===== | + | ===== 03. SSH ===== |
- | Modificați configurația serverului ''DHCP'' astfel încât acesta să furnizeze adrese în subnet-ul ''1.1.1.0/24'', în range-ul ''1.1.1.2-1.1.1.50''. Adresa IP a serverului DHCP pe interfața ''eth2'' trebuie să fie ''1.1.1.1''. | + | ==== 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> | <note tip> | ||
- | Va trebui ca pe serverul DHCP să modificați și configurația interfeței ''eth2'' în fișierul ''/etc/network/interfaces''. | + | 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> | ||
- | Pentru aceasta, dezactivați interfața:<code> | + | /* |
- | sudo ip link set dev eth2 down | + | ==== Adăugarea cheii asistentului pentru conectare la mașina virtuală ==== |
- | sudo ip add flush dev eth2 | + | |
+ | 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> | </code> | ||
- | faceți modificarea în fișierul ''/etc/network/interfaces'' și apoi refaceți configurația<code> | + | unde: |
- | sudo ifup eth2 | + | * ''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> | </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> | ||
+ | <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. | ||
/* | /* | ||