Publiska vārteja jau darbojas ar WireGuard uz UDP 51820, SSH uz 22 un vienu lietojumprogrammu, kurai jābūt sasniedzamai no interneta. Vilinošais noteikums pārsūta katru portu uz peeru un pasludina darbu pabeigtu. WireGuard vārtejā šis noteikums var satvert paša tuneļa transportu un aizslēgt jūs ārpus mašīnas, kas to pabeidz. Publikācija ir maršrutēšanas lēmums ar vadības plaknes izņēmumu, nevis viena DNAT rinda.

Publiska ieeja vai ieeja pa tuneli: izvēlieties vienu

Pakalpojuma publicēšana rada jaunu ieejas punktu internetā. Tas nav tas pats, kas piešķirt peeram VPN dalību, jo apmeklētājs nekad neieiet tunelī un vārteja kļūst par aizmugures publisko seju. Šī atšķirība nosaka noteikuma auditoriju un tā sertifikātu.

Administratīvās saskarnes reti pieder šai vietai. Administrācijas lapa, ko sasniedz autorizēti VPN klienti, notur uzbrukuma virsmu tuneļa iekšpusē un izvairās pakļaut pieteikšanās veidlapu patvaļīgai skenēšanai. Publiskajiem lietojumprogrammas galapunktiem joprojām vajag savu TLS sertifikātu, autentifikāciju un ātruma ierobežošanu; šifrētais WireGuard lēciens neaizsargā apmeklētāja posmu līdz vārtejai.

Ja pakalpojumam tiešām jābūt publiskam, pierakstiet resursdatora nosaukumu, sertifikātu, kas to aptver, un apmeklētāju diapazonus, kuriem tas jāsasniedz. Šie trīs fakti vēlāk nosaka noteikuma formu un filtrēšanas politiku. Viss ārpus tiem ir tvēruma paplašināšana publiskā klausītājā.

Viens ports iekšā, viens aizmugures mezgls ārā

Izmantojiet vienu publisku portu un vienu aizmugures pakalpojumu. Šajā piemērā eth0 nes publisko adresi 198.51.100.20, vārtejas tuneļa adrese ir 10.200.0.1, un peers izpilda lietojumprogrammu uz 10.200.0.7. Publiskais TCP 9443 tiek kartēts uz peera TCP 8443:

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 noteikums atbilst pārtulkotajam aizmugures mezglam un sākotnējam publiskajam galamērķim, tāpēc cits savienojums ar to pašu aizmugures pakalpojumu paliek ārpus šīs kartēšanas. Tas arī slēpj apmeklētāja adresi no peera, un tas ir kompromiss, kura dēļ maršrutēta atgriešanās ar avota saglabāšanu kļūst par atsevišķu dizainu. iptables paplašinājumu uzziņa dokumentē abus mērķus un to atbilstības opcijas.

Pārsūtīšanai joprojām jābūt iespējotai, un filtra ķēdei vajag atļauju pārtulkotajam galamērķim un portam plus izveidotajām atbildēm. FORWARD ķēde redz pārtulkoto galamērķi pēc DNAT, tāpēc noteikums, kas rakstīts pret publisko adresi, neatbilst pārsūtītajai paketei. Rakstiet atļauju pret aizmugures mezgla kortežu, nevis publisko.

Peeram jāpieņem pakalpojuma savienojums no vārtejas tuneļa adreses un jānosūta atbilde atpakaļ pa tuneli. Tā AllowedIPs jāautorizē avots, ko tas faktiski saņem, kas avota tulkošanā ir vārtejas tuneļa adrese, un plašs 0.0.0.0/0 ieraksts katrā peerā šim dizainam nav vajadzīgs. Atgriešanās trafiku nomet peers, kura sarakstā šīs adreses nav, vai dizains ar avota saglabāšanu, kas tā vietā pārsūta paša apmeklētāja adresi, tāpēc pārbaudiet avotu, ko peers faktiski redz, nevis to, kas ir jūsu noteikumā.

Turiet pašas vārtejas klausītājus ārpus noteikuma

Nomainiet porta atbilsmi ar noteikumu, kas aptver katru TCP un UDP galamērķi, un pašas vārtejas WireGuard ligzda tajā iekrīt. Galamērķa tulkošana notiek pirms mašīna nolemj, ka pakete ir lokāla, tāpēc UDP 51820 var nonākt pie peera, nevis pie procesa, kas tur katru peera savienojumu. Noteikums ielādējas veiksmīgi un tunelis mirst, un tas ir bojājums, ko no peera puses ir grūti nolasīt.

SSH, uzraudzības aģenti un jebkurš cits vārtejā mitināts pakalpojums ir pakļauts tāpat. Noteikums, kas pārsūta visu, neatšķir vadības plakni no publicētās lietojumprogrammas, un pirmā restartēšana pēc izmaiņām ir brīdis, kad bloķēšana kļūst acīmredzama. Noteikums, kas satver visu, nebrīdina par pakalpojumu, ko tas klusi pārņem. Jūs to uzzināsiet, kad neizdosies nākamais savienojums.

Ja plaša pārsūtīšana tiešām ir vajadzīga, rezervējiet vadības portus pirms noteikuma, kas satver visu, vai izmantojiet atsevišķu publisku adresi publikācijai. Otrais variants ir tīrāks, jo vadības adrese saglabā savu politiku, bet pakalpojumu sniedzējam šī adrese jāpiegādā; DNS ieraksta pievienošana to nepiešķir.

Plaša TCP un UDP pārsūtīšana arī nav visi protokoli. ICMP, IPv6, path-MTU atgriezeniskā saite un ārējais VPN transports prasa savu politiku, un noteikums, kas aptver TCP un UDP, šos gadījumus atstāj noklusējuma ķēdei.

Izvēlieties modeli pirms noteikumu rakstīšanas

Četras formas aptver lielāko daļu publikāciju no vārtejas, un izvēle ir atkarīga no tā, cik pakalpojumus jūs izpildāt un cik lielu vadības plaknes risku varat pieļaut. Tabulā zemāk tās sakārtotas no šaurākās līdz plašākajai.

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

Sāciet ar šauro modeli, pat ja gaidāt vairāk pakalpojumu vēlāk. To ir visvieglāk auditēt, un šauru noteikumu kopumu pārveidot par pārskatītu noteikumu, kas satver visu, ir vienkāršāk nekā noskaidrot, kuru klausītāju satvēra plašs noteikums. Lai kādu modeli izvēlētos, turiet noteikumus pie ugunsmūra īpašnieka. iptables rindu piemērošana blakus UFW vai nftables konfigurācijai, kas pārvalda tās pašas ķēdes, rada politiku, kas mainās atkarībā no palaišanas secības.

Pierādiet gan publikāciju, gan vadības ceļu

Pārbaudiet no autorizēta ārēja klienta, izmantojot apstiprināto resursdatora nosaukumu un tam derīgu sertifikātu. Apstipriniet, kurš aizmugures mezgls atbildēja, pēc tam pārbaudiet, ka nesaistīti publiskie porti joprojām tiek atteikti. Izslēgta sertifikāta pārbaude nav nokārtots HTTPS tests, un savienojums, kas nonāk pie nepareizā aizmugures mezgla, ir sliktāks par neizdevušos.

Pēc tam pārbaudiet pašu vārteju: pievienojiet WireGuard peeru, atveriet SSH sesiju un apstipriniet, ka uzraudzība joprojām ziņo. Publicētais pakalpojums var darboties, kamēr vadības plakne ir salauzta, tāpēc abas pārbaudes pieder vienam un tam pašam izmaiņu logam. Pārstartējiet vienreiz, lai pierādītu, ka noteikumi tiek lietoti no jauna gaidītajā secībā, pēc tam noņemiet publikāciju un apstipriniet, ka noņemšana tiešām atbilst pievienošanai. Liels pievienojumu kopums palaišanas laikā ar nepilnīgu uzkopšanu ir veids, kā pagaidu tests kļūst par pastāvīgu caurumu.

Saistītie raksti