Secure Socket Tunneling Protocol (SSTP) kapselt Point-to-Point Protocol (PPP) verkeer in binnen een Transport Layer Security (TLS) sessie om veilige toegang op afstand via internet te bieden. SSTP gebruikt HTTPS over TCP-poort 443, waardoor VPN-verkeer door de meeste firewalls, network address translation (NAT) apparaten en proxyservers kan passeren die doorgaans standaard webverkeer toestaan.
SSTP ondersteunt sterke versleuteling, authenticatie en gegevensintegriteit via TLS, wat helpt verzonden gegevens te beschermen tegen onderschepping of manipulatie. Doordat het op TCP steunt, kan SSTP betrouwbare verbindingen bieden onder instabiele netwerkomstandigheden, hoewel het extra overhead introduceert vergeleken met VPN-protocollen die op UDP gebaseerd zijn.
SSTP wordt vaak gebruikt in omgevingen waar andere VPN-protocollen, zoals PPTP, L2TP/IPsec of OpenVPN op niet-standaard poorten, door netwerkbeperkingen geblokkeerd worden.
Introduction
Het verbindingsmechanisme van SSTP:
- Er wordt een TCP-verbinding opgezet van client naar server (standaard op poort 443).
- SSL valideert het servercertificaat. Als een certificaat geldig is, wordt een verbinding tot stand gebracht; anders wordt de verbinding verbroken (zie de opmerking hieronder).
- De client stuurt SSTP-controlepakketten binnen de HTTPS-sessie, waarmee de SSTP-toestandsmachine aan beide kanten wordt opgezet.
- PPP-onderhandeling over SSTP. De client authenticeert zich bij de server en koppelt IP-adressen aan de SSTP-interface.
De SSTP-tunnel is nu tot stand gebracht en de pakketinkapseling kan beginnen.
Waarschuwing Vanaf v5.0beta2 heeft SSTP geen certificaten nodig om te werken en kan het elk beschikbaar authenticatietype gebruiken. Deze functie werkt alleen tussen twee MikroTik-routers, aangezien deze niet in overeenstemming is met de Microsoft-standaarden. Anders moeten voor het opzetten van veilige tunnels mschap-authenticatie en client-/servercertificaten uit dezelfde keten worden gebruikt.
Waarschuwing: Ondersteuning voor TLS SNI is toegevoegd vanaf versie 7.15beta10; de extensie wordt toegevoegd aan client hello-pakketten als het selectievakje "Add SNI" is aangevinkt of in de CLI is ingesteld:
/interface/sstp-client/set add-sni=yes
Certificates
Om een veilige SSTP-tunnel op te zetten zijn certificaten vereist. Op de server gebeurt de authenticatie alleen met gebruikersnaam en wachtwoord, maar op de client wordt de server geauthenticeerd met een servercertificaat. Dit wordt door de client ook gebruikt om SSL- en PPP-authenticatie cryptografisch aan elkaar te binden: de client stuurt een speciale waarde over de SSTP-verbinding naar de server, afgeleid van de sleutelgegevens die tijdens de PPP-authenticatie zijn gegenereerd en van het servercertificaat. Hierdoor kan de server controleren of beide kanalen veilig zijn.
Als de SSTP-clients Windows-pc's zijn, is de enige manier om een veilige SSTP-tunnel met een zelfondertekend certificaat op te zetten het importeren van het "server"-certificaat op de SSTP-server en het toevoegen van een CA-certificaat op de Windows-pc bij de trusted root.
Waarschuwing Als uw servercertificaat is uitgegeven door een CA die al bij Windows bekend is, werkt de Windows-client zonder dat er extra certificaten in een trusted root hoeven te worden geïmporteerd.
Let op: De RSA-sleutel moet minimaal 472 bits lang zijn als een certificaat door SSTP wordt gebruikt. Kortere sleutels worden als een beveiligingsrisico beschouwd.
Een vergelijkbare configuratie op een RouterOS-client is het importeren van het CA-certificaat en het inschakelen van de optie verify-server-certificate. In dit scenario zijn Man-in-the-Middle-aanvallen niet mogelijk.
Tussen twee MikroTik-routers is het ook mogelijk om een onbeveiligde tunnel zonder certificaten op te zetten. In dat geval gebruikt data die door de SSTP-tunnel gaat anonieme DH en zijn Man-in-the-Middle-aanvallen eenvoudig uit te voeren. Dit scenario is niet compatibel met Windows-clients.
Het is ook mogelijk om een veilige SSTP-tunnel te maken door extra autorisatie met een clientcertificaat toe te voegen. De configuratievereisten zijn:
- Certificaten op zowel de server als de client.
- Verificatieopties ingeschakeld op server en client.
Dit scenario is niet mogelijk met Windows-clients, omdat er geen manier is om een clientcertificaat op Windows in te stellen.
Foutmeldingen bij certificaten
Wanneer de SSL-handshake mislukt, ziet u een van de volgende certificaatfouten:
- Certificaat is nog niet geldig - de notBefore-datum van het certificaat ligt na de huidige tijd.
- Certificaat is verlopen - de vervaldatum van het certificaat ligt vóór de huidige tijd.
- Invalid certificate purpose - het opgegeven certificaat kan niet worden gebruikt voor het opgegeven doel.
- Self signed certificate in a chain - de certificaatketen kon met de niet-vertrouwde certificaten worden opgebouwd, maar de root kon lokaal niet worden gevonden.
- Unable to get issuer certificate locally - het CA-certificaat is niet lokaal geïmporteerd.
- Server's IP address does not match certificate - verificatie van het serveradres is ingeschakeld, maar het adres in het certificaat komt niet overeen met het adres van de server.
Kort voorbeeld

SSTP Client
Dit voorbeeld maakt een eenvoudige SSTP-client zonder certificaat:
[admin@MikroTik] > /interface/sstp-client/add connect-to=192.168.62.2 disabled=no name=sstp-out1 password=StrongPass profile=default-encryption user=MT-User
[admin@MikroTik] > /interface/sstp-client/print
Flags: X - disabled; R - running 0 R name="sstp-out1" max-mtu=1500 max-mru=1500 mrru=disabled connect-to=192.168.62.2:443 http-proxy=0.0.0.0:443 certificate=none verify-server-certificate=no verify-server-address-from-certificate=yes user="MT-User" password="StrongPass" profile=default-encryption keepalive-timeout=60 add-default-route=no dial-on-demand=no authentication=pap,chap,mschap1,mschap2 pfs=no tls-version=any
### SSTP Server
Configure a PPP secret for a particular user, then enable the SSTP server:
```ros
[admin@MikroTik] > /ppp/secret/add local-address=10.0.0.1 name=MT-User password=StrongPass remote-address=10.0.0.5 service=sstp
[admin@MikroTik] > /interface/sstp-server/server/set default-profile=default-encryption enabled=yes
[admin@MikroTik] > /interface/sstp-server/server/print
enabled: yes
port: 443
max-mtu: 1500
max-mru: 1500
mrru: disabled
keepalive-timeout: 60
default-profile: default-encryption
authentication: pap,chap,mschap1,mschap2
certificate: none
verify-client-certificate: no
pfs: no
tls-version: any
Info In P2P-opstellingen is het netwerkadres hetzelfde als het lokale adres van het andere eindpunt.
Belangrijk: Net als elke andere PPP-tunnel ondersteunt ook SSTP BCP, waarmee de SSTP-tunnel met een lokale interface kan worden gebridged. Bijvoorbeeld in opstellingen waarbij routers via ether1 met het internet zijn verbonden en werkstations en laptops op ether2 zijn aangesloten: beide lokale netwerken worden via de SSTP-client gerouteerd en bevinden zich niet in hetzelfde broadcastdomein. Dan wordt BCP gebruikt.