Hər VPN müştəri hovuzu üçün bir təyinat diapazonunu bloklayın
Bir nftables qaydası qəbul edilmiş VPN hovuzu üçün təyinat prefiksini şlüzün öz trafikinə toxunmadan rədd edə bilər. Qarmağı və mövqeyi uyğunlaşdırın.
Bir qayda qəbul edilmiş VPN hovuzunu təyinat diapazonundan uzaq saxlayır və şlüzün etdiyi başqa heç nəyə toxunmur. Qayda özü qısadır; onun işləyib-işləmədiyini həll edən hissələr yaşadığı qarmaq və zəncirdəki mövqeyidir. Bu ikisini səhv etsəniz, düzgün görünən və qeyri-sabit davranan firewall alırsınız. Qayda paketi görəndə paketin nə etdiyindən başlayın.
Qayda əslində nəyi uyğunlaşdırır
Qayda eyni anda üç şeyi uyğunlaşdırır: giriş interfeysi, mənbə prefiksi və təyinat prefiksi. Drop tətbiq olunmazdan əvvəl hər üçü doğru olmalıdır və bu onu dar saxlayır. Onu bir ifadə kimi oxumaq üç ayrı siyasət kimi oxumaqdan asandır.
İnterfeys uyğunluğu yönləndirilmiş müştəri trafikini şlüzün öz bağlantılarından ayıran şeydir. O olmasa, yalnız mənbə hovuzunu göstərən qayda şlüzün həmin ünvandan yaratdığı paketlərə də təsir edərdi, əgər belə bir şey olursa. Mənbə prefiksi siyasəti qəbul edilmiş müştərilərlə, təyinat prefiksi isə onu bir diapazonla məhdudlaşdırır. Qaydayı siyahı kimi deyil, kəsişmə kimi oxuyun.
Nəyisə redaktə etməzdən əvvəl üç dəyəri yazın: tunel interfeysinin adı, serverin verdiyi hovuz və rədd etmək istədiyiniz prefiks. Onlardan hər hansı birində yazı səhvi təmiz parse olunan və heç nəyi qorumayan qayda yaradır. Bu üç dəyəri qaydanın yanındakı dəyişiklik qeydində saxlayın.
Qarmaq qaydanın kimə aid olduğunu müəyyən edir
netfilter zənciri qarmağa bağlanır və qarmaq zəncirin hansı paketləri gördüyünü müəyyən edir. forward qarmağı şlüzdən yönləndirilən trafiki görür, müştəridən təyinata gedən trafik də elə budur. Zəncirdəki hər şey başqa auditoriyaya yönəlib.
input qarmağı şlüzün özünə ünvanlanmış trafiki görür, ona görə orada yerləşdirilən qayda tranziti deyil, öz xidmətlərinə girişi idarə edir. output qarmağı şlüzün yaratdığı trafiki görür və bu, müştəri hovuzu siyasətinin ehtiyac duyduğunun əksidir. Zəncir adları ruleset-i yazanın seçdiyi ixtiyari etiketlərdir, ona görə qarmağı addan çıxarmayın. Zəncirin hara bağlandığını yoxlayın, sonra nəyi uyğunlaşdıra biləcəyini fərz edin.
| Hook | Traffic it sees | Right for this policy |
|---|---|---|
| input | Addressed to the gateway | No, that is the host's own services |
| forward | Routed through the gateway | Yes, for client-to-destination traffic |
| output | Generated by the gateway | No, that is the opposite direction |
Bağlantını oxumaq bir sətirlik yoxlamadır və qaydanın paketi heç vaxt görməyən zəncirə düşməsinin qarşısını alır.
Qaydayı geniş qəbuldan əvvəl yerləşdirin
Qaydalar ardıcıllıqla qiymətləndirilir və ilk qərar qazanır. Zəncirdə daha əvvəlki geniş qəbul uyğunlaşdırdığı paketlər üçün qiymətləndirməni bitirir, ona görə sonra əlavə edilən drop onlar üçün heç vaxt işləmir. Düzgün görünən qaydanın təsirsiz qalmasının bütün səbəbi bu sıralama qaydasıdır.
Qaydayı sona əlavə etmək əvəzinə qəbuldan əvvəl daxil edin. Əgər zəncirdə artıq tunel interfeysi üçün ümumi qəbul varsa, yeni qayda ondan əvvəl olmalıdır, əks halda o, sadəcə bəzəkdir. Redaktə etdiyiniz faylı deyil, yaranan sıranı yoxlayın, çünki bir neçə fayldan yığılan ruleset heç birinə uyğun gəlməyə bilər. Sonra hovuzdan gələn test paketi ilə təsdiqləyin.
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
Üçüncü əmr faylı tətbiq etmədən parse edir və sintaksis səhvlərini kəsinti olmadan tutur. Geri qaytarma planı ilə tətbiq edin, çünki forward zəncirində səhv qayda üzərində işlədiyiniz tuneli kəsə bilər.
Mövcud axınlar yeni qaydanızı vecinə almır
Qayda mövcud olmadan əvvəl yaradılmış conntrack qeydi əvvəlki qəbula uyğunlaşmağa davam edir. Buna görə yeni drop bəzən təzə bağlantılar üçün işləyir kimi görünür və yoxlanılan bağlantı üçün heç nə etmir.
Zəncirin yuxarısındakı state uyğunluğunu oxuyun. Əgər o, qaydanızdan əvvəl established və related trafiki qəbul edirsə, artıq davam edən hər axın bağlanana qədər axmağa davam edir. Bu, adətən fövqəladə qayda üçün istədiyiniz davranışdır və ani kəsmə gözlədiyiniz zaman çaşdırıcıdır. Yerləşdirməzdən əvvəl hansı təsiri istədiyinizə qərar verin. Açıq bağlantını təkrar istifadə edən test sizə yanlış hekayə danışacaq.
sudo conntrack -L -s 10.90.0.14 -d 198.51.100.20
sudo nft list ruleset | grep -n -A3 'ct state'
Birinci əmr axının olub-olmadığını, ikincisi isə erkən state qaydasının onu qəbul etməyə davam edib-etmədiyini göstərir. Hər ikisi yalnız oxumaqdır və insident zamanı işlətmək təhlükəsizdir.
Bu qayda nə deyil
Qayda domen qara siyahısı, IPv6 siyasəti və ya ayrıca tətbiq hesabına məhdudiyyət deyil.
Bunların hər biri öz mexanizmini tələb edir. Domen bloklaması adları həll etməlidir, paket filtri bunu etmir. IPv6 trafiki öz uyğunluğunu tələb edir, çünki ip ifadəsi ip6 paketləri haqqında heç nə demir. Tətbiq səviyyəsində məhdudiyyət prefiks uyğunluğuna deyil, xidmətə və ya autentifikasiya olunmuş proxy-yə aiddir. Bu tələbləri ayrı saxlamaq bir dar qaydanın dörd işə cavab verməsinin qarşısını alır.
Bu qaydanın verdiyi müqavilə dəqiqdir: qəbul edilmiş hovuzdan bir təyinat prefiksinə trafik rədd edilir, əlaqəsiz şlüz trafiki isə mövcud siyasətini saxlayır. Bu cümləni qaydanın yanına yazın və növbəti adam onun nə üçün olduğunu biləcək.