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.1

Pravidlo 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ší.

ModelWhat it protectsCostUse when
Narrow port forwardEvery other listener, including the VPNOne rule per serviceFew services, stable ports
Catch-all with reserved portsPorts named in the exception listRule order becomes criticalMany services and disciplined review
Separate public addressControl address fully isolatedProvider must supply the addressHigh-value publication
VPN-only accessNo public entry at allVisitors need the tunnelAdmin 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.

Súvisiace články