Du palaikymo bilietai, kurie atrodo nesusiję, galiausiai turi vieną priežastį. Pirmajame administratorius nori, kad serveris priimtų ryšius tik iš tunelio; antrajame VPN naudotojai turėtų pasiekti vieną vidinį hostą ir nieko daugiau. Abi politikos priklauso FORWARD, ir abi paprastai bandomos INPUT. Rezultatas atrodo kaip užkarda, o elgiasi kaip vietos rezervas.

Kuri grandinė atsako į jūsų klausimą

Paketus, kuriuos VPN klientas siunčia LAN hostui arba toliau į internetą, branduolys persiunčia ir jie vertinami FORWARD grandinėje. INPUT ir OUTPUT mato tik srautą, kuris baigiasi pačiame serveryje arba iš jo kyla. Todėl visko, kas neateina per tun0, atmetimas apsaugo pačius serverio klausytojus ir taip pat nutrauks jūsų SSH sesiją, jei nustatyti srautai nebus pirmiausia leisti. Tai nieko nekeičia dėl to, kur klientams leidžiama eiti.

Pirmiausia įvardykite klausimą: kas gali pasiekti serverį, arba kur gali eiti klientai. Daugumai tinklų reikia abiejų atsakymų, skirtingose grandinėse.

Pirmiausia būsena, tada leidimas, tada atmetimas

Leidžiamųjų sąrašas veikia tik tada, kai konkretus leidimas yra aukščiau bendro atmetimo ir kai grįžtamasis srautas leidžiamas aukščiau abiejų. Įterpkite taisykles aiškiose pozicijose, tada išveskite grandinę su iptables -S FORWARD, kad tvarka būtų matoma, o ne numanoma.

POOL=10.99.0.0/24
iptables -I FORWARD 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD 2 -s "$POOL" -d 172.31.20.15 -p tcp -m multiport --dports 443,3389 -j ACCEPT
iptables -I FORWARD 3 -s "$POOL" -j REJECT

Du duomenys lemia, ar tai atlaikys susidūrimą su tikru srautu. Be būsenos taisyklės atsakymai į ką tik leistus ryšius patys vertinami pagal atmetimą ir išmetami. Neeksliuojama LOG taisyklė gali užpildyti mažą skaidinį pirmą kartą nuskenavus, todėl prieš tęsdami registravimą pridėkite -m limit --limit 10/min. REJECT iš karto grąžina klaidą, o tai patogiau derinant sąrašą; DROP meta tyliai, todėl kiekviena klaida pasirodo kaip laiko limitas. Pasirinkite vieną sąmoningai ir įrašykite pasirinkimą į pakeitimo įrašą.

Persiuntimas ir NAT jau turi veikti

Filtravimas negali įrodyti, kad kelias egzistuoja. Pirmiausia patvirtinkite, kad branduolys apskritai persiunčia, ir padarykite šį nustatymą nuolatiniu, o ne vienkartine komanda apvalkale. Filtras yra paskutinis sluoksnis, ne pirmasis.

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s "$POOL" -o eth0 -j MASQUERADE

Kur priklauso maskavimas, priklauso nuo to, iš kur klientai išeina. Jei jie išeina tuneliu į nuotolinį tinklą, NAT taisyklė dedama toje sąsajoje, o ne WAN sąsajoje. Tada stebėkite skaitiklius: jei POSTROUTING skaitiklis niekada nejuda, o FORWARD leidimų skaičius auga, grįžtamasis kelias sugedęs, o filtras tvarkingas. Toks skaitymas sutaupo popietę, kai nereikia perrašyti taisyklių, kurios niekada nebuvo problema.

Pašto blokas priklauso viena grandine toliau

25 prievado blokavimas INPUT grandinėje sustabdo tik paštą, adresuotą VPN serveriui. Užkrėstas klientas, siunčiantis paštą tuneliu, persiunčiamas, todėl blokas turi stovėti FORWARD šalia 465 ir 587. Jei viena programa teisėtai persiunčia paštą, padėkite jos paskirties tašką ir prievadą virš tos taisyklės.

iptables -I FORWARD 2 -s "$POOL" -p tcp -m multiport --dports 25,465,587 -j REJECT

Leiskite atmetimo skaitikliui veikti savaitę, kol sugriežtinsite ką nors kita. Skaičius, kuris nustoja kilti, yra teisėtas srautas, kurį ką tik sulaužėte.

Perskaitykite atgal, tada įrodykite iš kliento

Skaitykite taisyklių rinkinį taip, kaip jį pateikia branduolys, o ne taip, kaip jį parašė jūsų scenarijus. Pradėkite nuo iptables -S FORWARD, tada NAT lentelė su iptables -t nat -L POSTROUTING -n -v, tada tikrinamo srauto conntrack įrašas. Kol darbas trunka, laikykite atšaukimo komandą arba suplanuotą išvalymą. Kiekvienas iškvietimas reikalauja -w, kitaip du administratoriai susidurs dėl xtables užrakto. Niekas iš to nėra pasirenkama pakeitimų lange.

Užbaikite testuodami iš kliento telkinio viduje ir iš kito jo išorėje. Taisyklė, kuri veikia tik iš tos mašinos, kurioje ją įvedėte, nėra politika.

Susiję straipsniai