Pravidlá preposielajúce všetky porty môžu prehltnúť váš WireGuard listener
Široké pravidlo preposielania môže prehltnúť vlastné WireGuard a SSH listenery brány. Vyberte úzke pravidlá alebo samostatnú verejnú adresu, potom otestujte riadiacu cestu.
Verejná brána už spúšťa WireGuard na UDP 51820, SSH na 22 a jednu aplikáciu, ktorá musí byť dostupná z internetu. Lákavé pravidlo preposiela každý port na peera a vyhlási prácu za hotovú. Na WireGuard bráne môže toto pravidlo zachytiť transport samotného tunela a zamknúť vás mimo stroja, ktorý ho ukončuje. Publikovanie je rozhodnutie o smerovaní s výnimkou pre riadiacu rovinu, nie jeden riadok DNAT.
Verejný vstup alebo vstup cez tunel: vyberte si jedno
Publikovanie služby vytvára nový vstupný bod na internete. Nie je to to isté ako udeliť peerovi členstvo vo VPN, pretože návštevník nikdy nevstúpi do tunela a brána sa stane verejnou tvárou backendu. Tento rozdiel určuje publikum pravidla a jeho certifikát.
Administratívne rozhrania na to miesto patria len zriedka. Stránka správy dosiahnuteľná autorizovanými VPN klientmi drží útočnú plochu vnútri tunela a vyhýba sa vystaveniu prihlasovacieho formulára ľubovoľnému skenovaniu. Verejné koncové body aplikácie stále potrebujú vlastný TLS certifikát, autentifikáciu a obmedzenie rýchlosti; šifrovaný skok WireGuard nechráni úsek návštevníka po bránu.
Ak služba naozaj musí byť verejná, zapíšte názov hostiteľa, certifikát, ktorý ho pokrýva, a rozsahy návštevníkov, ktorí sa k nej majú dostať. Tieto tri fakty neskôr určujú tvar pravidla a politiku filtrovania. Všetko mimo nich je rozšírenie rozsahu na verejnom listenere.
Jeden port dnu, jeden backend von
Použite jeden verejný port a jednu službu backendu. V tomto príklade eth0 nesie verejnú adresu 198.51.100.20, adresa tunela brány je 10.200.0.1 a peer spúšťa aplikáciu na 10.200.0.7. Verejný TCP 9443 sa mapuje na TCP 8443 peera:
iptables -t nat -A PREROUTING -i eth0 -d 198.51.100.20 -p tcp --dport 9443 -j DNAT --to-destination 10.200.0.7:8443
iptables -t nat -A POSTROUTING -o wg0 -d 10.200.0.7 -p tcp --dport 8443 -m conntrack --ctorigdst 198.51.100.20 --ctorigdstport 9443 -j SNAT --to-source 10.200.0.1Pravidlo SNAT zodpovedá preloženému backendu a pôvodnému verejnému cieľu, takže iné spojenie k tej istej službe backendu zostáva mimo tohto mapovania. Skrýva tiež adresu návštevníka pred peerom, a to je kompromis, ktorý robí zo smerovaného návratu so zachovaním zdroja samostatný návrh. Referencia rozšírení iptables dokumentuje oba ciele a ich možnosti porovnávania.
Preposielanie musí byť stále zapnuté a filtrovacia reťaz potrebuje povolenie pre preložený cieľ a port plus nadviazané odpovede. Reťaz FORWARD vidí preložený cieľ po DNAT, takže pravidlo napísané na verejnú adresu nezodpovedá preposielanému paketu. Píšte povolenie na backendovú n-ticu, nie na verejnú.
Peer musí prijať spojenie služby z adresy tunela brány a poslať odpoveď späť cez tunel. Jeho AllowedIPs musí autorizovať zdroj, ktorý skutočne prijíma, čo je pri preklade zdroja adresa tunela brány, a široký záznam 0.0.0.0/0 na každom peere pre tento návrh nie je potrebný. Návratovú prevádzku zhadzuje peer, ktorého zoznam tú adresu vynecháva, alebo návrh so zachovaním zdroja, ktorý namiesto toho preposiela adresu samotného návštevníka, preto kontrolujte zdroj, ktorý peer naozaj vidí, nie ten vo vašom pravidle.
Držte vlastné listenery brány mimo pravidla
Nahraďte porovnanie portu pravidlom pokrývajúcim každý cieľ TCP a UDP a vlastný socket WireGuard brány doň spadne. Preklad cieľa nastáva predtým, než sa stroj rozhodne, že paket je lokálny, takže UDP 51820 môže skončiť u peera namiesto v procese, ktorý drží každé peer spojenie. Pravidlo sa načíta úspešne a tunel zomrie, čo je porucha ťažko čitateľná zo strany peera.
SSH, monitorovacie agenti a každá ďalšia služba hostovaná na bráne majú rovnakú expozíciu. Pravidlo preposielajúce všetko nerozlišuje riadiacu rovinu od publikovanej aplikácie a prvé reštartovanie po zmene je chvíľa, keď je uzamknutie zjavné. Pravidlo zachytávajúce všetko nevaruje pred službou, ktorú potichu preberá. Zistíte to, keď zlyhá ďalšie spojenie.
Ak je široké preposielanie naozaj potrebné, rezervujte riadiace porty pred pravidlom zachytávajúcim všetko alebo použite samostatnú verejnú adresu na publikovanie. Druhá možnosť je čistejšia, pretože riadiaca adresa si zachováva vlastnú politiku, ale poskytovateľ musí tú adresu doručiť; pridanie záznamu DNS ju nepridelí.
Široké preposielanie TCP a UDP tiež nie sú všetky protokoly. ICMP, IPv6, spätná väzba path-MTU a vonkajší transport VPN potrebujú vlastnú politiku a pravidlo pokrývajúce TCP a UDP necháva tie prípady predvolenej reťazi.
Vyberte model predtým, než napíšete pravidlá
Štyri tvary pokrývajú väčšinu publikovaní z brány a voľba závisí od toho, koľko služieb spúšťate a koľko rizika v riadiacej rovine znesiete. Tabuľka nižšie ich zoraďuje od najužšieho po najširší.
| Model | What it protects | Cost | Use when |
|---|---|---|---|
| Narrow port forward | Every other listener, including the VPN | One rule per service | Few services, stable ports |
| Catch-all with reserved ports | Ports named in the exception list | Rule order becomes critical | Many services and disciplined review |
| Separate public address | Control address fully isolated | Provider must supply the address | High-value publication |
| VPN-only access | No public entry at all | Visitors need the tunnel | Admin interfaces and internal tools |
Začnite s úzkym modelom, aj keď očakávate viac služieb neskôr. Najľahšie sa audituje a premeniť súbor úzkych pravidiel na posúdené pravidlo zachytávajúce všetko je jednoduchšie než zisťovať, ktorý listener zachytilo široké pravidlo. Nech vyberiete akýkoľvek model, držte pravidlá u vlastníka firewallu. Aplikovanie riadkov iptables vedľa konfigurácie UFW alebo nftables, ktorá spravuje tie isté reťaze, vytvára politiku, ktorá sa mení podľa poradia spúšťania.
Dokážte publikovanie aj riadiacu cestu
Testujte z autorizovaného externého klienta s použitím schváleného názvu hostiteľa a certifikátu platného preň. Potvrďte, ktorý backend odpovedal, potom overte, že nesúvisiace verejné porty zostávajú odmietnuté. Vypnutá kontrola certifikátu nie je úspešný HTTPS test a spojenie, ktoré dorazí k nesprávnemu backendu, je horšie než neúspešné.
Potom overte samotnú bránu: pripojte peera WireGuard, otvorte reláciu SSH a potvrďte, že monitorovanie stále hlási. Publikovaná služba môže fungovať, kým je riadiaca rovina pokazená, preto obe kontroly patria do toho istého okna zmien. Reštartujte raz, aby ste dokázali, že pravidlá sa znova aplikujú v očakávanom poradí, potom odoberte publikovanie a potvrďte, že odstránenie naozaj zodpovedá pridanému. Veľký súbor pridaní pri štarte s neúplným uprataním je spôsob, akým sa dočasný test stane trvalým otvorom.