Javni gejt već pokreće WireGuard na UDP 51820, SSH na 22 i jednu aplikaciju koja mora biti dostupna s interneta. Primamljivo pravilo prosljeđuje svaki port peeru i proglašava posao završenim. Na WireGuard gejtu takvo pravilo može uhvatiti vlastiti transport tunela i zaključati vas iz mašine koja ga terminira. Objava je odluka o rutiranju s izuzetkom za kontrolnu ravan, a ne jedna DNAT linija.

Javni ulaz, ulaz kroz tunel: odaberite jedno

Objava usluge stvara novu ulaznu tačku na internetu. To nije isto kao davanje VPN članstva peeru, jer posjetilac nikada ne ulazi u tunel i gejt postaje javno lice backenda. Ta razlika određuje publiku pravila i njegov certifikat.

Administrativni interfejsi rijetko pripadaju na to mjesto. Administratorska stranica do koje dolaze ovlašteni VPN klijenti drži napadnu površinu unutar tunela i izbjegava izlaganje prijavne forme proizvoljnom skeniranju. Javne aplikacijske krajnje tačke i dalje trebaju vlastiti TLS certifikat, autentifikaciju i ograničavanje brzine; šifrovani WireGuard skok ne štiti dionicu posjetioca do gejta.

Ako usluga zaista mora biti javna, zapišite ime hosta, certifikat koji ga pokriva i raspone posjetilaca koji treba da je dosegnu. Te tri činjenice kasnije određuju oblik pravila i politiku filtriranja. Sve izvan njih je širenje obima na javnom slušaocu.

Jedan port unutra, jedan backend van

Koristite jedan javni port i jednu backend uslugu. U ovom primjeru eth0 nosi javnu adresu 198.51.100.20, adresa tunela gejta je 10.200.0.1, a peer pokreće aplikaciju na 10.200.0.7. Javni TCP 9443 se preslikava 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

SNAT pravilo se poklapa s prevedenim backendom i originalnim javnim odredištem, pa druga konekcija na istu backend uslugu ostaje izvan ovog preslikavanja. Ono takođe skriva adresu posjetioca od peera, a to je kompromis zbog kojeg je rutirani povratak sa očuvanjem izvora zaseban dizajn. Referenca za iptables ekstenzije dokumentuje oba cilja i njihove opcije poklapanja.

Prosljeđivanje i dalje treba biti omogućeno, a lanac filtera treba dozvolu za prevedeno odredište i port plus uspostavljene odgovore. FORWARD lanac vidi prevedeno odredište nakon DNAT-a, pa pravilo napisano prema javnoj adresi ne poklapa se s proslijeđenim paketom. Dozvolu pišite prema backend tupleu, ne prema javnom.

Peer mora prihvatiti konekciju usluge s adrese tunela gejta i poslati odgovor natrag kroz tunel. Njegov AllowedIPs mora odobriti izvor koji zaista prima, a pri prevođenju izvora to je adresa tunela gejta, i širok unos 0.0.0.0/0 na svakom peeru nije potreban za ovaj dizajn. Povratni saobraćaj obara peer čija lista izostavlja tu adresu, ili dizajn sa očuvanjem izvora koji prosljeđuje vlastitu adresu posjetioca, zato provjerite izvor koji peer zaista vidi, a ne onaj u vašem pravilu.

Držite vlastite slušaoce gejta izvan pravila

Zamijenite poklapanje porta pravilom koje pokriva svako TCP i UDP odredište, i vlastiti WireGuard socket gejta pada unutar njega. Prevođenje odredišta se dešava prije nego mašina odluči da je paket lokalni, pa UDP 51820 može završiti na peeru umjesto na procesu koji drži svaku peer konekciju. Pravilo se uspješno učita i tunel umre, što je kvar koji je teško pročitati s peer strane.

SSH, monitoring agenti i svaka druga usluga hostovana na gejtu imaju istu izloženost. Pravilo koje prosljeđuje sve ne razlikuje kontrolnu ravan od objavljene aplikacije, a prvi reboot nakon promjene je trenutak kada zaključavanje postaje očigledno. Catch-all ne upozorava na uslugu koju tiho preuzima. Otkrijete ga kada sljedeća konekcija ne uspije.

Ako je široko prosljeđivanje zaista potrebno, rezervišite kontrolne portove prije catch-alla ili koristite odvojenu javnu adresu za objavu. Druga opcija je čistija jer kontrolna adresa zadržava vlastitu politiku, ali provajder mora dostaviti tu adresu; dodavanje DNS zapisa ne dodjeljuje je.

Široko TCP i UDP prosljeđivanje takođe nisu svi protokoli. ICMP, IPv6, povratna informacija o MTU putanje i vanjski VPN transport trebaju vlastitu politiku, a pravilo koje pokriva TCP i UDP ostavlja te slučajeve zadanom lancu.

Odaberite model prije pisanja pravila

Četiri oblika pokrivaju većinu gejt objava, a izbor zavisi od toga koliko usluga pokrećete i koliko rizika za kontrolnu ravan možete podnijeti. Tabela ispod ih poredi od najužeg do najšireg.

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

Počnite s uskim modelom čak i ako kasnije očekujete više usluga. Njega je najlakše revidirati, a pretvaranje skupa uskih pravila u pregledani catch-all jednostavnije je od otkrivanja koji je slušalac široko pravilo uhvatilo. Koji god model odabrali, držite pravila kod vlasnika firewalla. Primjena iptables linija pored UFW ili nftables konfiguracije koja takođe upravlja istim lancima stvara politiku koja se mijenja zavisno od reda podizanja.

Dokažite i objavu i kontrolnu putanju

Testirajte s ovlaštenog vanjskog klijenta koristeći odobreno ime hosta i certifikat valjan za njega. Potvrdite koji backend je odgovorio, zatim provjerite da nepovezani javni portovi ostaju odbijeni. Onemogućena provjera certifikata nije uspješan HTTPS test, a konekcija koja stiže na pogrešan backend gora je od neuspjele.

Nakon toga provjerite sam gejt: povežite WireGuard peer, otvorite SSH sesiju i potvrdite da monitoring još izvještava. Objavljena usluga može raditi dok je kontrolna ravan pokvarena, pa obje provjere pripadaju istom prozoru promjena. Restartujte jednom da dokažete da se pravila ponovo primjenjuju u očekivanom redu, zatim uklonite objavu i potvrdite da uklanjanje zaista odgovara dodavanju. Veliki skup dodavanja pri podizanju s nepotpunim uklanjanjem je način na koji privremeni test postaje trajno otvaranje.

Povezani članci