Firewall jurnalında gözləmədiyiniz bir sətir var: ACK paketi, conntrack vəziyyəti NEW, sizin olmayan mənbə ünvanı, hədəf portu açıq. Bunu heç kimin icazə vermədiyi təzə daxil olan bağlantı kimi oxumaq asandır. Sətrin əsl dediyi daha dardır: o paket bu hook-a çatanda izləyicinin uyğun vəziyyəti yox idi və paket ACK daşıyırdı. Bunlar iki fərqli şey haqqında iki faktdır və heç biri tam bir handshake qeydi deyil. Nəticə çıxarmazdan əvvəl keçdiyim sıra budur.

Hökmdən deyil, paketdən başlayın

Şərh etməzdən əvvəl müşahidələri ayırın. TCP bayraqları bu paketi təsvir edir, izləyicinin vəziyyəti həmin hook-da onun nə bildiyini təsvir edir, tutmanız isə yalnız qeyd etdiyiniz pəncərəni təsvir edir.

Bu üçünü qarışdırmaq ACK-ın «provayder kimsəni içəri buraxdı»ya çevrilməsinin yoludur.

NEW hook-da əslində nə deməkdir

iptables conntrack uyğunlaşdırması NEW-ı bağlantı başladan paket, yaxud hər iki istiqamətdə trafik görməmiş bağlantıya aid paket kimi sənədləşdirir. ESTABLISHED izləyicinin hər iki istiqamətdə paket gördüyünü bildirir. Heç bir tərifdə paketin SYN olduğu və ya tarixçəsiz gəldiyi deyilmir.

Axını ortadan izləməyə başlayan izləyici növbəti paketi bildiyinə görə təsnif edir, bu isə heç nə ola bilər. Bu, uzaq hostun niyyəti deyil, izləyicinin yaddaşı haqqında fikirdir.

Boş izləmə ACK sürprizlərinin çoxunu izah edir

Kernel sənədləşdirir nf_conntrack_tcp_loose, bu parametr izləyiciyə başlanğıcını görmədiyi TCP bağlantılarını götürməyə imkan verir. Parametr defolt dəyərində olanda ortadan gələn ACK qurulmuş axın kimi qəbul edilə bilər. Onu söndürün və eyni paket NEW əvəzinə INVALID kimi təsnif olunmağa daha yaxın olar. Hər iki nəticə tətbiqin tarixçəsini deyil, izləyicinin qaydalarını təsvir edir.

Ona görə etiket üzərində nəzəriyyə qurmazdan əvvəl bu parametri yoxlayın.

Darıxdırıcı səbəbləri bu sıra ilə istisna edin

Təqib etdiyim NEW-on-ACK hadisələrinin çoxu bunlardan biri ilə bitdi və hamısını yoxlamaq ucuzdur:

  • conntrack cədvəli təmizləndi və ya izləyici yenidən başladı.
  • Host yenidən yükləndi və ya axın başqa namespace və ya cihaza keçdi.
  • Asimmetrik marşrutlaşdırma SYN-ı tutmadığınız yoldan çıxardı.
  • NAT tuple-ı yenidən yazdı, ona görə qeyd artıq oxuduğunuzla uyğun gəlmir.
  • Tutma gec başladı və başlanğıcı heç görmədi.

Bunların hər biri əvvəlki paketləri izləyicinin görüşündən çıxarır, sonrakıları isə toxunulmaz qoyur. Yenidən başlama və ya cədvəlin təmizlənməsi uptime və jurnallardan təsdiqləmək üçün ən asandır. Asimmetrik marşrutlaşdırma birtərəfli tutma kimi görünür. NAT isə hiyləgərdir, çünki izləyicinin saxladığı tuple jurnalda çap olunan tuple deyil.

Davam etməzdən əvvəl bunlardan hansını və necə istisna etdiyinizi yazın.

Tuple-ı, interfeysi və hook-u oxuyun

conntrack qeydinin açarı ünvanlar, portlar və protokoldur, ona görə hər hansı tərcümə hansı qeydin uyğun gəldiyini dəyişir. İnterfeysi və hook-u da qeyd edin, çünki səhv interfeysdə və ya başqa zəncirdən sonra görünən paket yolun diaqramdakı kimi olmadığını deyir. Hadisə VPN-ə aid olduqda, daxili paketə və ya xarici daşıyıcıya baxdığınızı müəyyən edin. Sonra şlüzün eyni beşlik tuple üçün jurnala yazdığı ilə müqayisə edin.

Bir axının bir-birinə zidd iki görünüşü hər birindən təkbaşına daha çox məlumat verir.

Nə vaxt eskalasiya etməyə dəyər

Əlçatan olan və olmamalı olan bir xidməti axın, ona icazə verən siyasət və hər iki tərəfdən sübutla göstərə bildikdə eskalasiya edin. Bir vəziyyət etiketi və ya bir qismən tutma əsasında provayder qüsuru bildirməyin, çünki o bildiriş indicə oxuduğunuz izahatla bağlanacaq. Xidmət həqiqətən açıqdırsa, həmin sərhədin sahibi onu düzəltməli şəxsdir və səbəb çox güman ki, baq deyil, ötürülmüş port xəritəsi və ya təsadüfi dinləyicidir.

Sonra bir paketin bütöv sessiya kimi görünməsinə imkan verən görünürlük boşluğunu bağlayın.

Əlaqəli məqalələr