Ders 08 / 16
Paket Çözümleme Araçları
Yakalama filtresi tek bir kaldıraçtır ve iki ucundan da kaybettirir: doksan sekiz akışlık bir pencerede en dar filtre 91 akışı hiç görmez ve 22 ağır olayın 21'ini kaçırır, süzgeçsiz yakalama ise 776 196 baytı tampona sığmadığı için düşürür.
İçindekiler
Önceki iki ders de aygıtın kendi anlattığına dayanıyordu. Akış kaydını aygıt üretiyor, sorguya aygıt yanıt veriyor, bildirimi aygıt gönderiyordu. Aygıtın hiç raporlamadığı bir davranış varsa onu aygıta sorarak öğrenmenin yolu yoktur.
Bu ders kaynağı değiştirir ve hattan geçen baytın kendisine bakar. Bir noktaya konan çözümleyici, oradan geçen paketleri kopyalar ve kaydeder. Kopyalama sınırsız değildir: hangi paketlerin kopyalanacağını bir yakalama filtresi (capture filter) seçer ve kopyalar sınırlı bir tampona yazılır. Filtre bir kaldıraçtır — tek bir kural, kırk öznenin bütün trafiğine birden uygulanır. Bu dersin ölçtüğü şey filtrenin gördüğü değil, göremediğidir.
Çözümleyici araçlarının kullanımı ve yakalama yordamı Güvenlik Araçları ve Sızma Testi kursunun konusudur ve burada tekrarlanmaz; araç adı da yazılmaz. Burada ölçülen şey aracın değil, kuralın kendisidir.
Yakalamanın İki Sınırı
Yakalama iki ayrı yerde kaybeder ve ikisi ters yönde çalışır.
Birinci sınır filtredir. Filtreden geçmeyen paket hiç kopyalanmaz. Bu bir kayıp değil, bir seçimdir — ta ki aranan davranış filtrenin dışında kalana kadar. Dar bir filtre, ilgisiz trafiği eleyerek tamponu korur; karşılığında elediği şeyi bir daha geri getiremez, çünkü kopyalanmamış paket yoktur.
İkinci sınır tampondur. Filtreden geçen paketler bir tampona yazılır ve tampon dolduğunda gelen paket düşer. Bu düşme sessizdir: kaydın içinde “burada bir paket düştü” diyen bir satır yoktur, yalnız olmayan paketler vardır. Geniş bir filtre tamponu hızla doldurur ve düşme, filtrenin ilgilendiği trafiğin tam ortasında gerçekleşir.
İki sınır aynı kaldıraca bağlıdır. Filtre daraltıldığında birinci sınır büyür, ikinci sınır küçülür; genişletildiğinde tersi olur. Ortada kayıpsız bir ayar yoktur, yalnız kaybın nereye düşeceğine dair bir seçim vardır.
Filtre Sözdizimi
Yakalama filtreleri paketin başlık alanları üzerinde yazılır. Aşağıdaki döküm öğretilen sözdizimini gösterir; çalıştırılmamıştır ve hiçbir sayı iddiası taşımaz.
# ogretilen filtre sozdizimi , calistirilmamistir tek alan tcp protokol alanina bakar port 443 kaynak ya da hedef kapi src port 443 yalnizca kaynak kapi host istasyon.ornek kaynak ya da hedef konak bilesik tcp and port 443 tcp and (port 80 or port 443 or port 8080) not port 22 paket ici konum tcp[13] & 2 != 0 SYN bayragi kurulmus segmentler ip[6:2] & 0x1fff = 0 bolunmemis ilk parca
İki şey dikkat ister. Birincisi, filtre başlık alanlarına bakar; yükün içeriğine
bakamaz, çünkü karar paket kopyalanmadan önce verilmek zorundadır. İkincisi, not port 22
gibi bir olumsuzlama filtreyi genişletir — dar görünen bir kural, dışarıda bıraktığı şey
küçükse aslında geniş bir kuraldır. Filtrenin genişliğinin ölçüsü sözdiziminin uzunluğu
değil, eşleşen akış sayısıdır.
Kesme Uzunluğu ve Akış Yeniden Kurma
Her paketten ne kadar saklanacağını kesme uzunluğu belirler. Yalnız başlıklar saklanacaksa paket başına birkaç düzine bayt yeter; yükün tamamı isteniyorsa paketin tamamı yazılır ve tampon aynı sürede on kat daha hızlı dolar.
Kesme uzunluğu, akış yeniden kurmayı doğrudan sınırlar. Yeniden kurma, aynı akışa ait paketlerin sıra numaralarına göre birleştirilip özgün bayt akışının geri elde edilmesidir. Başlıklar yeterlidir eğer soru “bu akış ne zaman başladı, kaç bayt taşıdı, nasıl kapandı” ise. Soru “bu akışta ne taşındı” ise başlık yetmez ve kesilmiş bir kayıt bu soruyu hiçbir zaman yanıtlayamaz.
Yeniden kurmanın ikinci koşulu sürekliliktir: akışın paketlerinden biri düşmüşse akış tam olarak kurulamaz. Bu yüzden ölçümde bir akış üç ayrı sonuca düşebilir — tam yakalanmış, yarım kalmış ya da tampona hiç sığmamış.
Ölçümün varsayımları:
- GB14 — Kırk özne kursun sabit topluluğudur; her özne pencerede bir ile dört arası akış üretir ve akışlar başlangıç zamanına göre sıralanır.
- GB15 — Yakalama tamponu 1 200 000 bayttır ve pencere boyunca boşaltılmaz. Gerçek bir yakalamada tampon diske boşaltılır; burada sabit tutulması, düşmenin filtre genişliğine bağımlılığını yalıtmak içindir.
- GB16 — Kesme uzunluğu 96 bayt/paket olarak sabittir ve bu derste kaldıraç değildir. Yalnız filtre değiştirilir.
- GB17 — Tampon zaman sırasına göre dolar. Dolduğu ana kadar biten akış tam yakalanır, o anı bölen akış yarım kalır, sonra başlayan akış hiç yazılmaz.
- GB18 — Düşen paket iz bırakmaz; ölçüm düşen baytı kâhinden okur, kayıttan değil. Gerçek bir yakalamada bu sayı ancak sayaçla kestirilebilir.
- GB19 — Ağır olay kâhinin bilgisidir. Bir öznenin tek bir akışı bile yakalanmışsa o öznenin ağır olayları görünür sayılır; hiçbir akışı yakalanmamışsa hepsi kaçar.
- GB20 — Filtreler iç içedir: her filtre bir öncekinin eşleştirdiği akışların tümünü eşleştirir. Genişlik böylece tek yönlü bir eksende ölçülür.
- GB21 — Gözlem noktası kırk öznenin bütün akışlarını görür. Bu bir kolaylıktır ve sahada karşılığı yoktur; ölçüm bu yüzden yalnız filtre ile tamponun kaybını sayar, konumun kaybını saymaz.
Ölçüm
"""Paket cozumleme: yakalama filtresi tek kaldirac, olculen sey filtrenin goremedigi. Bolum 1 - kirk oznenin akislari, zaman sirasina dizilmis. Bolum 2 - bes filtre genisligi: dar filtre kac akis, genis filtre kac bayt kaciriyor. """ TOHUM = 20260812 TAMPON = 1_200_000 # bayt, yakalama tamponu KESME = 96 # bayt, paket basina saklanan en cok bayt def uretec(tohum): d = tohum % 2147483646 + 1 def r(n): nonlocal d d = (d * 48271) % 2147483647 return d % n return r def ozneler(sayi=40, tohum=TOHUM): r, liste = uretec(tohum), [] for i in range(sayi): liste.append({"no": i + 1, "kapasite": 20 + r(81), "gecikme": 5 + r(45), "sinif": ("etkilesim", "toplu", "yedek")[r(3)], "ozel": r(9) == 0}) return liste def olaylar(oz, sayi=400, tohum=TOHUM + 3): r, liste = uretec(tohum), [] for i in range(sayi): o = oz[r(len(oz))] liste.append({"no": i + 1, "ozne": o["no"], "agir": r(25) == 0}) return liste def akislar(oz, tohum=TOHUM + 7): """Her ozne bir ile dort arasinda akis uretir; liste zaman sirasina dizilir.""" r, liste = uretec(tohum), [] for o in oz: for _ in range(1 + r(4)): liste.append({"ozne": o["no"], "protokol": ("TCP", "UDP", "ICMP")[r(3)], "kapi": (22, 53, 80, 123, 443, 8080)[r(6)], "paket": 20 + r(400), "boy": 64 + r(1400), "baslangic": r(1000)}) return sorted(liste, key=lambda a: (a["baslangic"], a["ozne"])) def yakala(ak, filtre, tampon=TAMPON, kesme=KESME): """Filtreden gecen akis tampona yazilir; tampon dolunca kalan bayt duser.""" dolu = eslesen = tam = yarim = sigmayan = dusen = 0 gorulen = set() for a in ak: if not filtre(a): continue eslesen += 1 boyut = a["paket"] * min(a["boy"], kesme) if dolu + boyut <= tampon: dolu, tam = dolu + boyut, tam + 1 gorulen.add(a["ozne"]) elif dolu < tampon: yarim += 1 dusen += dolu + boyut - tampon dolu = tampon gorulen.add(a["ozne"]) else: sigmayan += 1 dusen += boyut return eslesen, tam, yarim, sigmayan, dusen, gorulen FILTRELER = { "TCP kapı 443": lambda a: a["protokol"] == "TCP" and a["kapi"] == 443, "TCP üç kapı": lambda a: a["protokol"] == "TCP" and a["kapi"] in (80, 443, 8080), "yalnız TCP": lambda a: a["protokol"] == "TCP", "TCP ve UDP": lambda a: a["protokol"] in ("TCP", "UDP"), "süzgeçsiz": lambda a: True, } oz = ozneler() ol = olaylar(oz) ak = akislar(oz) print(f"özne {len(oz)} | akış {len(ak)} | paket {sum(a['paket'] for a in ak)}" f" | ağır olay {sum(o['agir'] for o in ol)}") print(f"tampon {TAMPON} bayt | kesme {KESME} bayt/paket" f" | kesmeli toplam {sum(a['paket'] * min(a['boy'], KESME) for a in ak)} bayt" f" | kesmesiz {sum(a['paket'] * a['boy'] for a in ak)} bayt") print() print(f"{'filtre':<13s} {'eşleşen':>8s} {'dışarıda':>9s} {'tam':>4s} {'yarım':>6s} " f"{'sığmayan':>9s} {'düşen bayt':>11s} {'görünmeyen':>11s} {'kaçan ağır':>11s}") for ad, f in FILTRELER.items(): e, tam, yarim, sig, dusen, gor = yakala(ak, f) kacan = sum(1 for x in ol if x["agir"] and x["ozne"] not in gor) print(f"{ad:<13s} {e:8d} {len(ak) - e:9d} {tam:4d} {yarim:6d} {sig:9d} " f"{dusen:11d} {len(oz) - len(gor):11d} {kacan:11d}")
özne 40 | akış 98 | paket 20631 | ağır olay 22 tampon 1200000 bayt | kesme 96 bayt/paket | kesmeli toplam 1976196 bayt | kesmesiz 15032397 bayt filtre eşleşen dışarıda tam yarım sığmayan düşen bayt görünmeyen kaçan ağır TCP kapı 443 7 91 7 0 0 0 33 21 TCP üç kapı 17 81 17 0 0 0 23 13 yalnız TCP 38 60 38 0 0 0 15 6 TCP ve UDP 65 33 58 1 6 188868 11 4 süzgeçsiz 98 0 65 1 32 776196 5 2
Dar Filtrenin Kaçırdığı
İlk satır en dar kuraldır ve tam olarak istendiği gibi çalışır: eşleşen 7 akışın yedisi de eksiksiz yakalanır, tampondan tek bayt düşmez, kayıt küçüktür ve okunması kolaydır. Bu satırda hiçbir şey bozulmamıştır.
Bozulan şey satırın sağındadır. Doksan sekiz akışın 91’i filtrenin dışında kalmıştır ve kırk öznenin 33’ü kayıtta hiç görünmez. Yirmi iki ağır olayın 21’i kaçar. Kayıt temizdir, çünkü içine yalnız bakılması istenen şey girmiştir; sorun da tam budur — kayıt, kendisine ne sorulacağı bilindiği varsayımıyla kurulmuştur.
Filtre genişledikçe bu taraf iyileşir. TCP üç kapı ile görünmeyen özne 23’e,
yalnız TCP ile 15’e iner; kaçan ağır olay 13 ve 6 olur. Üçüncü satıra kadar tampon hiç
zorlanmaz: düşen bayt 0’dır. Kaldıraç bu aralıkta bedelsiz görünür.
Geniş Filtrenin Kaçırdığı
Dördüncü satırda ikinci sınır devreye girer. TCP ve UDP filtresi 65 akış eşleştirir ama
bunların yalnız 58’i tam yakalanır: 1 akış yarım kalır ve 6 akış tampona hiç
sığmaz. Düşen bayt 188 868’dir.
Süzgeçsiz yakalamada tablo tersine döner. Filtre artık hiçbir şeyi dışarıda bırakmaz —
dışarıda sütunu 0. Buna karşılık doksan sekiz akışın yalnız 65’i tam yakalanır,
32’si tampona hiç sığmaz ve 776 196 bayt düşer. Kesmeli toplam 1 976 196 bayttır;
yani yakalanmak istenen verinin yaklaşık beşte ikisi kayda hiç girmez.
En çarpıcı sütun görünmeyen öznedir: süzgeçsiz yakalamada bu sayı 5’tir ve sıfır değildir. Filtre hiçbir özneyi elemediği hâlde beş özne kayıtta yoktur, çünkü onların akışları tamponun dolduğu andan sonra başlamıştır. Filtreyi genişletmek görünürlüğü artırmadı, kaybı filtreden tampona taşıdı.
İki kayıp arasındaki nitelik farkı önemlidir. Filtrenin elediği akış bilinerek elenmiştir; kuralı okuyan kişi neyin dışarıda kaldığını söyleyebilir. Tampondan düşen akış ise bilinmeden düşmüştür ve kaydın kendisinde bunu gösteren hiçbir alan yoktur. İkinci kayıp, birinciden daha az bayt götürse bile daha tehlikelidir, çünkü kaydı okuyan kişi eksikliği fark etmez.
Sayılmayan Üçüncü Kayıp
Ölçüm, gözlem noktasının kırk öznenin bütün akışlarını gördüğünü varsayar. Bu varsayım sahada tutmaz ve tutmadığı yerde üçüncü bir kayıp doğar.
Çözümleyici bir noktaya konur ve yalnız o noktadan geçen paketi görür. İki özne birbiriyle o noktanın berisinde konuşuyorsa aralarındaki trafik hiçbir zaman kopyalanmaz — filtre ne kadar geniş olursa olsun, tampon ne kadar büyük olursa olsun. Aynı biçimde, bir anahtarın bir bağlantı noktasına konan çözümleyici öteki bağlantı noktalarının kendi aralarındaki trafiği görmez; bunun için trafiğin ayrıca yansıtılması gerekir ve yansıtma da kendi sınırını taşır: yansıtılan bağlantı noktasının hızı, kaynakların toplam hızından düşükse yansıtma sırasında da paket düşer.
Bu kaybın diğer ikisinden farkı, filtre kuralına bakarak kestirilememesidir. Dar filtrenin neyi elediği kuralın kendisinde yazılıdır; tampondan düşenin miktarı bir sayaçtan okunabilir. Konumun görmediği ise ancak topolojiden çıkarılabilir ve yakalama kaydında hiçbir izi yoktur. Üç kaybın ortak sonucu şudur: kaydın boş olması, orada bir şey olmadığı anlamına gelmez.
Kayıpları Daraltmak
Kaldıracın kuyruğu kaldırılamaz; üç daraltma onu ölçülebilir kılar.
Birinci daraltma — düşmeyi saymak. Yakalama arayüzü, düşen paket için bir sayaç tutar.
Sayaç örneklenmez ve filtreden etkilenmez; kayıt eksikse bunu söyleyen tek alan odur. Kayıt
her açıldığında sayacın da okunması, sığmayan sütununun sahadaki karşılığını verir.
İkinci daraltma — kesme uzunluğunu soruya göre seçmek. Ölçümdeki pencerede paketlerin tamamı saklansaydı toplam 15 032 397 bayt olurdu; 96 baytlık kesmeyle 1 976 196 bayta iner, yani yaklaşık yedide bire. Aynı tampon, aynı filtreyle yedi kat uzun bir pencereyi kapsar. Soru akışın varlığı ve zamanlaması ise bu takas bedavaya yakındır. Soru içerikse kesme kaldırılmalıdır, ama o zaman pencere kısaltılmalıdır; iki ayarın çarpımı sabittir.
Üçüncü daraltma — filtreyi soruya değil, kâhine göre yazmak. Yukarıdaki ölçümde en dar filtre yirmi iki ağır olayın yirmi birini kaçırıyordu. Ağır olayların hangi kapılarda geçtiği bilinmediği için dar filtre kumar oynamaktadır. Uygulanabilir kural şudur: yakalama filtresi, telemetride görünmeyen özneleri kapsayacak biçimde yazılır. Önceki iki ders kimin görünmediğini sayıyordu; bu ders o listenin nereye yazılacağını söyler.
Özet
- Yakalama iki yerde kaybeder: filtreden geçmeyen paket hiç kopyalanmaz, tampona sığmayan paket sessizce düşer; iki kayıp aynı kaldıracın ters yönleridir.
- En dar filtre 7 akış yakalar ve hiç bayt düşürmez, ama 91 akışı dışarıda bırakır, 33 özneyi hiç göstermez ve 22 ağır olayın 21’ini kaçırır.
- Süzgeçsiz yakalama hiçbir akışı dışarıda bırakmaz ama 32 akış tampona sığmaz ve 776 196 bayt düşer; kesmeli toplamın yaklaşık beşte ikisi kayda girmez.
- Süzgeçsiz yakalamada bile 5 özne görünmez: filtre elemediği hâlde tamponun dolduğu andan sonra başlayan akışlar kayda hiç girmez.
- Filtrenin elediği akış bilinerek elenmiştir, tampondan düşen akış bilinmeden düşer; ikinci kayıp daha küçük olduğunda bile daha tehlikelidir çünkü kayıtta hiçbir iz bırakmaz.
- Üçüncü bir kayıp ölçümün dışındadır ve gözlem noktasından gelir: o noktadan geçmeyen trafik hiçbir filtre genişliğiyle görünmez, ve bu eksiklik ne kuraldan ne sayaçtan okunabilir — yalnız topolojiden çıkarılabilir.
Sonraki Adım
Buraya kadarki üç ölçüm de ağın içinden bakıyordu: aygıtın kaydı, aygıtın yanıtı, hattan geçen paket. Üçünün de öznesi tek tek aygıtlardı. İşletmede sorulan asıl soru ise uçtan uca sorulur — bir uçtan öbür uca erişilebiliyor mu, ve ne kadar sürede? Sonraki ders bu tek göstergeyi kurar ve tersinden sorar: uçtan uca ölçülen bir sağlık değeri kırk öznenin hangisini temsil etmiyor, ve gösterge yeşilken kaç özne kuyrukta kalıyor?
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.