Eno pravilo lahko drži dovoljeni skupek VPN stran od ciljnega območja, ne da bi motilo kar koli drugega, kar počne prehod. Pravilo samo je kratko; o tem, ali bo delovalo, odločata kavelj, v katerem živi, in njegov položaj v verigi. Če se pri teh dveh zmotite, dobite požarni zid, ki je videti pravilen in se obnaša nedosledno. Začnite s tem, kaj počne paket, ko ga pravilo vidi.

Kaj pravilo dejansko ujame

Pravilo hkrati ujame tri stvari: vhodni vmesnik, predpono vira in ciljno predpono. Vse tri morajo biti resnične, preden se uporabi drop, in prav to ga drži ozkega. Brati ga kot en izraz je lažje kot kot tri ločene politike.

Ujemanje vmesnika je tisto, kar razlikuje posredovani odjemalčev promet od lastnih povezav prehoda. Brez tega bi pravilo, ki bi navajalo samo skupek vira, prizadelo tudi pakete, ki jih prehod sam ustvari s tega naslova, če se to kdaj zgodi. Predpona vira omejuje politiko na dovoljene odjemalce, ciljna predpona pa na eno območje. Berite pravilo kot presek in ne kot seznam.

Zapišite tri vrednosti, preden karkoli spremenite: ime tunelskega vmesnika, skupek, ki ga strežnik dodeljuje, in predpono, ki jo nameravate zavrniti. Tipkarska napaka v kateri koli od njih ustvari pravilo, ki se čisto razčleni in ničesar ne zaščiti. Te tri vrednosti imejte v zapisu o spremembi ob pravilu.

Kavelj odloči, na koga se pravilo nanaša

Veriga netfilter je pritrjena na kavelj, in kavelj odloči, katere pakete veriga sploh vidi. Kavelj forward vidi promet, usmerjen skozi prehod, in to je promet od odjemalca do cilja. Vse drugo v verigi je namenjeno drugemu občinstvu.

Kavelj input vidi promet, naslovljen na sam prehod, zato pravilo, nameščeno tam, ureja dostop do njegovih lastnih storitev in ne tranzita. Kavelj output vidi promet, ki ga prehod ustvari sam, kar je nasprotje tega, kar potrebuje politika skupka odjemalcev. Imena verig so poljubne oznake, ki jih je izbral pisec nabora pravil, zato kavlja ne sklepajte iz imena. Preverite, kam je veriga pritrjena, preden domnevate, kaj lahko ujame.

KaveljPromet, ki ga vidiPrav za to politiko
inputNaslovljen na prehodNe, to so storitve gostitelja samega
forwardUsmerjen skozi prehodDa, za promet od odjemalca do cilja
outputUstvari ga prehodNe, to je nasprotna smer

Branje pritrditve je enovrstično preverjanje, ki prepreči, da bi pravilo pristalo v verigi, ki paketa nikoli ne vidi.

Pravilo postavite pred široki accept

Pravila se ocenjujejo po vrsti in prva razsodba zmaga. Široki accept prej v verigi konča ocenjevanje za pakete, ki jih ujame, zato se drop, dodan pozneje, zanje nikoli ne izvede. To pravilo vrstnega reda je ves razlog, da pravilno videče pravilo morda nima učinka.

Vstavite pravilo pred accept, namesto da bi ga dodali na konec. Če veriga že vsebuje splošni accept za tunelski vmesnik, mora novo pravilo stati pred njim, sicer je le okras. Preverite nastali vrstni red in ne datoteke, ki ste jo uredili, ker nabor pravil, sestavljen iz več datotek, morda ne ustreza nobeni od njih. Nato potrdite s preskusnim paketom iz skupka.

sudo nft list chain inet filter forward
sudo nft insert rule inet filter forward iifname "tun0" ip saddr 10.90.0.0/24 ip daddr 198.51.100.0/24 drop
sudo nft -c -f /etc/nftables.conf

Tretji ukaz razčleni datoteko, ne da bi jo uporabil, in ujame skladenjske napake, preden postanejo izpad. Uporabite ga z načrtom za razveljavitev, ker lahko napačno pravilo v verigi forward prereže tunel, prek katerega delate.

Obstoječi tokovi se ne menijo za vaše novo pravilo

Vnos conntrack, ustvarjen pred obstojem pravila, še naprej ustreza prejšnjemu acceptu. Zato se novi drop včasih zdi, da deluje za nove povezave, za tisto, ki se preskuša, pa ne stori ničesar.

Preberite ujemanje stanja na vrhu verige. Če sprejema promet established in related pred vašim pravilom, vsak že potekajoči tok teče naprej, dokler se ne zapre. Običajno je to vedenje, ki ga želite pri zasilnem pravilu, in je zmedeno, ko pričakujete takojšen odrez. Pred uvedbo se odločite, kakšen učinek želite. Preskus, ki znova uporabi odprto povezavo, vam bo povedal napačno zgodbo.

sudo conntrack -L -s 10.90.0.14 -d 198.51.100.20
sudo nft list ruleset | grep -n -A3 'ct state'

Prvi ukaz pokaže, ali tok obstaja, drugi pa, ali ga zgodnje pravilo stanja še sprejema. Oba sta samo za branje in varna med incidentom.

Kaj to pravilo ni

Pravilo ni črni seznam domen, politika IPv6 ali omejitev na posamezen račun aplikacije.

Vsaka od teh potrebuje svoj mehanizem. Blokiranje domene mora razrešiti imena, česar paketni filter ne počne. Promet IPv6 potrebuje svoje ujemanje, ker izraz ip ne pove ničesar o paketih ip6. Omejitev na ravni aplikacije pripada storitvi ali overjenemu posredniku, ne ujemanju predpone. Prav ločevanje teh zahtev preprečuje, da bi od enega ozkega pravila zahtevali štiri opravila.

Pogodba, ki jo daje to pravilo, je natančna: promet iz dovoljenega skupka na eno ciljno predpono je zavrnjen, medtem ko nepovezan promet prehoda ohrani svojo obstoječo politiko. Zapišite ta stavek ob pravilu in naslednja oseba bo vedela, čemu je bilo namenjeno.

Sorodni članki