Firewall qaydasının dəyişdirilməsi işləmir: qayda sırası və bağlantı vəziyyəti
Dəyişdirilmiş qayda əvvəlki icazənin arxasında qala bilər və ya bağlantı izləməsi tərəfindən ötürülə bilər. İki testi ayırın, təzə axın istifadə edin və geri dönüş yolu saxlayın.
Qaydanı dəyişdiniz, qayda dəstini yenidən yüklədiniz və tunel eynilə əvvəlki kimi davranır. Bu nəticənin iki geniş yayılmış səbəbi var və onlar fərqli testlər tələb edir. Ya yeni qayda paketi artıq qəbul etmiş əvvəlki qaydadan sonra dayanır, ya da izlədiyiniz mübadilə dəyişikliyin heç vaxt yenidən qiymətləndirmədiyi izlənən bağlantıdır. Fayldakı qayda niyyəti ifadə edir; paketin taleyini həll edən onun rastlaşdığı aktiv yoldur. Aşağıdakı yoxlamaları sıra ilə keçin və bunu edərkən geri dönüş yolunu açıq saxlayın.
Qayda sırası və bağlantı vəziyyəti fərqli nasazlıqlardır
Sıralanmış zəncirlər yuxarıdan aşağıya qiymətləndirilir və yekun hökmə çatan ilk qayda həmin zəncir üzrə gedişi bitirir. Geniş icazəni diqqətlə yazılmış bloklama qaydasının üstünə qoyun və bloklama qaydası sənədə çevrilir: o, qayda dəstindədir, sayğacı sıfırdır və heç bir paket ona çatmayacaq. Eyni mətnin başqa zəncirə tətbiqi də heç nə sübut etmir. nftables-də baza zəncirləri prioritetlər üzrə qarmaqlara bağlanır, ona görə bir zəncirdəki icazə başqa qarmaq və ya prioritetdəki zəncirin eyni paketi görməsinə mane olmur.
Bağlantı izləməsi ikinci simptomu yaradır və bayırdan o, tamamilə eyni görünür. Axın vəziyyət cədvəlinə düşdükdən sonra zəncirin yuxarısına yaxın qurulmuş və ya əlaqəli icazəsi sizin yeni qaydanıza baxılmadan geri qayıdır. NAT xəritələmələri də eyni xüsusiyyətə malikdir: çevirmə axın başlayanda sabitləşdi, ona görə dəyişdirilmiş postrouting qaydası artıq işləyən sessiyanı yenidən yazmır. Buna görə dəyişiklik 09:00-da yeni bağlantı üçün işləyir kimi görünür, 08:55-də kimsənin açdığı sessiya üçün isə heç nə etmir kimi görünür.
Bulud təhlükəsizlik qrupları iptables üzərində öyrənənləri tutan üçüncü modeli əlavə edir. Onların giriş qaydaları ilk uyğunluq gedişi deyil, çoxluq kimi qiymətləndirilən icazə siyahısıdır, onlar vəziyyət saxlayır və icazə qaydasının silinməsi artıq izlənən axınları dayandırmır. Belə semantika olmayan platformada ilk uyğunluq semantikasını fərz etmək inamlı, lakin yanlış nəticələrə gətirir.
Dəyişdiyiniz faylı deyil, aktiv qayda dəstini oxuyun
Nüvənin hazırda tətbiq etdiyi ilə başlayın. Heç vaxt tətbiq olunmamış saxlanmış konfiqurasiya təəccüblü sayda dəyişməz davranışı izah edir və onu istisna etmək bir əmrə başa gəlir:
nft list ruleset
iptables-saveSonra soruşun: qaydanız ümumiyyətlə icraya çatırmı? Paket sayğacları buna birbaşa cavab verir və niyyət haqqında hər hansı mülahizədən daha yaxşı cavab verir:
iptables -L FORWARD -v -n --line-numbers
nft list chain inet filter forwardReal test cəhdindən sonra sıfır paketli bloklama qaydası siyasət problemi deyil, mövqe problemidir. Onu köçürmək bir sətirlik dəyişiklikdir və sintaksis ilkin xətanı məhz o yaratmışdı. iptables ilə -I daxil edir, -A isə sona əlavə edir; nftables ilə insert qaydayı zəncirin başına qoyur, add isə sona əlavə edir. Qayda qalib gəlməlidirsə, təsadüfən yüklənmiş sıraya güvənmək əvəzinə bunu açıq deyin.
Axının izlənib-izlənmədiyini sübut edin
Qaydanı günahlandırmazdan əvvəl trafikin ümumiyyətlə izlənən bağlantı olub-olmadığını yoxlayın. Vəziyyət cədvəlindən hamısını tökmək əvəzinə konkret axını soruşun:
conntrack -L -p tcp --dport 1194
conntrack -E -p tcp --dport 1194Siyahı vəziyyəti və qalan fasiləni göstərir və qurulmuş sessiyanı təzə cəhddən belə ayırd edirsiniz; hadisə rejimi yeniləmələri baş verdikcə çap edir, bu da müştərini yenidən bağlayarkən faydalıdır. Əgər axın siz heç nəyə toxunmazdan əvvəl qurulmuş vəziyyətdə varsa, filtr qaydalarına edilən heç bir düzəliş onun taleyini dəyişməyəcək. Bu, firewall-da xəta deyil, vəziyyət saxlayan filtrləmənin müqaviləsidir.
İstehsalat şlüzündə bütün cədvəli boşaltmaq qısa yoluna müqavimət göstərin. conntrack -F mövcuddur və o, həm də maşındakı hər izlənən axını məhv edir, o cümlədən işlədiyiniz idarəetmə sessiyasını və qabığınızı daşıyan tuneli. Ayrı-ayrı qeydləri həqiqətən lazım olanda silmək olar, lakin yeni mənbə portundan təzə axın adətən daha təmiz təcrübədir.
Bəzi yollar izlənmir və onlar əksinə davranır. raw cədvəlində notrack kimi işarələnmiş trafik, normal qarmaqları yan keçən bəzi tunellər və axını iki şlüz arasında bölən asimmetrik marşrutlaşdırma hamısı bir-bir qiymətləndirilən paketlər və ya iki tərəfdə heç vaxt yaradılmayan vəziyyət yaradır. Sayğaclar hər paketdə hərəkət edirsə, sıradan əvvəl belə yoldan şübhələnin.
Geri dönüş yolu ilə təzə axından test edin
Uzaq girişi kəsə biləcək qaydanı test etməzdən əvvəl bərpa yolu yaradın: provayder konsolu, serial konsol, zolaqdan kənar idarəetmə ünvanı və ya qaydanın uyğun gələ bilmədiyi ikinci interfeys. Geri qaytarma taymeri ağlabatan yoldaşdır, çünki sessiyanız testin ortasında ölsə belə əvvəlki qayda dəstini bərpa edəcək.
Sonra vəziyyətin artıq əhatə edə bilmədiyi mübadilə ilə test edin. Müştərini ayırın və yenidən bağlayın ki, yeni beşlik yaransın, və bu baş verərkən hər iki tərəfi izləyin:
tcpdump -ni eth0 'tcp port 1194'
journalctl -k -n 50 --no-pagerTesti hər iki istiqamətdə aparın. Yeni gələn əl sıxışmasını bloklayan qayda cavab yoluna hələ də icazə verə bilər, ya da əksinə, və birtərəfli nəticə bloklamanın yarım işləməsinin adi səbəbidir. Testdən sonra sabit vəziyyəti təsdiqləmək üçün bir dəfə də yenidən bağlanın və qanuni idarəetmə girişinin qaldığını yoxlayın; bir porta uyğun yazılmış qayda nəzərdə tutulandan daha geniş diapazona uyğun gəlmək vərdişinə malikdir.
Məqsədi və mövqeyi qayda ilə birlikdə qeyd edin
Qeydə alınmış məqsədi olmayan qayda heç kimin silməyə cürət etmədiyi qaydadır. Hər bloklama qeydinin yanında onun qoruduğu axını, yaşadığı zənciri və qarmağı, daha geniş icazələrə nisbətən tutmalı olduğu mövqeyi və bunu sübut etmiş testi saxlayın. Altı ay sonra kimsə ətrafdakı qayda dəstini dəyişəndə bu qeyd mövqenin qəsdən olduğuna dair yeganə xəbərdarlıqdır.
Dəyişikliyi bağlamazdan əvvəl dörd şeyi təsdiqləyin: işləyən qayda dəsti fayla uyğundur, yeni qaydanın təzə cəhddən sonra sıfırdan fərqli sayğacları var, əks istiqamət və idarəetmə girişi hələ də işləyir və siz dəyişiklikdən əvvəlki sessiyanın vəziyyətini deyil, sabit vəziyyəti sübut etmək üçün bir dəfə yenidən qoşulmusunuz. Bunlardan hər hansı biri yoxlanmayıbsa, tunel nə edirsə etsin, dəyişiklik bitməyib.