nftables: vložte pravidlo povolenia VPN pred úchyt dropu
V nftables umiestňujú insert a add pravidlo na opačné strany úchytu. Nájdite drop, vyberte stranu a potom skontrolujte súbor, kým sa sada pravidiel nezmení.
Umiestnite pravidlo povolenia na nesprávne miesto a správa sa ako žiadne pravidlo. V nftables rozhoduje voľba medzi insert a add o tom, na ktorú stranu odkazovaného pravidla nový príkaz dopadne, a úchyt pomenúva pravidlo v živej sade pravidiel, nie jeho číslo riadku. Ak je umiestnenie nesprávne, paket najprv dosiahne drop.
Nižšie uvedené porovnanie používa jedného pevného partnera a jednu výmenu vonkajšieho poslucháča. Je zámerne úzke; nahradenie celého reťazca je iná zmena s iným rizikovým profilom.
Dve umiestnenia, dva rôzne výsledky
insert umiestňuje pravidlo pred odkazované pravidlo. add ho umiestňuje za ním. Ak je odkazované pravidlo koncovým dropom toku, tieto dva príkazy dávajú opačné výsledky, aj keď je text pravidla rovnaký.
Vynechanie umiestnenia má vlastné predvolené správanie, čo je ďalší dôvod nekopírovať príkaz z fóra bez prečítania, k čomu je ukotvený. Ukotvenie je celé rozhodnutie. Zapíšte zamýšľanú stranu skôr, než príkaz napíšete. insert a add sa v súbore líšia jedným slovom.
Umiestnenie je relatívne k pravidlu v konkrétnom reťazci. Presun rovnakého príkazu do iného reťazca alebo inej priority hooku mení to, ktoré pakety vidí, aj keď syntax pravidla vyzerá správne.
Úchyt označuje pravidlo, nie číslo riadku
Úchyt ako 42 je identifikátor v aktuálnom stave sady pravidiel. Nie je to štyridsiate druhé pravidlo a nie je stabilný medzi hosťami, prestavbami ani správcom, ktorý znovu načítava svoju konfiguráciu.
Pred voľbou ukotvenia nájdite reťazec a skutočný koncový drop. Potom potvrďte úchyt na tomto pravidle v tom istom výpise, ktorý ukazuje drop, aby sa číslo a pravidlo čítali spolu. Úchyt prečítaný zo starého výpisu môže už patriť inému pravidlu. Prečítajte ho znova v relácii, ktorá zmenu použije.
iptables --version
nft -a list ruleset
Verzia iptables uvádza, ktorý backend sa používa. Sada pravidiel iptables-nft a samostatne spravovaná natívna tabuľka môžu koexistovať, takže výpis z jedného frontendu nie je automaticky úplný obraz filtrovania. Pred voľbou reťazca skontrolujte oba pohľady.
Nájdite reťazec a pravidlo, ktoré skutočne vykonáva drop
Prečítajte vstupný hook, prioritu reťazca a pravidlo, ktoré odmieta tento tok poslucháča. Tabuľka inet môže niesť obe rodiny adries, ale jednotlivé pravidlo môže stále zodpovedať len IPv4.
Vezmite jedného schváleného partnera, ako príklad použite 198.51.100.25 z dokumentačného rozsahu. Skontrolovaný natívny súbor by mohol umiestniť vonkajšie povolenie pred úchyt 42:
insert rule inet filter input handle 42 iifname "eth0" ip saddr 198.51.100.25 udp dport { 500, 4500 } counter accept
Po kontrole nahraďte rodinu, tabuľku, reťazec, úchyt, vstupné rozhranie a partnera. Príklad používa formu umiestnenia podľa úchytu dokumentovanú pre nft 1.0.9 a patrí do vstupného súboru; citovanie zložených zátvoriek je samostatná otázka, keď sa príkaz zadáva interaktívne.
Udržujte vlastníka konfigurácie jasného. Správca, ktorý znovu zostavuje svoje pravidlá, môže prepísať úpravu za behu a spúšťací skript, ktorý natvrdo kóduje zastaraný úchyt, buď zlyhá, alebo sa pripne k nesprávnemu pravidlu.
Povolenie je vymedzené, drop je koncový
Verdikt povolenia ukončuje vyhodnocovanie na svojej aktuálnej ceste, ale neskôr použiteľný základný reťazec môže paket stále zahodiť. Verdikt dropu je koncový. Preto rastúci počítadlo povolení nie je dôkazom, že tok uspel.
Preskúmajte všetky relevantné priority hookov namiesto jedného reťazca izolovane. Paket môže prejsť vstupným filtrom a napriek tomu byť odmietnutý hookom inej tabuľky s inou prioritou. Vymenujte každý základný reťazec, ktorý tok vidí.
Toto pravidlo pokrýva len výmenu vonkajšieho poslucháča. ESP zapuzdrené v transporte, natívne ESP, partneri IPv6 a dešifrovaná prevádzka vnútri tunela všetky potrebujú vlastné politiky. Nie je to úplný firewall pre VPN lokality.
Skontrolujte súbor a potom overte živý výsledok
Pred použitím spustite na skontrolovanom súbore kontrolu syntaxe a transakcie. Režim kontroly hlási, či nft dokáže zmenu analyzovať a pripraviť; neaplikuje ju a nedokazuje, že iný hook paket povolí. Súbor zostáva návrhom, kým ho vlastník nepoužije:
nft -c -f reviewed-vpn-rule.nft
Použite ju prostredníctvom riadeného procesu vlastníka a zachovajte prístup na obnovu. Ak je pravidlo nesprávne, drop, ktorému ste sa snažili predísť, môže tiež prerezať cestu, ktorou ho opravujete.
Po zmene sledujte nový pokus povoleného partnera a overte, že zdroje mimo schváleného partnera sú stále odmietané. Presuňte trvalé pravidlo do správcu, ktorý vlastní sadu pravidiel, pretože úchyty za behu lokalizujú aktuálne objekty, namiesto toho aby ich identifikovali naprieč štartmi.