A böngésző panasz nélkül nyitja meg a VPN-gazdagépnevet HTTPS-en, és az SSTP-kliens mégis megtagadja a kapcsolódást. Ebben a párban semmi sem ellentmondásos. Az SSTP a TLS-t külső szállítási rétegként használja, majd saját kérését és PPP-terhelését ezen a kapcsolaton belül futtatja, ezért egy sikeres oldalbetöltés csak egy szűk dolgot bizonyít: a gazdagép válaszol egy GET-re a 443-as porton. A kliens más kérdést tesz fel, és a kiszolgáló esetleg rosszul válaszol rá.

Az oldal betöltődik, az alagút nem

Az emberek a böngészős teszthez fordulnak, mert gyors, majd az eredményt annak bizonyítékaként kezelik, hogy a kiszolgáló elérhető és konfigurált. Ez egy GET-re vonatkozó bizonyíték arra az útvonalra, amelyet a címsor megnyitott, semmi több. A VPN-beszélgetés ugyanazon TLS-kézfogás után kezdődik, de elküld egy metódust és egy útvonalat, amelyet egy weboldal soha nem használ. Ezért a 200-as válasz a böngészőnek semmit sem mond arról, létezik-e az SSTP-végpont.

Válassza szét a két megfigyelést, és a keresés rövidebb lesz. A szállítás és a tanúsítványlánc működik, és valami a felettük lévő protokollcserében nem. Ez más vizsgálat, mint egy törött port vagy egy lejárt tanúsítvány, és más bizonyítékokat igényel.

Mit küld valójában az SSTP-kliens

A kliens HTTP-kérést küld az SSTP_DUPLEX_POST metódussal a /sra_{GUID}/ útvonalra, majd a kapcsolat törzsét nyitva tartja kétirányú adatfolyamként, amely PPP-kereteket szállít. A megfelelő kiszolgáló HTTP/1.1 200-zal válaszol, és felhagy a webszerver-viselkedéssel. Bármi más egy aláírás: a 405 vagy 404 azt jelenti, hogy nincs ott a végpont, a 301 vagy 302 azt, hogy valami átirányítja a kérést, az azonnali FIN pedig azt, hogy egy proxy vagy kiszolgáló lezárta az adatfolyamot.

Ezért a célpontnak SSTP-kiszolgálónak kell lennie, nem pedig egy webkiszolgálónak rácsavarozott TLS-tanúsítvánnyal. A metódus, az útvonal és a hosszú életű törzs protokollkövetelmény, ezért egy fordított proxy nem tudja őket pusztán konfigurációval hozzáadni. Egy proxy, amely a közönséges HTTPS-t tökéletesen továbbítja, még mindig elutasíthat egy általa nem ismert metódust.

Hol töri meg az adatfolyamot egy proxy vagy webkiszolgáló

Egy közvetítő megvizsgálja a HTTP-kérés sort, mielőtt bármit továbbítana, és egy szokatlan útvonalú egyedi metódus megbukhat a szabályain. Egyes eszközök normál oldalt szolgálnak ki, miközben elutasítják vagy megszakítják az alagutat, ezért a kliens olyan kapcsolatot jelent, amely elindul, majd meghal, nem pedig tiszta elutasítást. Mások elfogadják a kérést, majd olyan törzs- vagy tétlenségi időkorlátot alkalmaznak, amelyet a PPP-keepalive-ok nem élnek túl. Mindkettő ugyanúgy néz ki a kliens oldaláról, ezért a hibát szenvedett szakasz fontosabb, mint a hibaüzenet szövege.

A 443-as port megosztása egy webhely és az SSTP között útválasztási döntés, nem ígéret arra, hogy minden ugrás ugyanúgy kezeli a két beszélgetést. Ha terheléselosztó, tűzfal vagy TLS-terminátor van az útvonalon, tegye fel a gyanúsítottak listájára, mielőtt a VPN-konfigurációhoz nyúl.

Tesztelje a szakaszokat külön

Futtassa a ellenőrzéseket sorrendben, és álljon meg az első hibánál, mert minden szakasz más réteget zár ki. Az alábbi TLS-szonda elválasztja a tanúsítvány identitását mindattól, amit az SSTP tesz. Cserélje ki a gazdagépnevet a saját végpontjára, és olvassa el a kiírt subjectet és láncot.

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com

Ezután rendelje a fennmaradó bizonyítékokat a szakaszokhoz, ahelyett hogy a klienshibából találgatna. Az alábbi táblázat a jegyzékben idézhető ellenőrzőlista, azzal az aláírással, amely elválaszt egy hibát a következőtől.

StageWhat it provesFailure signature
TCP to 443A listener exists and the path is openTimeout or connection refused
TLS with SNIThe certificate matches the name you useName mismatch or untrusted chain
SSTP_DUPLEX_POST exchangeThe endpoint is an SSTP server405, 404, 301 or an early FIN
PPP authenticationThe user credential was acceptedAuth failure after a 200 response
Inner routingA permitted destination is reachableTunnel up, no reply from the target

A jegyzékben az utolsó sikeres szakaszt rögzítse, ahelyett hogy azt írná: "nem lehet csatlakozni". Az MS-SSTP specifikáció dokumentálja a TLS-kézfogást követő kérést és PPP-cserét, és ez a hivatkozás arra, miért nem helyettesítheti a böngészős teszt egyiket sem.

Először az identitás, aztán a PPP

A TLS-identitás és a PPP-hitelesítés egymás után következik, nem alternatívák, és összekeverésük rossz kiszolgálóbeállításhoz vezeti az embereket. A kliens először a kiszolgáló tanúsítványát és annak szándékolt célját validálja, majd a PPP megtárgyalja a saját állapotát, és kihívás-válasz módszerrel vagy EAP-pal hitelesíti a felhasználót. A tanúsítványprobléma más hibát ad, mint egy elutasított jelszó, és egyik hiba sem írja le azt a szakaszt, amelyet a másik lefed.

A gazdagépnév címre cserélése vagy a tanúsítványfigyelmeztetés átkattintása eltávolítja azt az ellenőrzést, amely azonosította volna a hibás szakaszt, ahelyett hogy kijavítaná. Tartsa meg a figyelmeztetést, és olvassa el. Ne állítsa vissza a PPP-jelszót sem, amikor a HTTP-csere soha nem érte el az SSTP-viselkedést, mert a hitelesítő adatokat soha nem kérték.

Kapcsolódó cikkek