Umístěte pravidlo povolení na špatné místo a chová se jako žádné pravidlo. V nftables rozhoduje volba mezi insert a add o tom, na kterou stranu odkazovaného pravidla nový příkaz dopadne, a identifikátor pojmenovává pravidlo v živé sadě pravidel, nikoli jeho číslo řádku. Spletete-li umístění, paket dorazí nejdřív k zahazování.

Níže uvedené srovnání používá jednoho pevného protějšek a jednu výměnu vnějšího naslouchacího procesu. Je záměrně úzké; nahrazení celého řetězce je jiná změna s jiným rizikovým profilem.

Dvě umístění, dva různé výsledky

insert umisťuje pravidlo před odkazované pravidlo. add ho umisťuje za něj. Pokud je odkazované pravidlo koncovým zahazováním toku, tyto dva příkazy dávají opačné výsledky, i když je text pravidla totožný.

Vynechání umístění má vlastní výchozí chování, což je další důvod nekopírovat příkaz z fóra, aniž byste si přečetli, k čemu je ukotven. Kotva je celé rozhodnutí. Zapište zamýšlenou stranu, než příkaz napíšete. insert a add se v souboru liší jedním slovem.

Umístění je relativní k pravidlu v konkrétním řetězci. Přesun stejného příkazu do jiného řetězce nebo jiné priority hooku mění to, které pakety vidí, i když syntaxe pravidla vypadá správně.

Identifikátor označuje pravidlo, ne číslo řádku

Identifikátor jako 42 je identifikátor v aktuálním stavu sady pravidel. Není to čtyřicáté druhé pravidlo a není stabilní mezi hostiteli, přestavbami ani správcem, který znovu načítá svou konfiguraci.

Před volbou kotvy najděte řetězec a skutečné koncové zahazování. Poté potvrďte identifikátor u tohoto pravidla ve stejném výpisu, který ukazuje zahazování, aby se číslo a pravidlo četly společně. Identifikátor přečtený ze starého výpisu může už patřit jinému pravidlu. Přečtěte ho znovu v relaci, která změnu použije.

iptables --version
nft -a list ruleset

Verze iptables uvádí, který backend se používá. Sada pravidel iptables-nft a samostatně spravovaná nativní tabulka mohou koexistovat, takže výpis z jednoho frontendu není automaticky úplný obraz filtrování. Před volbou řetězce zkontrolujte oba pohledy.

Najděte řetězec a pravidlo, které skutečně zahazuje

Přečtěte vstupní hook, prioritu řetězce a pravidlo, které odmítá tento tok naslouchacího procesu. Tabulka inet může nést obě rodiny adres, ale jednotlivé pravidlo může stále odpovídat jen IPv4.

Vezměte jeden schválený protějšek, jako příklad použijte 198.51.100.25 z dokumentačního rozsahu. Zkontrolovaný nativní soubor by mohl umístit vnější povolení před identifikátor 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, tabulku, řetězec, identifikátor, vstupní rozhraní a protějšek. Příklad používá formu umístění podle identifikátoru dokumentovanou pro nft 1.0.9 a patří do vstupního souboru; citování složených závorek je samostatná otázka, když se příkaz zadává interaktivně.

Udržujte vlastníka konfigurace jasného. Správce, který znovu sestavuje svá pravidla, může přepsat úpravu za běhu a spouštěcí skript, který natvrdo kóduje zastaralý identifikátor, buď selže, nebo se přichytí ke špatnému pravidlu.

Povolení je vymezené, zahazování je koncové

Verdikt povolení ukončuje vyhodnocování na své aktuální cestě, ale pozdější použitelný základní řetězec může paket stále zahodit. Verdikt zahazování je koncový. Proto rostoucí počítadlo povolení není důkazem, že tok uspěl.

Prozkoumejte všechny relevantní priority hooků místo jednoho řetězce izolovaně. Paket může projít vstupním filtrem a přesto být odmítnut hookem jiné tabulky s jinou prioritou. Vyjmenujte každý základní řetězec, který tok vidí.

Toto pravidlo pokrývá jen výměnu vnějšího naslouchacího procesu. ESP zapouzdřené v transportu, nativní ESP, protějšky IPv6 a dešifrovaný provoz uvnitř tunelu všechny potřebují vlastní zásady. Není to úplný firewall pro VPN webu.

Zkontrolujte soubor a poté ověřte živý výsledek

Před použitím spusťte na zkontrolovaném souboru kontrolu syntaxe a transakce. Režim kontroly hlásí, zda nft dokáže změnu analyzovat a připravit; neaplikuje ji a nedokazuje, že jiný hook paket povolí. Soubor zůstává návrhem, dokud ho vlastník nepoužije:

nft -c -f reviewed-vpn-rule.nft

Použijte ji prostřednictvím řízeného procesu vlastníka a zachovejte přístup pro obnovu. Pokud je pravidlo špatné, zahazování, kterému jste se snažili předcházet, může také přerušit cestu, kterou používáte k opravě.

Po změně sledujte nový pokus povoleného protějšku a ověřte, že zdroje mimo schválený protějšek jsou stále odmítány. Přesuňte trvalé pravidlo do správce, který vlastní sadu pravidel, protože identifikátory za běhu lokalizují aktuální objekty, místo aby je identifikovaly napříč starty.

Související články