SecLab 05 - University of Novi Sad · Transport Layer Security (TLS) i njegov prethodnik, Secure...

9
SecLab 05 v2.00 SecLab 05 Sigurnost FTP servera sa SSL, TLS i SFTP protokolima Cilj vežbe Cilj ove vežbe je upoznavanje sa sigurnošću FTP servera i implementacija SSL, TLS i SFTP protokola sa vsftpd FTP serverom. Ova vežba je implementirana sa Oracle VirtualBox softerom za virtuelizaciju koji je instaliran na svakoj radnoj stanici i jedne virtualne mašine sa Linux CentOS 6.2 operativnim sistemom i instaliranim vsftpd serverom. SSL i TSL protokoli Transport Layer Security (TLS) i njegov prethodnik, Secure Sockets Layer (SSL), su kriptografski protokoli koji omogućavaju sigurnu komunikaciju na Internetu. TLS i SSL enkriptuju mrežnu konekciju na sloju aplikacije (Application Layer) za transportni sloj (Transport Layer). Postoji nekoliko verzija ovog protokola, a primenjuju se kod aplikacija kao što su web, e-mail, Internet fax i voice-over-IP (VoIP). TLS je IETF standard, definisan dokumentom RFC 5246, a baziran je na ranijoj specifikaciji SSL koji je definisao Netscape Communications. SSL 1.0, 2.0 i 3.0 SSL protokol je originalno razvijen od strane kompanije Netscape. Verzija 1.0 nikada nije javno objavljena, verzija 2.0 je objavljena u fabruaru 1995. god. ali jei mala dosta sigurnosnih propusta koji su doveli do stvaranja SSL verzije 3.0. SSL 3.0 je objavljena 1996. i predstavlja potpuno redizajniran protokol koji je izvršio Paul Kocher u saradnji sa inženjerima kompanije Netscape Phil Karltonom i Alan Freierom. Novije verzije SSL/TLS protokola su bazirane na SSL 3.0. Nacrt SSL 3.0 protokola je objavljen 1996. Od strane IETF kao dokument RFC 6101. TLS 1.0 TLS 1.0 je definisan kao dokument RFC 2246 januara 1999. god, kao nadogradnja SSL 3.0. Kao što se tvrdi u RFC dokumentu "razlike između ovog protokola i SSL 3.0 nisu dramatične ali su značajne za preclude interoperabilnost između TLS 1.0 i SSL 3.0. TLS 1.0 obuhvata sredstva za stvaranje kompatibilnosti sa SSL 3.0. Uvod u SSL Secure Sockets Layer (SSL) je najrasprostranjeniji protokol koji nudi privatnost i dobru pouzdanost u klijent-server komunikaciji preko Interneta. SSL je veoma jednostavan u svom konceptu: on ugovara kriptografske algoritme i ključeve između dve strane u komunikaciji i uspostavlja enkriptovani tunel kroz koji drugi protokoli kao što je HTTP mogu da se transportuju. Opciono, SSL može da autentifikuje obe strane u komunikaciji kroz upotrebu sertifikata. SSL je slojevit protokol koji se sastoji od 4 podprotokla: SSL Handshake Protocol

Transcript of SecLab 05 - University of Novi Sad · Transport Layer Security (TLS) i njegov prethodnik, Secure...

  • SecLab 05 v2.00

    SecLab

    05

    Sigurnost FTP servera sa SSL, TLS i SFTP protokolima Cilj vežbe Cilj ove vežbe je upoznavanje sa sigurnošću FTP servera i implementacija SSL, TLS i SFTP protokola sa vsftpd FTP serverom. Ova vežba je implementirana sa Oracle VirtualBox softerom za virtuelizaciju koji je instaliran na svakoj radnoj stanici i jedne virtualne mašine sa Linux CentOS 6.2 operativnim sistemom i instaliranim vsftpd serverom. SSL i TSL protokoli Transport Layer Security (TLS) i njegov prethodnik, Secure Sockets Layer (SSL), su kriptografski protokoli koji omogućavaju sigurnu komunikaciju na Internetu. TLS i SSL enkriptuju mrežnu konekciju na sloju aplikacije (Application Layer) za transportni sloj (Transport Layer). Postoji nekoliko verzija ovog protokola, a primenjuju se kod aplikacija kao što su web, e-mail, Internet fax i voice-over-IP (VoIP). TLS je IETF standard, definisan dokumentom RFC 5246, a baziran je na ranijoj specifikaciji SSL koji je definisao Netscape Communications. SSL 1.0, 2.0 i 3.0 SSL protokol je originalno razvijen od strane kompanije Netscape. Verzija 1.0 nikada nije javno objavljena, verzija 2.0 je objavljena u fabruaru 1995. god. ali jei mala dosta sigurnosnih propusta koji su doveli do stvaranja SSL verzije 3.0. SSL 3.0 je objavljena 1996. i predstavlja potpuno redizajniran protokol koji je izvršio Paul Kocher u saradnji sa inženjerima kompanije Netscape Phil Karltonom i Alan Freierom. Novije verzije SSL/TLS protokola su bazirane na SSL 3.0. Nacrt SSL 3.0 protokola je objavljen 1996. Od strane IETF kao dokument RFC 6101. TLS 1.0 TLS 1.0 je definisan kao dokument RFC 2246 januara 1999. god, kao nadogradnja SSL 3.0. Kao što se tvrdi u RFC dokumentu "razlike između ovog protokola i SSL 3.0 nisu dramatične ali su značajne za preclude interoperabilnost između TLS 1.0 i SSL 3.0. TLS 1.0 obuhvata sredstva za stvaranje kompatibilnosti sa SSL 3.0. Uvod u SSL Secure Sockets Layer (SSL) je najrasprostranjeniji protokol koji nudi privatnost i dobru pouzdanost u klijent-server komunikaciji preko Interneta. SSL je veoma jednostavan u svom konceptu: on ugovara kriptografske algoritme i ključeve između dve strane u komunikaciji i uspostavlja enkriptovani tunel kroz koji drugi protokoli kao što je HTTP mogu da se transportuju. Opciono, SSL može da autentifikuje obe strane u komunikaciji kroz upotrebu sertifikata. SSL je slojevit protokol koji se sastoji od 4 podprotokla:

    SSL Handshake Protocol

  • SecLab 05 v2.00

    SSL Change Cipher Spec Protocol SSL Alert Protocol SSL Record Layer

    Navedeni protokoli prikazani su u okviru TCP/IP modela na slici 1.

    A njegovo funkcionisanje na slici 2.

    SSL v2.0 Je objavljen od strane kompanije Netscape Communications 1994. god. Glavni cilj ovog protokola je bio da se omogući sigurnost za transakcije preko weba. Na nesreću uskoro su otkriveni brojni sigurnosni propusti i tako su ga učinili manje pouzdanim za komercijalnu upotrebu. PCT v1.0

  • SecLab 05 v2.00

    Je protokol razvijen 1995. od strane kompanije Microsoft Privacy Communication Technology (PCT) v1.0 je trebao da otkloni neke slabosti SSL v2.0, sa namerom da ga zameni u upotrebi. Ovaj protokol nikada nije dobio popularnost kao SSL v3.0. SSL v3.0 Je objavljen 1996. Od strane kompanije Netscape Communications. SSL v3.0 je rešio većinu problema u verziji SSL v2.0, i uvrstio mnogo karakteristika PCT protokola. Veoma brzo, SSL v3.0 je postao najpopularniji protokol za sigurnost komunikacije preko WWW. TLS v1.0 (poznat i kao SSL v3.1) TLS je objavio IETF 1999. god. (RFC 2246). Protokol je baziran na SSL v3.0 i PCT i tako usaglašava pristup kompanija Netscape i Microsoft. Važno je napomenuti, da iako je TLS baziran na SSL protokolu on nije 100% kompatibilan sa njegovim prethodnikom. IETF je izvršio nekoliko sigurnosnih poboljšanja koje su dovele do toga da ova dva protokola ne mogu u potpunosti da budu operativni. TLS ima podršku za rad u SSL v3.0 modu. WTLS WTLS je bežična i mobilna verzija TLS protokola koja koristi UDP protokol kao noseći protokol. Optimizovan je za manje propusne opsege i manje procesirajuće resurse uređaja koji podržavaju WAP. WTLS je počeo da se uvodi sa WAP 1.1 protokolom, i objavio ga je WAP Forum. Posle objavljivanja WAP 2.0 protokola, WTLS je zamenjen profilisanom verzijom TLS protokola.

    Priprema virtuelnih mašina za vežbu

    Za kompletiranje ove vežbe potrebno je pokrenuti Oracle VirtualBox . Nakon startovanja programa otvoriće se prozor sledećeg izgleda. Instalirane virtualne mašine nalaze se u levom delu prozora. Ako se u tom delu ne nalazi ni jedna virtuelna mašina, znači da one trenutno nisu kreirane.

    Import postojeće virtuelne mašine vrši se aktiviranjem opcije menija File > Import Appliance ... ili kombinacijom tastera Ctrl+I.

  • SecLab 05 v2.00

    Nakon aktiviranja te opcije otvara se sledeći prozor. Odabir fajla sa mašinom koja će se importovati vrši se klikom na taster Open appliance ...

    Posle aktiviranja te opcije potrebno je odabrati fajl na disku koji sadrži virtuelnu mašinu pripremljenu za import (to je fajl koji je kreiran u Oracle VirtualBox-u na osnovu postojeće virtualne mašine i opcijom Export appliance ...). Za ovu vežbu potrebno je odabrati fajl pod nazivom CentosLab.ova.

    Kada se pojavi sledeći prozor potrebno je pokrenuti opciju Import.

  • SecLab 05 v2.00

    Sada će se importovana virtuelna mašina pojaviti u levom prozoru. Ako je potrebno startovati virtuelnu mašinu to se vrši klikom na ikonicu virtuelne mašine u levom prozoru i aktiviranjem opcije Start. Ako je potrebno kreirati više virtualnih mašina do se vrši klikom desnog tastera na ikonicu virtuelne mašine i odabirom opcije Clone... Napomena: Kloniranje virtuelne mašine nije potrebno za ovu vežbu.

    Posle aktiviranja opcije potrebno je odabrati naziv klonirane mašine i aktivirati opciju Next.

    Za kreiranje klona virtualne mašine potrebno je odabrati Full clone i opciju Clone.

  • SecLab 05 v2.00

    Konfigurisanje rutera Korak 1.1. Nakon stratovanja virtuelne mašine CentOSLab, tj. servera potrebno je pokrenuti FTP server vsftpd: [root@RT~]# service vsftpd start

    Starting vsftpd: [ OK ]

    Korak 1.2. Zatim je potrebno je dodati korisnika proba i podesiti njegovu lozinku: [root@RT~]# adduser proba

    [root@RT~]# password proba

    Korak 1.3. Sada je potrebno podesiti sistemsku promenljivu koja dozvoljava korisnicima logovanje u njihov home direktorijum na FTP serveru. To se vrši komandom:

    [root@RT~]# getsebool -a | grep ftp_home_dir

    Ako se dobije izveštaj kao u nastavku (off) taj pristup niej dozvoljen.

    ftp_home_dir --> off

    Dozvoljavanje korisicima pristupa u home direktorijum se vrši komandom:

    [root@RT~]# setsebool ftp_home_dir on

    Sada bi prikaz sistemskog podepavanja bio sledeći:

    [root@RT~]# getsebool -a | grep ftp_home_dir

    ftp_home_dir --> on

    Korak 1.4.

    Sada je potrebno proveriti da li funkcioniše pristu na FTP server. Pristup će se obaviti sa lokalne mašine na istu virtuelnu mašinu, pa će se za naziv servera koristi localhost. Zbog lokalnog pristupa u ovoj vežbi se ne moraju podesiti IP adrese za virtuelnu mašinu. Ako se želi simulirati pristup preko TCP/IP mreže, potrebno je kreirati dve virtuelne mašine i dodeliti im odgovarajuće IP adrese. Pristup FTP serveru vrši se naredbom:

  • SecLab 05 v2.00

    [root@RT~]# ftp localhost

    Nakon čega je potrebno uneti korisničko ime proba i lozinku 123456.

    Ako je pristup obavljen uspešno dobiće se sledeći prikaz:

    ftp>

    Prikaz sadržaja korisnikovog direktorijuma na FTP serveru se dobija naredbom:

    ftp> ls

    Prenos datoteke sa lokalnog računara (računara sa kojeg se izvršilo konektovanje na FTP server) vrši se naredbom put. Npr. u ovom primeru se može izvršiti transfer datoteke install.log sledećom naredbom:

    ftp> put install.log

    Ponovo se može proveriti sadržaj direktorijuma korisnika na FTP serveru naredbom ls. Sada bi direktorijum trebao da sadrži prebačeni dokument.

    ftp> ls

    Izlaz se vrši naredbom exit:

    ftp> exit

    Korak 1.5.

    Pristup FTP serveru se može izvšriti i pomoću programa sftp koji koristi SFTP protokol zasnovan na SSH protokolu. Ovaj protokol omogućava sigurni prenos podataka:

    [root@RT~]# sftp username@localhost

    U ovom slučaju unosi se samo lozinka 123456 a pristup FTP serveru je isti kao i u koraku 1.4, kao i prenos datoteka koji se obavlja komandom put. Za vežbu se u ovom slučaju može iskopirati dokument install.log.syslog.

    Konfigurisanje FTP servera Korak 2.1.

    Sada je potrebno koristiti OpenSSL paket da bi se generisao sertifikat za vsftpd. Sertifikat će se nalaziti na serveru na lokaciji po izboru administratora, npr. u /etc/vsftpd direktorijumu. Takođe, administrator određuje živorni vek sertifikata, npr. za godinu dana se unosi (“-days 365″).

    Znak \ predstavlja prekid linije.

    root@RT# openssl req -x509 -nodes -days 365 -newkey rsa:1024 \

    -keyout /etc/vsftpd/vsftpd.pem \

    -out /etc/vsftpd/vsftpd.pem

    Korak 2.2. Konfiguracija vsftpd servera Da bi se izvršila konfiguracija vsftpd servera potrebno je u dokument /etc/vsftpd/vsftpd.conf dodati sledeće linije. To se može uraditi upotrebom vi editora i komandom vi

  • SecLab 05 v2.00

    /etc/vsftpd/vsftpd.conf. Za unos novog teksta potrebno je pritisnuti taster I (insert) a za izlazak i snimanje promena taster Esc, a zatim wq. Ako se želi izlazak iz dokumenta bez snimanja promena potrebno je pritisnuti taster Esc i tastere q! (delove teksta sa znakom # nije potrebno unositi budući da su to komentari):

    # Turn on SSL

    ssl_enable=YES

    # Allow anonymous users to use secured SSL connections

    allow_anon_ssl=NO

    # All non-anonymous logins are forced to use a secure SSL connection in order to

    # send and receive data on data connections.

    force_local_data_ssl=NO

    # All non-anonymous logins are forced to use a secure SSL connection in order to send

    # the password.

    force_local_logins_ssl=NO

    # Permit TLS v1 protocol connections. TLS v1 connections are preferred

    ssl_tlsv1=YES

    # Permit SSL v2 protocol connections. TLS v1 connections are preferred

    ssl_sslv2=NO

    # permit SSL v3 protocol connections. TLS v1 connections are preferred

    ssl_sslv3=NO

    # Specifies the location of the RSA certificate to use for SSL encrypted connections

    rsa_cert_file=/etc/vsftpd/vsftpd.pem

    Budući da je izvršena promena konfiguracije potrebno je izvršiti restart vsftpd servera:

    [root@RT~]# service vsftpd restart

    Stoping vsftpd: [ OK ]

    Starting vsftpd: [ OK ]

    Ili naredbom:

    root@vps# /etc/rc.d/init.d/vsftpd restart

    Korak 2.3. Sada će i dalje pristup FTP serveru biti moguć i kroz neekriptovan pristu sa ftp programom i istoimenim protokolom, sftp programom i istoimenim protokolom ali i sa enkriptovanim protokolima SSL i TLS. Ako se u /etc/vsftpd/vsftpd.conf dokumentu uz pomoć vi editora podesi:

    force_local_logins_ssl=YES

    tada će svi korisnici morati da koriste FTP klijent program sa podrškom za AUTH TLS/SSL da vi se konektovali.

    Ako se ostavi "NO" korisnici se mogu konektovati i preko nesignurne veze.

    Zadatak 1 Promeniti sadržaj konfiguracionog fajla FTP servera i dodeliti vrednost parametra force_local_logins_ssl=YES i restartovati vsftpd server zbog promene konfiguracije. Sada pokušati konekciju na FTP server programima ftp i sftp. Šta će se dogoditi?

  • SecLab 05 v2.00

    Zadatak 2 Uraditi istu vežbu uz upotrebu dve virtualne mašine. Da bi se to postiglo potrebno je:

    1. Klonirati virtuelnu mašinu kao što je pokazano na početku ovog dokumenta. 2. Dodeliti prvoj virtuelnoj mašini i njenom interfejsu eth0 IP adresu 192.168.0.1 3. Dodeliti drugoj virtuelnoj mašini i njenom interfejsu eth0 IP adresu 192.168.0.2 4. Startovati vsftpd server na prvoj virtualnoj mašini 5. Na istoj virtuelnoj mašini kreirati korisnika novaproba i dodeliti mu proizvoljnu lozinku 6. Pokušati pristup preko ftp protokola sa druge virtualne mašine na prvu virtuelnu mašinu 7. Generisati sertifikat za FTP server 8. Izvršiti izmenu konfiguracije FTP servera (prva virtuelna mašina) kao u primeru u vežbi 9. Izvršiti pristup FTP server preko bezbedne konekcije

    Konekcija sa sigurnim FTP klijentskim programima

    Postoji nekoliko FTP klijentskih programa sa podrškom za AUTH TLS / SSL / SFTP. To su: CoreFTP (http://www.coreftp.com), WinSCP, FireFTP (http://fireftp.mozdev.org/), itd. Literatura

    http://www.coreftp.com/http://fireftp.mozdev.org/