Skip to main content

14.4 VPN cez SSTP

SSTP

SSTP (Secure Socket Tunneling Protocol) je z hľadiska konfigurácie veľmi podobný typ VPN ako PPTP. Hlavným rozdielom je bezpečnosť:

  • pre nadviazanie spojenia sa využívajú TLS certifikáty s asymetrickým šifrovaním (typicky RSA), ktoré zabezpečujú, že sa klient nepripojí na falošný server a že si môže bezpečne vymeniť šifrovacie kľúče;
  • klient sa autentifikuje menom a heslom;
  • komunikácia je šifrovaná silnou symetrickou šifrou (v MikroTik implementácii ide o AES-256).

Výhody

Výhodou SSTP je integrácia klienta v operačnom systéme Windows a bezproblémová dostupnosť z hľadiska firewallu - SSTP server implicitne beží na porte TCP/443 rovnako, ako HTTPS.

Pokiaľ chceme prevádzkovať SSTP server na štandardnom porte TCP/443, je potrebné zmeniť čísla portov pre služby www-ssl a reverse-proxy. Urobiť tak môžeme vo WinBox ponuke IP → Services.

Nevýhody

Nevýhodou SSTP je chýbajúca natívna podpora v iných operačných systémoch (je ju však možné doplniť). Ďalšou nevýhodou je, že SSTP implementácia na MikroTik je pomalšia oproti iným šifrovaným VPN, s ktorými sa stretneme. Šifrovanie AES na SSTP nie je realizované hardvérovo, výnimkou je napríklad model MikroTik hAP ax³, ktorý využíva hardvérovú podporu v spojení s režimom AES256-GCM-SHA384.

Konfigurácia SSTP

Konfigurácia je prakticky totožná s PPTP, navyše sa riešia len TLS certifikáty a ich overovanie.

Dvojité šifrovanie

Keďže všetka komunikácia sa účinne šifruje v TLS vrstve, je úplne zbytočné zapínať zastarané MPPE šifrovanie (Encryption) v profile servera. Teoreticky by takéto dvojité šifrovanie len zbytočne zaťažovalo CPU (na strane servera i klienta), no praktické experimenty ukázali, že MikroTik pri SSTP ignoruje toto nastavenie - staré šifrovanie nikdy nepoužíva.

Odporúčanie: V profile SSTP servera možnosť Encryption vypíname. Je úplne zbytočná.

Autentifikácia MS-CHAPv2

Z podobného dôvodu sa zdá byť úplne nepodstatné, aký spôsob autentifikácie nastavíme. No v skutočnosti to tak nie je a existujú dva dôvody, pre ktoré je potrebné vyžadovať MS-CHAPv2:

  1. SSTP protokol využíva haše z MS-CHAPv2 autentifikácie na to, aby kryptograficky previazal vnútornú PPP reláciu s vonkajším TLS tunelom. Tým sa bráni špecifickým útokom typu Man-in-the-Middle (kde by útočník ukončil TLS spojenie u seba a ďalej posielal len PPP).
  2. SSTP je natívny protokol Microsoftu a Windows klient štandardne vyžaduje MS-CHAPv2. Ak by sme ho vypli, klient by musel zmeniť predvolené nastavenia.

Odporúčanie: V možnostiach autentifikácie aj pri SSTP nechávame len možnosť mschap2.

Zabezpečenie PFS

Voľba PFS (Perfect Forward Secrecy) výrazne zvyšuje bezpečnosť z dlhodobého hľadiska. Predpokladajme, že útočník dokáže odpočúvať a ukladať šifrovanú komunikáciu. Nevie ju síce aj prečítať (je šifrovaná), ale otázka je, či ju dokáže prečítať niekedy v budúcnosti, ak sa mu raz podarí získať privátny kľúč servera.

Pri štandardnom postupe tradičnej kryptografie by to dokázal, pretože vygenerovaný jednorazový symetrický kľúč (AES), ktorým bola komunikácia šifrovaná, bol poslaný v podobe zašifrovanej asymetrickým verejným kľúčom servera (RSA). Ak sa raz niekto dostane k súkromnému kľúču servera, dokáže ním dešifrovať jednorazový symetrický kľúč a ním následne dešifrovať všetku zachytenú komunikáciu.

Zapnutie PFS nasadí moderné kryptografické metódy, pri ktorých si obe strany jednorazový symetrický kľúč spoločne vypočítajú (dohodnú) bezpečným spôsobom - napríklad algoritmom Diffie-Hellman (DH). Samotný kľúč sa sieťou vôbec neprenáša, takže aj keby táto komunikácia nebola šifrovaná, útočník sa nedozvie plný kľúč.

Odporúčanie: Voľbu PFS jednoznačne zapíname. Asi neexistuje situácia, v ktorej by to bolo nežiaduce.

Načo sa teda používa asymetrická kryptografia, keď je možné šifrovací kľúč bezpečne vymeniť aj bez nej?

Používa sa na účel digitálneho podpisu. Vďaka nemu sa klient vie presvedčiť, či komunikuje s tým pravým serverom.

Použitie SNI

V nastaveniach SSTP servera je možné zapnúť voľbu Add SNI. Ide o rozšírenie protokolu TLS, ktoré umožňuje serveru pod jednou IP adresou prevádzkovať viaceré TLS servery pod rôznymi doménovými menami. Stretávame sa s tým bežne pri webových serveroch s HTTPS. TLS server (či HTTPS alebo SSTP) by pri nadväzovaní spojenia nevedel, ktorý z certifikátov má použiť - pre každé doménové meno má iný.

Vďaka rozšíreniu SNI (Server Name Indication) môže klient už v prvej žiadosti o spojenie poslať informáciu o doménovom mene, s ktorým chce komunikovať.

Odporúčanie: Voľbu Add SNI môžeme zapnúť. Problém by mohla spôsobovať len v situácii, že nejaký starý SSTP server by tomu nerozumel.

Podporuje SSTP server na zariadení MikroTik rozšírenie SNI?

Keďže MikroTik RouterOS neumožňuje prevádzkovať viaceré SSTP servery, tak SNI nemáme ako využiť pre účel SSTP. Podstatné však je, že pokiaľ klient použije SNI, SSTP server s tým nebude mať problém.

Načo je teda táto voľba, keď nejde využiť?

Nejde využiť v situácii, keď SSTP serverom je MikroTik zariadenie. Môže to však byť nutnosť pri pripájaní na iný SSTP server, ktorý SNI umožňuje. V praxi sa však skôr bude jednať o reverzný HTTPS proxy (napr. HAProxy alebo projekt caddy-l4), ktorý podľa SNI rozlíši SSTP a nasmeruje na správny lokálny server.

Konfigurácia certifikátov

V Classroom prílohe nájdete 3 druhy certifikátov (vrátane privátnych kľúčov) pre doménové meno vyucba.ssnd.sk od rôznych vydavateľov:

  • self-signed: SHA-256 / RSA-2048 s platnosťou 10 rokov;
  • SSND.SK výučba CA: SHA-256 / RSA-2048 s platnosťou 4 roky;
  • Let's Encrypt R12: SHA-256 / RSA-2048 s platnosťou 3 mesiace.

V každom priečinku sa nachádza viac súborov:

  • verejný certifikát (.crt);
  • súkromný kľúč (.key);
  • certifikát certifikačnej autority (s výnimkou self-signed) a prípadne aj sprostredkovateľa.

Certifikáty na strane servera

Na stranu servera je potrebné importovať:

  1. svoj verejný certifikát (.crt) - nemusí byť označený ako dôveryhodný (trusted);
  2. svoj súkromný kľúč (.key) - k predošlému certifikátu sa doplní príznak K (Private Key);
  3. prípadný certifikát sprostredkovateľa (napr. Let's Encrypt R12) - nemusí byť trusted.

Certifikáty na strane klienta

Na stranu klienta MikroTik je potrebné importovať a nastaviť ako dôveryhodné (trusted):

  • a) verejný certifikát koreňovej CA (ISRG Root X1 / CA Cert / vlastná CA);
  • b) v prípade self-signed certifikátu svoj verejný certifikát.

Pokiaľ ako klienta pripájame priamo koncové zariadenie s OS Windows, je potrebné vyššie uvedený certifikát „inštalovať“, pričom ukladacím priestorom musí byť „Lokálny počítač“ a „Priestor na uloženie certifikátu“ musíme zvoliť ručne voľbou „Dôveryhodné koreňové certifikačné autority“.

Windows-inštalovať-certifikát.webp