Differences

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

Link to this comparison view

gsr:laboratoare:laborator-09 [2015/12/16 17:42]
razvan.deaconescu
gsr:laboratoare:laborator-09 [2016/12/22 17:13] (current)
alexandru.carp [Configurarea HTTPS pentru un server web]
Line 1: Line 1:
-====== Laborator 09: Securitatea serviciilor de rețea ​======+====== Laborator 09: Securitate: SSL și TLS ======
  
 +===== Comunicare client/​server necriptata =====
 +O modalitate foarte simpla de a crea o sesiune client server este folosirea utilitarului ''​nc''​(netcat).
 +
 +Intr-o consola, porniti ''​nc'',​ cu rol de server, sa asculte pe portul ''​12345'':​
 +<​code>​
 +$ nc -l 12345
 +</​code>​
 +
 +Apoi, dintr-o alta consola, folositi ''​nc''​ cu rol de client, pentru a va conecta local pe portul ''​12345'':​
 +<​code>​
 +$ nc localhost 12345
 +</​code>​
 +
 +Observati ca textul introdus in client apare pe server, si invers.
 +
 +Porniti ''​wireshark''​ sau ''​tcpdump''​ si observati conversatia TCP pe portul ''​12345''​. Observati ca datele sunt transmise in clar, necriptate.
 +
 +Opriti apoi cele doua procese ''​nc''​.
 +
 +===== Comunicare client/​server peste SSL/TLS =====
 +Pentru a crea o sesiune client/​server,​ dar de data aceasta criptata, putem folosi utilitarul ''​openssl'':​
 +  * ''​openssl s_server''​ va avea rol de server
 +  * ''​openssl s_client''​ va avea rol de client
 +
 +Incercati sa porniti ''​openssl s_server''​ pe portul 12345:
 +<​code>​-
 +$ sudo openssl s_server -accept 12345
 +Error opening server certificate private key file server.pem
 +140455789008536:​error:​02001002:​system library:​fopen:​No such file or directory:​bss_file.c:​398:​fopen('​server.pem','​r'​)
 +140455789008536:​error:​20074002:​BIO routines:​FILE_CTRL:​system lib:​bss_file.c:​400:​
 +unable to load server certificate private key file
 +</​code>​
 +
 +Observati ca ''​openssl s_server''​ nu poate porni, deoarece are nevoie de un certificat de server si de o cheie privata.
 +Descarcati:
 +  * certificatul ''​server.ixlabs.crt''​ de [[http://​swarm.cs.pub.ro/​~carpalex/​gsr/​ssl/​server.ixlabs.crt|aici]]
 +  * cheia privata ''​server.ixlabs.key''​ de [[http://​swarm.cs.pub.ro/​~carpalex/​gsr/​ssl/​server.ixlabs.key|aici]]
 +
 +Apoi, porniti din nou ''​openssl s_server'',​ specificand parametrii ''​-cert''​ si ''​-key'':​
 +<​code>​
 +$ openssl s_server -cert server.ixlabs.crt -key server.ixlabs.key -accept 12345
 +Using default temp DH parameters
 +ACCEPT
 +</​code>​
 +
 +Observati ca serverul a pornit cu succes si asteapta conexiuni.
 +
 +Dintr-o alta console, folositi ''​openssl s_client''​ pentru a va conecta local pe portul ''​12345'':​
 +<​code>​
 +$ openssl s_client -connect localhost:​12345
 +CONNECTED(00000003)
 +depth=0 C = RO, ST = Some-State, O = Ixia, OU = Development,​ CN = server
 +verify error:​num=20:​unable to get local issuer certificate
 +verify return:1
 +depth=0 C = RO, ST = Some-State, O = Ixia, OU = Development,​ CN = server
 +verify error:​num=21:​unable to verify the first certificate
 +verify return:1
 +[...]
 +</​code>​
 +
 +Observati ca:
 +  * sesiunea se stabileste
 +  * clientul primeste certificatul serverului
 +  * clientul **NU poate valida** certificatul serverului
 +
 +Pentru a putea valida certificatul serverului, avem nevoie de certificatul CA-ului care l-a semnat.
 +Descarcati certificatul CA-ului ''​ca.crt''​ de [[http://​swarm.cs.pub.ro/​~carpalex/​gsr/​ssl/​ca.crt|aici]]
 +
 +Apoi, lansati din nou ''​openssl s_client'',​ dar cu parametru ''​-CAfile'':​
 +<​code>​
 +$ openssl s_client ​ -CAfile ca.crt -connect localhost:​12345
 +CONNECTED(00000003)
 +depth=1 C = RO, O = Ixia, OU = Development,​ CN = Ixia-CA
 +verify return:1
 +depth=0 C = RO, ST = Some-State, O = Ixia, OU = Development,​ CN = server
 +verify return:1
 +---
 +Certificate chain
 + 0 s:/​C=RO/​ST=Some-State/​O=Ixia/​OU=Development/​CN=server
 +   ​i:/​C=RO/​O=Ixia/​OU=Development/​CN=Ixia-CA
 +---
 +[...]
 +    Verify return code: 0 (ok)
 +</​code>​
 +
 +Observati ca de data aceasta certificatul este validat.
 +
 +Similar cu ''​nc'',​ textul introdus in client apare pe server, si invers.
 +
 +Porniti wireshark sau tcpdump si observati conversatia TCP pe portul 12345. Observati ca datele sunt criptate in cadrul unei sesiuni SSL.
 +
 +===== Configurarea HTTPS pentru un server web =====
 +
 +Folositi certificatul ''​server.ixlabs''​ pentru a realiza o configurare a unui virtual host pe serverul Apache local (instalați-l dacă nu este instalat) cu suport HTTPS.
 +
 +Pașii pe care trebuie să îi urmați sunt:
 +  * Crearea unui fișier de configurare pentru hostname-ul ''​server.ixlabs''​
 +  * Crearea unui fișier de configurare pentru hostname-ul ''​server.ixlabs''​ cu suport HTTPS.
 +  * Activarea acestora folosind comanda ''​a2ensite''​.
 +  * Activarea suport-ului de TLS folosind comanda<​code>​
 +a2enmod ssl
 +</​code>​
 +  * Copierea certificatului în directorul ''/​etc/​ssl/​certs/''​ și a cheii private în ''/​etc/​ssl/​private/''​.
 +  * Configurarea suportului de TLS în configurarea ''​server.ixlabs''​ cu suport HTTPS. Vedeți liniile de configurare de [[https://​httpd.apache.org/​docs/​2.4/​ssl/​ssl_howto.html#​configexample|aici]].
 +  * Adăugarea unei intrări în ''/​etc/​hosts''​ pentru numele ''​server''​ cu adresa locală (poate chiar adresa de loopback) ca să aveți rezolvat numele de domeniu.
 +<​note>​
 +**Nota:** Trebuie facuta maparea cu ''​server''​ si nu cu ''​server.ixlabs''​ pentru ca browserul se asteapta ca domeniul din URL sa faca match cu CN-ul din certificat, iar acesta este ''​server''​.
 +</​note>​
 +  * Repornirea serverului web.
 +  * Încărcați în browser-ul certificatul CA-ului.
 +  * Conectarea la serverul web folosind un URL de forma ''​%%https://​server%%''​ pentru a valida configurarea corectă a serviciului.
 +
 +===== Configurarea IMAPS pentru un server de IMAP =====
 +
 +Pe sistemul local instalați pachetul Courier IMAP<​code>​
 +sudo apt-get install courier-imap courier-imap-ssl
 +</​code>​
 +
 +Configurați pentru IMAPS certificatul ''​server.ixlabs''​ și apoi folosiți un client de e-mail pentru vă conecta la server prin IMAPS.
 +
 +Folosiți și ''​openssl s_client''​ pentru a verifica folosirea corespunzătoare a certificatului pe server.
 +
 +<note tip>
 +Puteți urmări indicațiile de [[http://​www.cyberciti.biz/​tips/​ssl-certificate-installation-courier-imap-server.html|aici]].
 +</​note>​
 +
 +
 +/*
 Laboratorul de securitatea serviciilor de rețea va avea formatul unui seminar. În acest seminar vom discuta despre subiecte de securitate și cum pot fi acestea abordate. Laboratorul de securitatea serviciilor de rețea va avea formatul unui seminar. În acest seminar vom discuta despre subiecte de securitate și cum pot fi acestea abordate.
  
Line 19: Line 147:
   * Cum ar putea fi prevenit un atac de acest gen pe viitor?   * Cum ar putea fi prevenit un atac de acest gen pe viitor?
   * Care sunt tipurile de proceduri pe care le-ați recomanda la nivelul unei organizații pentru a preveni vulnerabilități din clasa atacului?   * Care sunt tipurile de proceduri pe care le-ați recomanda la nivelul unei organizații pentru a preveni vulnerabilități din clasa atacului?
 +
 +Veți participa la seminar având la voi o jumătate de pagină A4 de notițe legate de atacuri (circa 200 de cuvinte).
  
 Echipele de lucru sunt cele de mai jos. Echipele de lucru sunt cele de mai jos.
Line 25: Line 155:
  
 [[https://​en.wikipedia.org/​wiki/​Heartbleed|Heartbleed]] [[https://​en.wikipedia.org/​wiki/​Heartbleed|Heartbleed]]
-  * COȘOVANU ​Vasile+  * COSOVANU ​Vasile
   * VASILE Cătălin   * VASILE Cătălin
   * CERNICA Ionuț-Cosmin   * CERNICA Ionuț-Cosmin
Line 65: Line 195:
   * NIȚĂ Costin-Adrian   * NIȚĂ Costin-Adrian
  
-/*+
  
 ====== Laborator 09 - Servicii web ====== ====== Laborator 09 - Servicii web ======
gsr/laboratoare/laborator-09.1450280542.txt.gz · Last modified: 2015/12/16 17:42 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