UDP VPN silentas dum portskanado? Kial tio okazas
WireGuard kaj malmoligita OpenVPN forĵetas datagramojn, kiuj malsukcesas aŭtentikigon, sen respondi. Silento de skanilo estas atendata konduto, ne fermita pordo.
Vi skanas la VPN-pordon, ricevas neniun respondon kaj konkludas, ke la servo estas elŝaltita aŭ ke la fajroŝirmilo estas fermita. Ĉe WireGuard kaj ĉe la kontrolkanaloj de OpenVPN, kiuj portas sian propran aŭtentikigon, tiu konkludo ne sekvas. Datagramo sen valida aŭtentikiga materialo estas forĵetata sen respondo, do silento estas tio, kiel sana servo aspektas de ekstere. La provo estas malĝusta antaŭ ol la tunelo estas.
Silento estas la protokolo, ne paneo
UDP ne havas konektan starigon, do ne ekzistas SYN kaj neniu konfirmo, kiu permesus al skanilo distingi malfermitan pordon disde filtrita. Provo alvenas kiel izolita datagramo, kaj la servo kontrolas, ĉu ĝi kongruas kun la protokolo, kiun ĝi atendas. Se ne, la paketo estas forĵetata, kaj forĵeto estas la dokumentita konduto, ne misfunkcio.
WireGuard kriptografie validigas siajn manpremajn mesaĝojn kaj ignoras ĉion, kio malsukcesas. OpenVPN kun tls-auth aŭ tls-crypt faras la samon por sia kontrolkanalo. En ambaŭ kazoj arbitra ŝarĝo neniam atingas uzantfrustan etapon, do estas nenio por respondi kaj neniu eraro por redoni.
TCP donus al vi restarigon de fermita pordo. UDP lasas vin en malklareco, kiun skaniloj solvas per presado de malfermita aŭ filtrita anstataŭ diveni.
Kion skanilo povas kaj ne povas konkludi
Skanrezulto estas nur tiom informa, kiom la ŝarĝo, kiun ĝi sendis. Ordigu la eblajn observojn laŭ tio, kion ĉiu el ili efektive subtenas:
| 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 |
Legu la trian vicon kiel la solan pozitivan teston en la listo. Ĝi postulas la veran profilon, la veran ŝlosilon kaj la ĝustan finpunkton, kio estas ĝuste tio, kion ĝenerala skanilo ne havas.
Rigardu ambaŭ finojn de la vojo
Por servilo, kiun vi administras, kaptu sur la interfaco antaŭ ol fari ajnan konkludon, poste demandu la servon, kion ĝi vidis. Ambaŭ komandoj bezonas root sur la pordego:
tcpdump -ni any udp port 51820
tcpdump -ni any udp port 1194
wg show
Se neniun paketon aperas sur la interfaco, la vojo forĵetis ĝin antaŭ ol la servo vidis ion, kaj la sekva halto estas enkursigo kaj filtrado. Se paketoj alvenas sed neniu manpremo kompletiĝas, la servo estas atingebla kaj la malkongruo estas en ŝlosiloj, finpunkta agordo aŭ protokola versio. Tiu komparo respondas la demandon, kiun la skanilo ne povis. Rulu ĝin dum reala kliento provas konektiĝi, ne dum la skanilo ripetas sin.
Ŝanĝu la teston, ne la protekton
La tentiga fuĝvojo estas malŝalti la protekton de la kontrolkanalo, por ke diagnozo ricevu respondon. Tio interŝanĝas realan sekurecan econ kontraŭ pli bela skanrezulto, kaj ĝi estas la malĝusta direkto. Anstataŭe uzu validan profilon el aprobita reto kaj notu la finpunkton kaj la tempon, por ke la komparo estu ripetebla.
La plej utila testo estas diferenca: la sama profilo sur vojo, kiu funkcias, kaj sur la vojo, kiu ne funkcias. Se la funkcianta vojo produktas manpremon kaj la malsukcesanta vojo produktas nenion sur la interfaco, vi lokalizis la rompon sen malfortigi ion ajn.
Senresponda UDP-paketo do pruvas nek ke la servilo estas eksterrete nek ke ĝi estas sekura. Ĝi pruvas, ke ĉi tiu provo, sur ĉi tiu vojo, en ĉi tiu momento, ne estis akceptita.