Differences

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

Link to this comparison view

gsr:laboratoare:laborator-11 [2016/01/14 16:53]
razvan.deaconescu [Configurare conexiune VNC]
gsr:laboratoare:laborator-11 [2017/01/19 14:19] (current)
alexandru.carp [Rețea OpenVPN]
Line 1: Line 1:
-====== Laborator 11: Servicii de acces la distanță =====+====== Laborator 11: Acces la distanță =====
  
 ===== Completare formular de feedback ===== ===== Completare formular de feedback =====
  
-Pentru a îmbunătăți cursul de GSR, componentele sale și modul de desfășurare,​ ne sunt foarte utile opiniile voastre. Pentru aceasta, vă rugăm, să accesați și completați [[http://​cs.curs.pub.ro/​2015/blocks/simplehtml/​view.php?​courseid=166&​blockid=1468|formularul de feedback de pe site-ul cs.curs.pub.ro]]. Trebuie să fiți autentificați și înrolați în cadrul cursului.+Pentru a îmbunătăți cursul de GSR, componentele sale și modul de desfășurare,​ ne sunt foarte utile opiniile voastre. Pentru aceasta, vă rugăm, să accesați și completați [[http://​cs.curs.pub.ro/​2016/blocks/feedbackacs/​view.php?​courseid=197&​blockid=3269|formularul de feedback de pe site-ul cs.curs.pub.ro]]. Trebuie să fiți autentificați și înrolați în cadrul cursului.
  
-Formularul este anonim și este activ în perioada 4-20 ianuarie ​2016. Rezultatele vor fi vizibile în cadrul echipei cursului doar după încheierea sesiunii. Găsiți [[http://​cs.curs.pub.ro/​2015/blocks/simplehtml/​view.php?​courseid=166&​blockid=1468|formularul]] în partea dreaptă a paginii principale de GSR de pe cs.curs.pub.ro într-un frame intitulat %%"​FEEDBACK"​%%.+Formularul este anonim și este activ pana pe 20 ianuarie ​2017. Rezultatele vor fi vizibile în cadrul echipei cursului doar după încheierea sesiunii. Găsiți [[http://​cs.curs.pub.ro/​2016/blocks/feedbackacs/​view.php?​courseid=197&​blockid=3269|formularul]] în partea dreaptă a paginii principale de GSR de pe cs.curs.pub.ro într-un frame intitulat %%"​FEEDBACK"​%%.
  
 Vă invităm să evaluați activitatea echipei de GSR și să precizați punctele tari și punctele slabe și sugestiile voastre de îmbunătățire a disciplinei. Feedback-ul vostru este foarte important pentru noi să creștem calitatea materiei în anii următori și să îmbunătățim disciplinele pe care le veți face în continuare. Vă invităm să evaluați activitatea echipei de GSR și să precizați punctele tari și punctele slabe și sugestiile voastre de îmbunătățire a disciplinei. Feedback-ul vostru este foarte important pentru noi să creștem calitatea materiei în anii următori și să îmbunătățim disciplinele pe care le veți face în continuare.
Line 15: Line 15:
  
 Vă mulțumim! Vă mulțumim!
 +
 ===== Conectare prin SSH ===== ===== Conectare prin SSH =====
  
-Porniți o mașină virtuală VirtualBox din cadrul sistemului și realizați o conexiune SSH în ambele sensuri (de la mașină virtuală la sistemul fizic și invers) ​folosind autentificare cu chei publice. Folosiți pentru conectare utilizatorul ''​student''​ de pe fiecare stație. +Realizați o conexiune SSH de pe statia fizica pe ''​fep.grid.pub.ro'', ​folosind autentificare cu chei publice. Folosiți pentru conectare
- +  * utilizatorul ''​student''​ de pe statia fizica 
-<​note>​ +  * utilizatorul vostru de pe ''​fep.grid.pub.ro''​
-Importați în VirtualBox mașina virtuala ​''​GSR Debian.ova''​ din directorul ''/​mnt/​sda5/​gsr/''​. +
-</​note>​ +
- +
-<note tip> +
-Există o problemă cu serverul SSH de pe mașina virtuală ​''​GSR Debian''​ pe care trebuie să o rezolvați. +
-</​note>​+
  
 <note tip> <note tip>
Line 32: Line 27:
  
 <note tip> <note tip>
-Folosiți adresa IP a interfeței ''​vboxnext0''​ pentru sistemul host și interfața echivalentă din mașina virtuală. +Daca pe masina fizica ​nu aveți creată o pereche de cheie publică/​cheie privată, folosiți comanda 
-</​note>​ +<​code>​
- +
-<note tip> +
-Pe mașina virtuală ​nu aveți creată o pereche de cheie publică/​cheie privată. Folosiți comanda<​code>​+
 ssh-keygen ssh-keygen
 </​code>​ </​code>​
Line 43: Line 35:
 ===== X Forward prin SSH ===== ===== X Forward prin SSH =====
  
-Realizați configurația în așa fel încât **de pe sistemul fizic** să vă conectați ​de pe sistemul fizic **pe mașina virtuală** ​și să porniți acolo o aplicație grafică, precum ''​xeyes''​ sau ''​xterm''​ folosind X forwarding prin SSH.+Realizați configurația în așa fel încât **de pe sistemul fizic** să vă conectați pe ''​fep.grid.pub.ro'' ​și să porniți acolo o aplicație grafică, precum ''​xeyes''​ sau ''​xterm''​ folosind X forwarding prin SSH.
  
-Realizați această conexiune între două stații din laborator (cel mai bine împreună cu un coleg).+Apoi, realizați această conexiune ​si între două stații din laborator (cel mai bine împreună cu un coleg).
 ===== Tunel SSH ===== ===== Tunel SSH =====
  
-De pe mașina virtuală ​conectați-vă pe fep prin SSH și deschideți un tunel invers către ''​fep.cs.pub.ro''​ în așa fel încât să vă puteți conecta de pe sistemul unui coleg către mașina virtuală.+De pe o masina virtuala din OpenStack, ​conectați-vă pe fep prin SSH și deschideți un tunel invers către ''​fep.cs.pub.ro''​ în așa fel încât să vă puteți conecta de pe sistemul unui coleg către mașina virtuală.
  
 Va trebui ca fiecare dintre cei doi participanți la comunicație să deschidă un port distinct remote (pe ''​fep.grid.pub.ro''​). Va trebui ca fiecare dintre cei doi participanți la comunicație să deschidă un port distinct remote (pe ''​fep.grid.pub.ro''​).
Line 71: Line 63:
  
 <note tip> <note tip>
-If you plan on using [[https://​wiki.gnome.org/​action/​show/​Projects/​Vino|Vino]], ​locate the server ​executable file using<​code>​ +Dacă planificați să folosiți ​[[https://​wiki.gnome.org/​action/​show/​Projects/​Vino|Vino]], ​localizați fișierul executabil al server-ului folosind comanda<​code>​ 
-locate vino+locate vino-server 
 +</​code>​ 
 + 
 +Dacă folosiți ''​vino''​ atunci activați remote access folosind comanda<​code>​ 
 +sudo dconf write /​org/​gnome/​desktop/​remote-acccess/​enabled true
 </​code>​ </​code>​
 </​note>​ </​note>​
  
 <note tip> <note tip>
-As a client you may use [[http://​www.remmina.org/​wp/​|Remmina]]. You install it using<​code>​ +Folosiți<​code>​ 
-sudo apt-get install remmina+netstat ​-tlpn
 </​code>​ </​code>​
 +pentru a vă asigura că serverul e pornit și ascultă pe portul aferent (în general ''​5900''​).
 </​note>​ </​note>​
-===== VPN ===== 
  
-Pentru exercițiile de mai jos vom folosi ​o topologie și vom configura OpenVPN și IPsec. +<note tip> 
- +Pe post de client putețfolosi ​[[http://​www.remmina.org/wp/|Remmina]]. Îl puteținstala folosind comanda<​code>​ 
-==== Topologie ==== +sudo apt-get install remmina 
- +</code>
-{{ {{ :gsr:​laboratoare:​topologie-vpn.jpg Topologie VPN}} +
- +
-Topologia este formata din 2 routere Cisco emulate in Dynamips ș3 mașini virtuale KVM.  +
- +
-=== Scenariu === +
- +
-Topologia infatiseaza reteaua unei companii, compusa din: +
-  * un sediu central (Headquarters),​ ce contine: +
-    * router-ul de acces (HQ) o masina Linux; +
-    * un host din reteaua HQ (HQ Host) - o masina Linux; +
-  * un sediu regional (Branch), ce contine: +
-    * router-ul de acces (Branch) - un router Cisco; +
-    * un host din reteaua Branch (Branch Host) - o masina Linux; +
-Sediul central si sediul regional sunt conectate prin intermediul unui service provider. Acesta detine router-ul ISP (router Cisco). +
- +
-<note> +
-Host-urile "HQ Host" si "​Branch Host" sunt "in spatele"​ unor NAT-uri.+
 </​note>​ </​note>​
  
-<​note>​ +<​note ​tip
-Adresarea, rutarea si NAT-ul **sunt deja** configurate pe router-ele ISP si Branch. +Folosiți comanda ''​vino-preferences''​ (este posibil să fie nevoie să o localizați) pentru a configura serverul VNC.
- +
-Router-ul ISP are acces la Internet.+
 </​note>​ </​note>​
  
-=== Pornirea topologiei ​==+===== Rețea OpenVPN =====
- +
-<note warning>​ +
-Toate comenzile sau scripturile din acest laborator trebuie rulate ca **superuser (root)**. +
-</​note>​ +
- +
-Pentru a porni topologia:​ +
-  * Deschideti un terminal in care va logati ca **root**; +
-  * Descarcati arhiva de laborator de la adresa http://​swarm.cs.pub.ro/​~carpalex/​saisp/​saisp-lab06.tar<​code>​ +
-wget http://​swarm.cs.pub.ro/​~carpalex/​saisp/​saisp-lab06.tar +
-</​code>​ +
-  * Dezarhivati arhiva:<​code>​ +
-tar -xvf saisp-lab06.tar +
-</​code>​ +
-  * Executati script-ul "​prepare.sh":<​code>​ +
-chmod +x prepare.sh +
-./​prepare.sh +
-</​code>​ +
-  * Cand sunteti intrebati daca sa importati configuratiile,​ raspundeti **Y**. +
-  * Apoi, din consola Dynagen, tastati **console /all** pentru a deschide consolele pentru routerele ISP si Branch. +
-  * Masinile virtuale vor fi pornite automat. +
-===== Configurare VPN folosind OpenVPN ===== +
- +
-In final, vom configura si folosi o solutie de SSL VPN (OpenVPN):​ +
-  * **HQ Router** va fi **server OpenVPN**;​ +
-  * Statiile din retelele private (**HQ Host** si **BR Host**) pot fi **cliențOpenVPN**. +
- +
-Vom configura **doar BR Host** ca client VPN. +
- +
-=== Instalare OpenVPN ​==+
- +
-Instalați, pe cele 2 mașini (**HQ Router**, și **BR Host**) pachetul **openvpn**:​ +
-<​code>​ +
-# apt-get update +
-# apt-get install openvpn +
-</​code>​ +
- +
-=== Generare chei === +
- +
-Cheile vor fi generate pe server (**HQ Router**). +
- +
-Pentru generarea cheilor, ne vom folosi de scripturile **easy-rsa 2.0** aflate în directorul ''/​usr/​share/​doc/​openvpn/​examples/​easy-rsa/​2.0''​. Copiați scripturile în directorul ''/​etc/​openvpn''​ pentru a vă fi mai ușor.<​code>​ +
-saisp-vm-1# cp /​usr/​share/​doc/​openvpn/​examples/​easy-rsa/​2.0/​* /​etc/​openvpn/​ +
-</​code>​ +
- +
-În continuare vom lucra în directorul **/​etc/​openvpn**:​ +
-<​code>​ +
-saisp-vm-1# cd /​etc/​openvpn +
-</​code>​ +
- +
-Editati fișierul **vars** pentru a configura variabilele de mediu.  +
-<​code>​ +
-export KEY_SIZE=1024 +
- +
-export KEY_COUNTRY="​RO"​ +
-export KEY_PROVINCE="​B"​ +
-export KEY_CITY="​Bucharest"​ +
-export KEY_ORG="​CS"​ +
-export KEY_EMAIL="​saisp@cs.pub.ro"​ +
-</​code>​ +
- +
-Setați variabilele de mediu configurate folosind **source vars**: +
-<​code>​ +
-saisp-vm-1# source vars +
-saisp-vm-1# ./​clean-all +
-</​code>​ +
- +
-Generăm certificatul pentru CA folosind **build-ca**. Răspundeți la întrebări cu răspunsurile default. +
-<​code>​ +
-./​build-ca +
-</​code>​ +
- +
-Cheia pentru Diffie Hellman se generează cu **buid-dh**:​ +
-<​code>​ +
-./​build-dh +
-</​code>​ +
- +
-Pentru server generăm cheia folosind **build-key-server**,​ iar pentru fiecare client, generăm o cheie folosind **build-key**. Răspundeți la întrebări cu răspunsurile default. +
-**Atentie!** Cand sunteti intrebati daca doriti sa semnati certificatele,​ raspundeti cu **Y**. +
- +
-<​code>​ +
-./​build-key-server server +
-./build-key client1 +
-</​code>​ +
- +
-Examinați conținutul directorului **keys** pentru a vedea fișierele create. +
- +
-=== Configurare server și client === +
- +
-Pe server (**HQ Router - saisp-vm-1**),​ creați fișierul **/​etc/​openvpn/​server.conf** cu următorul conținut:​ +
-<​code>​ +
-port 1194 +
-proto tcp +
-dev tap +
-client-to-client +
-server 172.16.123.0 255.255.255.0 +
-push "​redirect-gateway"​ +
-push "​dhcp-option DNS 141.85.37.1"​ +
-ca keys/​ca.crt +
-cert keys/​server.crt +
-key keys/​server.key +
-dh keys/​dh1024.pem +
-client-to-client +
-cipher AES-128-CBC +
-max-clients 10 +
-user nobody +
-group nogroup +
-persist-key +
-persist-tun +
-chroot /​etc/​openvpn +
-log server.log +
-comp-lzo +
-</​code>​ +
- +
-Pe **BR Host (saisp-vm-3)** creați fisierul **/​etc/​openvpn/​client1.conf** cu următorul conținut:​ +
-<​code>​ +
-client +
-tls-client +
-dev tap +
-proto tcp +
-remote 28.28.28.2 1194 +
-persist-key +
-persist-tun +
-ca keys/​ca.crt +
-cert keys/​client1.crt +
-key keys/​client1.key +
-cipher AES-128-CBC +
-comp-lzo +
-log client1.log +
-</​code>​ +
- +
-Va trebui să copiați pe client fișierele cu **certificatele** si cu **cheile**. Vom folosi **scp**. +
-* Pe **BR Host (saisp-vm-3)**:​ +
-<​code>​ +
-saisp-vm-3# scp -r root@28.28.28.2:/​etc/​openvpn/​keys/​ /​etc/​openvpn/​ +
-</​code>​ +
- +
-Porniți OpenVPN pe toate stațiile configurate folosind +
-<​code>​ +
-# /​etc/​init.d/​openvpn start +
-</​code>​ +
-Observați interfața **tap0** creată pe **server** si pe **client**.  +
- +
-Încercați să generati trafic intre client si server: +
-<​code>​ +
-saisp-vm-3# ping 172.16.123.1 +
-</​code>​ +
- +
-Rulați **ip route show** și observați ruta implicită. Pe unde va circula tot traficul? Care linie din configurația VPN-ului forțează acest lucru? +
- +
-=== Clean up === +
- +
-Închideți serviciul de OpenVPN pe cele trei stații: +
-<​code>​ +
-# /​etc/​init.d/​openvpn stop +
-</​code>​ +
- +
-===== Configurare VPN folosind IPsec ===== +
- +
-In cele ce urmeaza, vom configura un tunel **IPsec** intre **HQ Router** si **BR Router**. +
-Deoarece IPsec este un framework de securitate standard, putem sa realizam interoperarea intre echipamente diferite: +
-  * pe **HQ Router** (Linux) vom folosi **OpenSWAN**;​ +
-  * pe **BR Router** (Cisco) vom folosi o imagine de **Cisco IOS** ce suporta IPsec. +
- +
-=== Instalare === +
- +
-Instalați pe **HQ Router (saisp-vm-1)**,​ folosind **apt-get**,​ pachetul **openswan**:<​code>​ +
-saisp-vm-1# apt-get install openswan +
-</​code>​ +
- +
-La intrebarea "Use an X.509 certificate for this host?",​ răspundeți **No**. +
- +
-=== Configurare Cisco === +
- +
-Mai intai, vom crea un **ACL** ce defineste traficul ce trebuie protejat:<​code>​ +
-Branch(config)#​ip access-list extended IPSEC_ACL +
-Branch(config-ext-nacl)#​permit ip 42.42.42.0 0.0.0.255 28.28.28.0 0.0.0.255 +
-</​code>​ +
- +
-Apoi, cream o politica **ISAKMP** ce defineste parametrii pentru **faza 1** (de negociere) a IPsec:<​code>​ +
-Branch(config)#​crypto isakmp policy 10  +
-Branch(config-isakmp)#​authentication pre-share  +
-Branch(config-isakmp)#​encryption 3des  +
-Branch(config-isakmp)#​hash md5  +
-Branch(config-isakmp)#​group 2 +
-</​code>​ +
- +
-Apoi, cream **cheia** partajata si o asociem "​interlocutorului":<​code>​ +
-Branch(config)#​crypto isakmp key 0 saisp address 28.28.28.2 no-xauth +
-</​code>​ +
- +
-Cream un **transform set** ce defineste parametrii pentru **faza 2** (de comunicatie efectiva) a IPsec:<​code>​ +
-Branch(config)#​crypto ipsec transform-set IPSEC_TS esp-3des esp-md5-hmac  +
-Branch(cfg-crypto-trans)#​mode tunnel +
-</​code>​ +
- +
-Cream un **crypto map**, ce reuneste la un loc toate configuratiile anterioare:<​code>​ +
-Branch(config)#​crypto map IPSEC_MAP 10 ipsec-isakmp  +
-Branch(config-crypto-map)#​ match address IPSEC_ACL ​                +
-Branch(config-crypto-map)#​ set peer 28.28.28.2 +
-Branch(config-crypto-map)#​ set transform-set IPSEC_TS ​              +
-</​code>​ +
- +
-In final, aplicat crypto-map-ul pe interfata:<​code>​ +
-Branch(config)#​int f0/0 +
-Branch(config-if)#​crypto map IPSEC_MAP +
-</​code>​ +
- +
-=== Configuratie OpenSWAN === +
- +
-In fișierul **/​etc/​ipsec.conf**,​ editati liniile:<​code>​ +
-nat_traversal=no +
-protostack=netkey +
-</​code>​ +
- +
-Apoi, in acelasi fisier, definiti parametrii pentru tunelul IPsec:<​code>​ +
-conn ipsec-tun +
-    authby=secret +
-    left=28.28.28.2 +
-    leftnexthop=28.28.28.1 +
-    leftsubnet=28.28.28.0/​24 +
-    right=42.42.42.2 +
-    rightnexthop=42.42.42.1 +
-    rightsubnet=42.42.42.0/​24 +
-    ike=3des-md5;​modp1024 +
-    keyexchange=ike +
-    pfs=no +
-    auto=start +
-</​code>​ +
- +
-Observati ca parametrii corespund configurarilor facute in IOS. +
- +
-Apoi, in fisierul **/​etc/​ipsec.secrets** definiti cheia partajata, adaugand urmatoarea linie:<​code>​ +
-28.28.28.2 42.42.42.2: PSK "​saisp"​ +
-</​code>​ +
- +
-Porniți conexiunea resetând serviciul:<​code>​ +
-saisp-vm-1# /​etc/​init.d/​ipsec restart +
-</​code>​ +
- +
-Testati conectivitatea,​ executand un **ping** de pe **BR Router** catre **HQ Router**:<​code>​ +
-Branch# ping 28.28.28.2 +
-</​code>​ +
- +
-Observati cum arata pachetele in Wireshark (capturati pe **tap11**). +
- +
-Pe **BR Router**, afisati informatii despre functionarea IPsec:<​code>​ +
-Branch# show crypto isakmp sa +
-Branch# show crypto ipsec sa +
-Branch# show crypto session +
-</​code>​ +
- +
-Procedati la fel pe **HQ Router**:<​code>​ +
-saisp-vm-1# ip xfrm state show +
-</​code>​ +
- +
-=== Clean up === +
- +
-<note warning>​ +
-Pentru acest laborator, acest pas este foarte important. Daca nu stergeti tunelele create, urmatoarele task-uri **nu vor functiona!** +
-<​note>​ +
- +
-Pe **HQ Router** închideți serviciul OpenSWAN:<​code>​ +
-saisp-vm-1# /​etc/​init.d/​ipsec stop +
-</​code>​ +
- +
-Pe **BR Router** scoateti crypto-map-ul de pe interfata:<​code>​ +
-Branch(config)#​int f0/0 +
-Branch(config-if)#​no crypto map +
-</​code>​+
  
-===== BONUS: Rețea OpenVPN ​=====+În echipe de câte trei persoane, creați o infrastructură VPN în care să comunicați între două statii care rulează un client OpenVPN prin intermediul celei de-a treia stații care rulează un server ​OpenVPN.
  
-În echipe de câte trei persoane, creați o infrastructură VPN în care să comunicați între două mașini virtuale VirtualBox care se găsesc pe două dintre cele trei stații și care rulează un client OpenVPN prin intermediul celeil ​de-a treia stații care rulează un server ​OpenVPN.+Urmăriți indicațiile de [[https://​www.digitalocean.com/​community/​tutorials/​how-to-set-up-an-openvpn-server-on-ubuntu-14-04|aici]] pentru configurare.
  
 /* /*
gsr/laboratoare/laborator-11.1452783223.txt.gz · Last modified: 2016/01/14 16:53 by razvan.deaconescu
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