ESP je IP protokol 50, nie TCP port 50: čo povoliť
Čísla protokolov a čísla portov sú rôzne menné priestory. Pravidlo pre TCP port 50 nepovolí nič a NAT traversal presúva ESP do UDP 4500.
Formuláre firewallu sa pýtajú na TCP port a zrejmá odpoveď je 50. Táto položka nepovolí nič, pretože ESP je IP protokol číslo 50 a čísla protokolov nie sú porty. Oba menné priestory zdieľajú malé celé čísla a nič iné, a chyba zostáva neviditeľná, kým sa IKE neskončí a chránená prevádzka nikdy nepríde.
Dva menné priestory, ktoré zdieľajú malé čísla
IP hlavička nesie pole protokolu, ktoré pomenúva, čo nasleduje: 6 pre TCP, 17 pre UDP, 1 pre ICMP, 50 pre ESP, 51 pre AH. Hlavička TCP alebo UDP nesie čísla portov, ktoré vyberajú proces na cieľovom hostiteľovi. Protokol 50 a TCP port 50 sú nesúvisiace hodnoty, ale dialógové okno ich môže nechať vyzerať zameniteľne.
Preto pravidlo presmerovania portov nedokáže vyjadriť natívny ESP. Neexistuje cieľový port ESP na presmerovanie a zariadenie, ktoré rozumie iba pravidlám pre porty, pre tento paket nemá vôbec žiadny slovník. Správne pravidlo namiesto toho pomenúva IP protokol. Akékoľvek dialógové okno portov je pre tento paket nesprávny nástroj.
Zmatek má aj druhú polovicu. Keď je paket zašifrovaný, všetko vnútri je nepriehľadné, vrátane TCP hlavičky pôvodného spojenia. Firewall, ktorý v takom pakete skúma porty, sa pozerá na vonkajšiu hlavičku, ktorá v natívnom prípade nemá žiadne porty na skúmanie.
Natívne ESP, potom zapuzdrená alternatíva
Natívne ESP sa prenáša priamo ako IP protokol, čo je rovnako efektívne ako nepohodlné. Efektívne je preto, lebo neexistuje žiadna ďalšia hlavička, a nepohodlné preto, lebo žiadne zariadenie vykonávajúce preklad adries a portov ho nedokáže sledovať. NAT traversal existuje práve preto, že paket ESP zabalí do UDP, aby prekladač mal porty na prepísanie.
| Form on the wire | How it is identified | What the firewall must permit |
|---|---|---|
| IKE negotiation | UDP with a destination port | UDP 500, and 4500 once traversal is detected |
| Native ESP | IP protocol 50 in the outer header | The protocol itself, with no port to name |
| ESP inside UDP | UDP 4500 carrying an ESP payload | The UDP port pair, which translation devices can track |
Obe formy sú alternatívne nasadenia toho istého dátového kanála, nie vrstvy jedného. Povolenie natívneho ESP nepovoľuje zapuzdrenú formu a povolenie UDP 4500 nepovoľuje natívnu prevádzku, takže sada pravidiel musí zodpovedať nasadeniu, nie omylom pokrývať oboje.
Aj detekcia je tu dôležitá. Koncové body sa medzi formami rozhodujú počas vyjednávania a prepnutie zvyčajne nastane, keď je medzi nimi zistený NAT. Preto cesta, ktorá sa po nadviazaní tunela zmení, môže prevádzku presunúť do menného priestoru, ktorý vaše pravidlá nikdy nepokrývali.
Prečítajte si, ktorú formu spojenie skutočne používa
Opýtajte sa koncového bodu, namiesto aby ste hádali z firewallu. V Linuxe položka stavu hlási, či asociácia používa UDP zapuzdrenie a ktoré porty sú zapojené. Zachytenie paketov odpovedá na tú istú otázku z vedenia a oboje je rýchlejšie než čítať sadu pravidiel a dúfať.
ip xfrm state | grep -A3 encap
tcpdump -ni any 'ip proto 50 or udp port 4500'
Prvý príkaz ukáže typ zapuzdrenia, keď je NAT traversal v použití, a nič, keď nie je. Druhý ukáže, ktorá z dvoch foriem skutočne prechádza rozhraním, a to ukončí spory o konfiguráciu, ktorá na papieri vyzerá správne.
Protiargument patrí do toho istého kroku. Pravidlo, ktoré hlási nulu zásahov, vám hovorí, že paket k nemu nikdy nedorazil, a to je otázka smerovania alebo selektora, nie firewallu.
Potom potvrďte riadiaci kanál zvlášť. IKE má svoje vlastné porty a svoje vlastné záznamy a dokončené vyjednávanie bez dát je presne to rozdelenie, o ktorom je tento článok.
Napíšte pravidlo v správnom mennom priestore
Pravidlo protokolu a pravidlo portu sú rôzne inštrukcie, takže nástroj musí vyjadriť tú, ktorú máte na mysli. V nftables je zhoda protokolu explicitná a zapuzdrená alternatíva dostane vlastné UDP pravidlo. Držte obe pravidlá vedľa seba, aby bola dvojica pri kontrole viditeľná.
nft add rule inet filter input ip protocol esp accept
nft add rule inet filter input udp dport { 500, 4500 } accept
Nerozširujte ani jedno z pravidiel, aby ste vykompenzovali chybnú diagnózu. Povolenie všetkého pre protokol ESP na každom rozhraní alebo povolenie UDP odvšadiaľ kamkoľvek opraví symptóm a odstráni kontrolu, ktorú ste sa snažili nastaviť. Úzky podporovaný tok takmer vždy stačí, keď je forma známa.
Nakoniec, držte vrstvy správne, keď tunel funguje a aplikácia nie. Pakety prichádzajúce na bránu stále potrebujú preposielanie, spätnú trasu a politiku, ktorá ich prepustí, a nič z toho pravidlo ESP nevyjadruje. Chýbajúci port vysvetľuje konkrétne zlyhanie, nie každé zlyhanie IPsec. Držte opravu pravidla a kontrolu smerovania ako dva oddelené závery.
Zapíšte formu, ktorú ste pozorovali, pravidlo protokolu, ktoré ste pridali, a počítadlo, ktoré ste potom videli. Tri riadky a nasledujúci človek rozozná chybu menného priestoru od chyby smerovania za minútu namiesto popoludnia.