Правила прослеђивања свих портова могу прогутати ваш WireGuard слушалац
Широко правило прослеђивања може прогутати властите WireGuard и SSH слушаоце гејта. Одаберите уска правила или одвојену јавну адресу, па тестирајте контролну путању.
Јавни гејт већ покреће WireGuard на UDP 51820, SSH на 22 и једну апликацију која мора бити доступна с интернета. Примамљиво правило прослеђује сваки порт пиру и проглашава посао завршеним. На WireGuard гејту такво правило може ухватити властити транспорт тунела и закључати вас из машине која га терминира. Објава је одлука о рутирању с изузетком за контролну раван, а не једна DNAT линија.
Јавни улаз, улаз кроз тунел: одаберите једно
Објава услуге ствара нову улазну тачку на интернету. То није исто као давање VPN чланства пиру, јер посетилац никада не улази у тунел и гејт постаје јавно лице бекенда. Та разлика одређује публику правила и његов сертификат.
Административни интерфејси ретко припадају на то место. Администраторска страница до које долазе овлаштени VPN клијенти држи нападну површину унутар тунела и избегава излагање пријавне форме произвољном скенирању. Јавне апликацијске крајње тачке и даље требају властити TLS сертификат, аутентификацију и ограничавање брзине; шифровани WireGuard скок не штити деоницу посетиоца до гејта.
Ако услуга заиста мора бити јавна, запишите име хоста, сертификат који га покрива и распоне посетилаца који треба да је досегну. Те три чињенице касније одређују облик правила и политику филтрирања. Све изван њих је ширење обима на јавном слушаоцу.
Један порт унутра, један бекенд ван
Користите један јавни порт и једну бекенд услугу. У овом примеру eth0 носи јавну адресу 198.51.100.20, адреса тунела гејта је 10.200.0.1, а пир покреће апликацију на 10.200.0.7. Јавни TCP 9443 се пресликава на 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.1SNAT правило се поклапа с преведеним бекендом и оригиналним јавним одредиштем, па друга конекција на исту бекенд услугу остаје изван овог пресликавања. Оно такође скрива адресу посетиоца од пира, а то је компромис због којег је рутирани повратак са очувањем извора засебан дизајн. Референца за iptables екстензије документује оба циља и њихове опције поклапања.
Прослеђивање и даље треба бити омогућено, а ланац филтера треба дозволу за преведено одредиште и порт плус успостављене одговоре. FORWARD ланац види преведено одредиште након DNAT-а, па правило написано према јавној адреси не поклапа се с прослеђеним пакетом. Дозволу пишите према бекенд туплеу, не према јавном.
Пеер мора прихватити конекцију услуге с адресе тунела гејта и послати одговор натраг кроз тунел. Његов AllowedIPs мора одобрити извор који заиста прима, а при превођењу извора то је адреса тунела гејта, и широк унос 0.0.0.0/0 на сваком пиру није потребан за овај дизајн. Повратни саобраћај обара пир чија листа изоставља ту адресу, или дизајн са очувањем извора који прослеђује властиту адресу посетиоца, зато проверите извор који пир заиста види, а не онај у вашем правилу.
Држите властите слушаоце гејта изван правила
Замените поклапање порта правилом које покрива свако TCP и UDP одредиште, и властити WireGuard соцкет гејта пада унутар њега. Превођење одредишта се дешава пре него машина одлучи да је пакет локални, па UDP 51820 може завршити на пиру уместо на процесу који држи сваку пир конекцију. Правило се успешно учита и тунел умре, што је квар који је тешко прочитати с пир стране.
SSH, мониторинг агенти и свака друга услуга хостована на гејту имају исту изложеност. Правило које прослеђује све не разликује контролну раван од објављене апликације, а први ребоот након промене је тренутак када закључавање постаје очигледно. Catch-all не упозорава на услугу коју тихо преузима. Откријете га када следећа конекција не успе.
Ако је широко прослеђивање заиста потребно, резервишите контролне портове пре цатцх-алла или користите одвојену јавну адресу за објаву. Друга опција је чистија јер контролна адреса задржава властиту политику, али провајдер мора доставити ту адресу; додавање DNS записа не додељује је.
Широко TCP и UDP прослеђивање такође нису сви протоколи. ICMP, IPv6, повратна информација о MTU путање и вањски VPN транспорт требају властиту политику, а правило које покрива TCP и UDP оставља те случајеве заданом ланцу.
Одаберите модел пре писања правила
Четири облика покривају већину гејт објава, а избор зависи од тога колико услуга покрећете и колико ризика за контролну раван можете поднети. Табела испод их пореди од најужег до најширег.
| 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 |
Почните с уским моделом чак и ако касније очекујете више услуга. Њега је најлакше ревидирати, а претварање скупа уских правила у прегледани catch-all једноставније је од откривања који је слушалац широко правило ухватило. Који год модел одабрали, држите правила код власника фиреwалла. Примена iptables линија поред UFW или nftables конфигурације која такође управља истим ланцима ствара политику која се мења зависно од реда подизања.
Докажите и објаву и контролну путању
Тестирајте с овлаштеног вањског клијента користећи одобрено име хоста и сертификат ваљан за њега. Потврдите који бекенд је одговорио, затим проверите да неповезани јавни портови остају одбијени. Онемогућена провера сертификата није успешан HTTPS тест, а конекција која стиже на погрешан бекенд гора је од неуспеле.
Након тога проверите сам гејт: повежите WireGuard пир, отворите SSH сесију и потврдите да мониторинг још извештава. Објављена услуга може радити док је контролна раван покварена, па обје провере припадају истом прозору промена. Рестартујте једном да докажете да се правила поново примењују у очекиваном реду, затим уклоните објаву и потврдите да уклањање заиста одговара додавању. Велики скуп додавања при подизању с непотпуним уклањањем је начин на који привремени тест постаје трајно отварање.