UDP VPN molči pri skeniranju vrat? Zakaj se to zgodi
WireGuard in utrjeni OpenVPN zavržeta datagrame, ki ne prestanejo preverjanja pristnosti, brez odgovora. Tišina s skenerja je pričakovano vedenje, ne zaprta vrata.
Skenirate vrata VPN, ne prejmete odgovora in sklepate, da storitev ne deluje ali da je požarni zid zaprt. Pri WireGuardu in pri krmilnih kanalih OpenVPN, ki nosijo lastno preverjanje pristnosti, ta sklep ne velja. Datagram brez veljavnega graduva za preverjanje pristnosti se zavrže brez odgovora, zato je tišina tisto, kako je videti zdrava storitev od zunaj. Preizkus je napačen, preden je predor.
Tišina je protokol, ne okvara
UDP nima vzpostavljanja povezave, zato ni SYN niti potrditve, ki bi skenerju omogočila ločiti odprta vrata od filtriranih. Preizkus prispe kot osamljen datagram, storitev pa preveri, ali se ujema s protokolom, ki ga pričakuje. Ko se ne ujema, se paket zavrže, zavrženje pa je dokumentirano vedenje in ne okvara.
WireGuard kriptografsko preverja svoja sporočila handshake in vse, kar ne uspe, prezre. OpenVPN s tls-auth ali tls-crypt stori enako za svoj krmilni kanal. V obeh primerih poljubna koristna obremenitev nikoli ne doseže stopnje, obrnjene k uporabniku, zato ni s čim odgovoriti in ni napake za vrniti.
TCP bi vam dal ponastavitev z zaprtih vrat. UDP vas pusti v dvoumnosti, ki jo skenerji razrešijo tako, da izpišejo odprto ali filtrirano, namesto da bi ugibali.
Kaj skener lahko in česa ne more sklepati
Rezultat skeniranja je le toliko informativen, kolikor je informativna poslana koristna obremenitev. Razvrstite možna opažanja po tem, kaj vsako od njih v resnici potrjuje:
| Probe | Observed result | What it supports |
|---|---|---|
| Empty datagram | No reply | Nothing beyond the fact that UDP was used |
| Random payload | No reply | Consistent with an authenticated service |
| Valid handshake from a real client | A protocol reply | The service is alive and reachable |
| ICMP port unreachable | Unreachable message | The host answered, usually because nothing listens |
Tretjo vrstico berite kot edini pozitivni preizkus na seznamu. Zahteva pravi profil, pravi ključ in pravilno končno točko, in prav to splošni skener nima.
Poglejte oba konca poti
Pri strežniku, ki ga upravljate, zajemite na vmesniku, preden naredite kakršen koli sklep, nato pa storitev vprašajte, kaj je videla. Oba ukaza zahtevata root na prehodu:
tcpdump -ni any udp port 51820
tcpdump -ni any udp port 1194
wg show
Če se na vmesniku ne pojavi noben paket, ga je pot zavrgla, preden je storitev karkoli videla, naslednja postaja pa sta usmerjanje in filtriranje. Če paketi prispejo, a se noben handshake ne zaključi, je storitev dosegljiva, neskladje pa je v ključih, konfiguraciji končne točke ali različici protokola. Ta primerjava odgovori na vprašanje, na katero skener ni mogel. Zaženite jo, ko se pravi odjemalec poskuša povezati, ne ko skener ponavlja samega sebe.
Spremenite preizkus, ne zaščite
Mamljiva bližnjica je izklopiti zaščito krmilnega kanala, da bi diagnostika dobila odgovor. To zamenja resnično varnostno lastnost za lepši rezultat skeniranja in je napačna smer. Namesto tega uporabite veljaven profil iz odobrenega omrežja in zabeležite končno točko in čas, da bo primerjava ponovljiva.
Najbolj uporaben preizkus je diferencialni: isti profil na poti, ki deluje, in na poti, ki ne deluje. Če delujoča pot ustvari handshake, nedelujoča pa na vmesniku ne ustvari ničesar, ste prelom našli, ne da bi karkoli oslabili.
Neodgovorjen paket UDP torej ne dokazuje ne tega, da je strežnik brez povezave, ne tega, da je varen. Dokazuje, da ta preizkus, na tej poti, v tem trenutku ni bil sprejet.