Secure Socket Tunneling Protocol
![]() |
Secure Socket Tunneling Protocol (SSTP) je protokol koji je razvila kompanija Majkrosoft sa željom da prevaziđe probleme koje su virtuelne privatne mreže bazirane na PPTP protokolu imale sa NAT-om (Network Adress Translation). PPTP virtualne privatne mreže koriste TCP konekciju na portu 1723 za održavanje tunelovane konekcije i razmenu GRE enkapsuliranih paketa. Ali, PPTP može imati problema sa NAT-om, veb proksijima i zaštitnim zidovima (engl. firewall). Da bi se sprečili ovi problemi, zaštitni zid se mora konfigurisati da propušta GRE enkapsulirani saobraćaj, kao i da se dozvole TCP konekcije. Iako je GRE skoro standardni metod enkapsulacije IP paketa, mnogi internet servis provajderi odbacuju ove pakete, što rezultuje gubitkom podataka. Često su i konekcije u hotelima i drugim „hot spotovima“ konfigurisane za tipičan veb i e-mail saobraćaj i dešava se da neće dozvoliti PPTP pakete. Takođe, ako se naš kompjuter nalazi iza NAT-a, NAT će morati da bude sposoban da prevede GRE saobraćaj. Za kraj, PPTP paketi ne mogu da prođu preko veb proksija.
Drugi protokol koji se koristio za Windows XP i Server 2003, L2TP u kombinaciji sa IPSec protokolom, koristi IKE (Internet Key Exchange) i takođe može imati problema sa NAT-om, veb proksijima i zaštitnim zidovima. U ovom slučaju, zaštitni zid mora da propušta ESP enkapsulirane pakete i IKE saobraćaj. Ako se naš računar nalazi iza NAT-a, VPN klijent i VPN server moraju da podržavaju IPSec NAT-Traversal (NAT-T). L2TP/IPsec paketi takođe ne mogu da prolaze preko veb proksija.
Kao što možemo da vidimo, postoji mnogo problema sa VPN operacijama kod operativnih sistema Windows XP i Server 2003. Stoga se od pojave operativnih sistema Windows Vista i Server 2008 koristi SSTP. Korišćenje ovog protokola rešava sve probleme – proksi, NAT i zaštitni zid. Razlog je prost: HTTP preko SSL je veoma rasprostranjen tip saobraćaja. HTTP preko SSL može značajno da smanji troškove održavanja „remote access” rešenja jer eliminiše probleme sa NAT-om i radi u skoro svakom okruženju. Takođe, SSTP je ugrađen u Windows i nema potrebe za instalacijom dodatnog klijentskog softvera. SSTP obezbeđuje i bolje balansiranje saobraćaja (load balancing) VPN konekcija putem SSL „load balancer“-a. Za razliku od PPTP i L2TP protokola, SSTP ne podržava site-to-site VPN konekcije.
Proces konekcije
[uredi | uredi izvor]- SSTP VPN klijent ostvaruje TCP konekciju sa SSTP VPN mrežnim prolazom (gateway) na TCP portu 443
- Klijent šalje SSL CLIENT-HELLO poruku
- VPN mrežni prolaz šalje sertifikat klijentu
- Klijent verifikuje sertifikat tako što proveri svoje Trusted Root Certification Authorities sertifikate i vidi da li se među njima nalazi CA sertifikat potpisan od strane servera. Nakon toga, klijent se odlučuje za metodu enkripcije SSL sesije, generiše SSL ključ i enkriptuje ga sa javnim ključem VPN mrežnog prolaza i šalje enkriptovanu formu SSL ključa VPN mrežnom prolazu
- Mrežni prolaz dekriptuje SSL ključ sa privatnim ključem servera. Sva buduća komunikacija između klijenta i mrežnog prolaza je enkriptovana dogovorenom enkripcionom metodom i SSL ključem sesije.
- Klijent šalje HTTP preko SSL (tj. HTTPS) REQUEST poruku
- Klijent dogovara SSTP tunel sa mrežnim prolazom
- Klijent ostvaruje PPP konekciju sa SSTP serverom. Ovo uključuje standardne PPP autentifikacione metode i konfiguraciju za IPv4 ili IPv6 saobraćaj
- Klijent počinje da šalje IPv4 ili IPv6 saobraćaj preko PPP linka
Struktura paketa
[uredi | uredi izvor]Zaglavlje
[uredi | uredi izvor]Ofset bit | Bitovi 0–7 | 8–14 | 15 | 16–31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Verzija | Rezervisano | C | Veličina | ||||||||||||||||||||||||||||
32+ | Podaci |
- Verzija (8 bita) – Za dogovor SSTP verzije koja će se koristiti.
- Rezervisano (7 bita) – Rezervisano za buduću upotrebu.
- C (1 bit) – Kontrolni bit koji označava da li je SSTP paket kontrolni ili paket podataka. Ovaj bit je setovan ukoliko je paket kontrolni.
- Veličina (16 bita) – Polje za veličinu paketa, sastoji se od dva dela: rezervisani deo i deo za veličinu paketa.
- Rezervisano (4 bita) – Rezervisano za buduću upotrebu.
- Veličina (12 bita) – Sadrži veličinu celog paketa, uključujući i SSTP zaglavlje.
- Podaci (promenljiva) – Kada je kontrolni bit C setovan, ovo polje sadrži kontrolnu poruku. U suprotnom, ovo polje bi sadržalo podatke protokola višeg nivoa. Trenutno, jedini mogući je PPP protokol.
Kontrolna poruka
[uredi | uredi izvor]Polje podataka sadrži kontrolnu poruku samo kada je kontrolni bit C setovan.
Ofset bit | Bitovi 0–15 | 16–31 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Tip poruke | Broj atributa | ||||||||||||||||||||||||||||||
32+ | Atributi |
- Tip poruke (16 bita) – Označava tip SSTP poruke koja se koristi za komunikaciju. Određuje broj i tip atributa SSTP poruka.
- Broj atributa (16 bita) – Određuje broj atributa dodatih SSTP poruci.
- Atributi (promenljiva) – Sadrži listu atributa vezanih za SSTP kontrolnu poruku.