Ders 07 / 13
Paket Yakalama
Yakalamanın eleme gücünün ölçülmesi: süzgeçsiz yakalama 14400 satır üretip 6 aday eliyor ve tanıyı bitirmiyor, tek satırlık bir bağlantı denemesi 7 aday eliyor ve bitiriyor; satır başına eleme 0,0004'e karşı 7,0000 çıkıyor.
İçindekiler
Önceki ders erişilebilirlik sınamalarının bir duvara tosladığını gösterdi: üç yankı ve bir bağlantı denemesi birlikte bile iki aday çiftini ayıramıyordu. Böyle bir tıkanmada akla gelen sonraki adım genellikle aynıdır — özetlere değil, hattan geçen trafiğin kendisine bakmak. Paket yakalama bunu yapar ve bu yüzden araç kutusunun en ayrıntılı aracı sayılır.
Bu ders o beklentiyi ölçer. Yakalamanın ürettiği satır sayısı ile elediği aday neden sayısı yan yana konur ve ikisinin oranı hesaplanır. Sonuç kursun ikinci iddiasının en sert biçimidir: daha çok çıktı daha iyi tanı demek değildir. Dersin ikinci yarısı da aynı ölçüden çıkan bir sınırı yazar: yakalama bir tanı aracıdır ve bu kursta tanının dışına çıkan hiçbir kullanımı anlatılmaz.
Yakalamanın Gördüğü ile Söylediği
Yakalama, bir arayüzden geçen çerçeveleri kaydeder. Gördüğü şey gerçekten çoktur: her çerçevenin zamanı, boyutu, yönü ve başlık alanları. Söylediği şey ise tanının kullanabildiği kadarıdır ve operatör bu binlerce satırı tek bir yargıya indirger: trafik hangi yönlerde akıyor.
Ortak tanımın sekiz sınamasına dokunulmaz; yakalama bu derste dokuzuncu bir sınama olarak
eklenir (SG10). Yakalama yerel arayüzde ve yalnız tanı konusu akış üzerinde yapılır;
yanıtı üç değere indirgenir (SG11): paket-yok, giden-var-donen-yok, iki-yonlu.
Yakalanan her çerçeve bir satır üretir (SG12). Altı yüz saniyelik pencerede arayüzden
geçen çerçevelerin dağılımı kurgudur ve toplamı 14400’dür (SG13). Süzgeç yakalanan satır
sayısını azaltır ama yanıtı değiştirmez (SG14); en dar okuma akışın ilk altı çerçevesidir
(SG15). Yakalama, arıza başlamadan önce çalışır durumdadır (SG16).
Üç yanıtın karşılıkları doğrudan sağlam durumdan türer. Arayüz kapalıysa, adres yoksa ya da rota eksikse yerel yığın çerçeve üretemez ve kayıt boştur. Ağ geçidi yanlışsa ya da güvenlik duvarı düşürüyorsa çerçeveler çıkar, karşılık gelmez. Kalan durumlarda iki yönlü trafik görünür. Protokol başlıklarının anlamı ve el sıkışma Bilgisayar Ağları müfredatının konusudur ve burada açılmaz.
# ornek dokum , calistirilmis degildir $ tcpdump -i <arayuz> -n -c 200 host <hedef> and port <bag-noktasi> $ tcpdump -i <arayuz> -n -w /tmp/tani.pcap host <hedef> and port <bag-noktasi> $ tcpdump -r /tmp/tani.pcap -n | wc -l
SAGLAM = {"arayuz_acik": True, "adres_var": True, "ag_gecidi_dogru": True, "rota_var": True, "cozumleyici_yanit": True, "servis_dinliyor": True, "guvenlik_duvari_gecirir": True, "yol_bozulmadan": True} ARIZA = { "arayuz-kapali": {"arayuz_acik": False, "adres_var": False}, "adres-yok": {"adres_var": False}, "ag-gecidi-yanlis": {"ag_gecidi_dogru": False}, "rota-eksik": {"rota_var": False}, "cozumleyici-sessiz": {"cozumleyici_yanit": False}, "servis-dinlemiyor": {"servis_dinliyor": False}, "guvenlik-duvari-dusuruyor": {"guvenlik_duvari_gecirir": False}, "buyuk-paket-dusuyor": {"yol_bozulmadan": False}, } ADAYLAR = tuple(ARIZA) def durum(a=None): d = dict(SAGLAM) if a: d.update(ARIZA[a]) return d def yol(d): return (d["arayuz_acik"] and d["adres_var"] and d["ag_gecidi_dogru"] and d["rota_var"]) SINAMA = { "arayuz": lambda d: ("acik-adresli" if d["arayuz_acik"] and d["adres_var"] else "acik-adressiz" if d["arayuz_acik"] else "kapali"), "baglanti": lambda d: ("ulasilamaz" if not yol(d) else "zaman-asimi" if not d["guvenlik_duvari_gecirir"] else "reddedildi" if not d["servis_dinliyor"] else "kuruldu"), # SG10: ortak tanimin sekiz sinamasina dokunulmaz , yakalama DOKUZUNCU sinama "yakalama": lambda d: ( "paket-yok" if not (d["arayuz_acik"] and d["adres_var"] and d["rota_var"]) else "giden-var-donen-yok" if not (d["ag_gecidi_dogru"] and d["guvenlik_duvari_gecirir"]) else "iki-yonlu"), } TRAFIK = { # SG13: 600 saniyelik pencerede kurgu cerceve sayilari "ilgisiz-komsu": 9000, "ad-sorgusu": 1800, "yonetim": 2400, "hedef-diger-bag-noktasi": 1080, "hedef-akis": 120, } SUZGEC = { # SG14: suzgec satiri azaltir , YANITI degistirmez "suzgec yok": list(TRAFIK), "hedef adres": ["hedef-diger-bag-noktasi", "hedef-akis"], "hedef adres + bag noktasi": ["hedef-akis"], } def satir(ad): return sum(TRAFIK[k] for k in SUZGEC[ad]) def obekler(kume, adaylar=ADAYLAR): o = {} for a in adaylar: o.setdefault(tuple(SINAMA[s](durum(a)) for s in kume), []).append(a) return o def eledigi(kume, gercek, adaylar=ADAYLAR): desen = tuple(SINAMA[s](durum(gercek)) for s in kume) kalan = obekler(kume, adaylar)[desen] return len(adaylar) - len(kalan), len(kalan) KAHIN = "guvenlik-duvari-dusuruyor" print("ariza yakalama baglanti") for a in ADAYLAR: print(f" {a:26s}{SINAMA['yakalama'](durum(a)):21s}{SINAMA['baglanti'](durum(a))}") print() print("kahin:", KAHIN) for s in ("yakalama", "baglanti", "arayuz"): e, k = eledigi([s], KAHIN) print(f" {s:9s} yanit {SINAMA[s](durum(KAHIN)):20s} elenen {e} kalan {k}") print() print("satir sayisi ve satir basina elenen aday (kahin sabit)") for ad in SUZGEC: n = satir(ad) e, _ = eledigi(["yakalama"], KAHIN) print(f" yakalama / {ad:26s} satir {n:6d} elenen {e} satir basina {e / n:.4f}") ILK = 6 # SG15: akisin ilk 6 cercevesi e, _ = eledigi(["yakalama"], KAHIN) print(f" yakalama / {'akisin ilk cerceveleri':26s} satir {ILK:6d} elenen {e}" f" satir basina {e / ILK:.4f}") eb, _ = eledigi(["baglanti"], KAHIN) print(f" baglanti denemesi{'':20s} satir {1:6d} elenen {eb} satir basina {eb / 1:.4f}") print() print("sinama kumesi obek ayrilamayan tekil en buyuk obek") for kume in (["yakalama"], ["baglanti"], ["arayuz"], ["baglanti", "yakalama"], ["baglanti", "arayuz"]): o = obekler(kume) print(f" {'+'.join(kume):25s} {len(o):4d} {len([v for v in o.values() if len(v) > 1]):12d}" f" {len([v for v in o.values() if len(v) == 1]):6d} {max(len(v) for v in o.values()):14d}") print() print("aday kumesi supurmesi: yakalama ile baglantinin eledigi (kume buyurken)") kume = [KAHIN] for a in ADAYLAR: if a not in kume: kume.append(a) ey, ky = eledigi(["yakalama"], KAHIN, tuple(kume)) eb, kb = eledigi(["baglanti"], KAHIN, tuple(kume)) print(f" aday {len(kume)} yakalama elenen {ey} kalan {ky}" f" baglanti elenen {eb} kalan {kb}")
ariza yakalama baglanti arayuz-kapali paket-yok ulasilamaz adres-yok paket-yok ulasilamaz ag-gecidi-yanlis giden-var-donen-yok ulasilamaz rota-eksik paket-yok ulasilamaz cozumleyici-sessiz iki-yonlu kuruldu servis-dinlemiyor iki-yonlu reddedildi guvenlik-duvari-dusuruyor giden-var-donen-yok zaman-asimi buyuk-paket-dusuyor iki-yonlu kuruldu kahin: guvenlik-duvari-dusuruyor yakalama yanit giden-var-donen-yok elenen 6 kalan 2 baglanti yanit zaman-asimi elenen 7 kalan 1 arayuz yanit acik-adresli elenen 2 kalan 6 satir sayisi ve satir basina elenen aday (kahin sabit) yakalama / suzgec yok satir 14400 elenen 6 satir basina 0.0004 yakalama / hedef adres satir 1200 elenen 6 satir basina 0.0050 yakalama / hedef adres + bag noktasi satir 120 elenen 6 satir basina 0.0500 yakalama / akisin ilk cerceveleri satir 6 elenen 6 satir basina 1.0000 baglanti denemesi satir 1 elenen 7 satir basina 7.0000 sinama kumesi obek ayrilamayan tekil en buyuk obek yakalama 3 3 0 3 baglanti 4 2 2 4 arayuz 3 1 2 6 baglanti+yakalama 5 2 3 3 baglanti+arayuz 6 2 4 2 aday kumesi supurmesi: yakalama ile baglantinin eledigi (kume buyurken) aday 2 yakalama elenen 1 kalan 1 baglanti elenen 1 kalan 1 aday 3 yakalama elenen 2 kalan 1 baglanti elenen 2 kalan 1 aday 4 yakalama elenen 2 kalan 2 baglanti elenen 3 kalan 1 aday 5 yakalama elenen 3 kalan 2 baglanti elenen 4 kalan 1 aday 6 yakalama elenen 4 kalan 2 baglanti elenen 5 kalan 1 aday 7 yakalama elenen 5 kalan 2 baglanti elenen 6 kalan 1 aday 8 yakalama elenen 6 kalan 2 baglanti elenen 7 kalan 1
Kâhin, Sınama, Elenen Aday
Üç sayı yan yana durur. Kâhin: gerçek arıza guvenlik-duvari-dusuruyor. Sınama:
süzgeçsiz yakalama giden-var-donen-yok yanıtını veriyor. Elenen aday: bu yanıt
6 adayı eliyor ve geriye 2 aday bırakıyor; tanı bitmiyor.
Aynı kâhin altında tek satırlık bir bağlantı denemesi zaman-asimi yanıtını verir, 7
aday eler ve geriye 1 aday bırakır; tanı biter. Fark tek bir adaydır ama o adayın adı
ag-gecidi-yanlistır ve yakalama onu son ana kadar taşır. Sebep basittir: yakalamanın
gördüğü şey “çıktı, dönmedi” olgusudur; dönmemenin nedenini göremez. Ağ geçidinin yanlış
olmasıyla güvenlik duvarının düşürmesi, arayüzden bakan bir gözlemci için aynı görünür.
Tablonun öteki ucunda da aynı körlük vardır. iki-yonlu yanıtı üç adaya birden uyar:
çözücü sessizken de, servis dinlemiyorken de, büyük paket düşerken de arayüzde iki
yönlü trafik görünür. Kayda bakan operatör “trafik akıyor” der ve bu doğrudur; yine de
kullanıcı hizmete erişemez. Yakalamanın söyleyebildiği şey çerçevelerin varlığıdır,
alışverişin başarısı değildir. Aynı üç aday, dört değerli bağlantı denemesinde iki ayrı
yanıta dağılır.
Öbek tablosu bunu tek başına özetler. Yakalama sekiz adayı 3 öbeğe ayırır ve hiçbir öbekte tek aday kalmaz: yakalama tek başına hiçbir arızayı belirleyemez. Bağlantı denemesi 4 öbek üretir ve bunların 2’si tek adaylıdır. Tek satırlık bir yanıt, on dört bin satırlık bir kaydın yapamadığını yapar.
Satır Başına Eleme
Satır sayısı sütunu asıl karşılaştırmayı verir. Süzgeçsiz yakalama 14400 satır üretir ve 6 aday eler: satır başına 0,0004 aday. Hedef adrese göre süzülünce satır 1200’e, hedef adres ve bağlantı noktasına göre süzülünce 120’ye iner; elenen aday değişmez ve satır başına oran 0,0050 ile 0,0500 olur. Akışın yalnız ilk altı çerçevesi okunduğunda oran 1,0000’a çıkar. Bağlantı denemesinin satır başına oranı ise 7,0000’dir.
İki okuma çıkar. Birincisi doğrudan iddianın kendisidir: satır sayısını altıdan 14400’e, yani 2400 kat büyütmek eleme gücünü hiç artırmaz. Yakalamanın 14400 satırından çıkarılan bilgi, aynı yakalamanın ilk altı satırından çıkarılan bilgiyle aynıdır. Fazla satırlar yeni aday elemez; yalnız okuma süresini, dosya boyutunu ve yanlış bir kalıba takılma olasılığını artırır.
Fazla satırın bir bedeli daha vardır ve ölçünün dışında kalır. Yakalama, kaydettiği her çerçeveyi işlemek zorundadır; hız yükseldiğinde kaydın kendisi çerçeve düşürmeye başlar. En çok çıktı üreten araç, tam da yükün en yüksek olduğu anda kanıt kaybedebilen araçtır ve düşen çerçeve kayıtta bir boşluk olarak değil, hiç olmamış bir olay olarak görünür. Dar süzgeç bu riski de azaltır: kaydedilecek çerçeve az olduğunda düşme olasılığı düşer. Yani süzgeç yalnız okumayı kolaylaştırmaz, kaydın eksiksizliğini de korur.
İkincisi süzgecin ne yaptığıdır. Süzgeç eleme gücünü yükseltmez, çabayı düşürür
(SG14). Bu ayrım tanıda sık karışır: dar süzgeçle bakan operatör daha çabuk sonuca
varır, ama vardığı sonuç geniş süzgeçle varacağı sonuçtan daha kesin değildir. Süzgeç bir
tanı kararı değil, bir okuma kolaylığıdır. Süzgecin gerçek riski ters yöndedir: yanlış
kurulmuş bir süzgeç, arızanın tek kanıtı olan çerçeveleri dışarıda bırakabilir ve kayıt
“hiç paket yok” der. Bu, paket-yok yanıtını üreten dördüncü bir nedendir ve aday
kümesinde yoktur.
Yakalamanın Gerçekten İşe Yaradığı Yer
Ölçü yakalamayı gereksiz göstermez; yerini gösterir. Bağlantı denemesiyle birlikte
kullanıldığında öbek sayısı 4’ten 5’e, tek adaylı öbek sayısı 2’den 3’e çıkar. Yakalama,
bağlantı denemesinin ayıramadığı bir yeri ayırır: ulasilamaz yanıtı altındaki dört adaydan
ag-gecidi-yanlis olanını, çerçevelerin gerçekten çıktığını göstererek işaretler.
Ne var ki aynı işi çok daha ucuz yapan bir sınama vardır. Bağlantı denemesine tek satırlık bir arayüz okuması eklendiğinde öbek sayısı 6, tek adaylı öbek sayısı 4 olur ve en büyük öbek 3’ten 2’ye iner. Yani 14400 satırlık yakalama yerine iki satırlık bir yapılandırma okuması, aynı noktada daha çok aday eler. Yakalamanın hakkı, kalan belirsizlik çerçevelerin varlığına dairse ortaya çıkar; belirsizlik yapılandırmaya dairse yapılandırmayı okumak gerekir.
Yakalamanın ikinci gerçek işlevi ölçüde görünmez: zamanlama. Çerçevelerin arasındaki süre, yeniden deneme aralıkları ve dönüşün ne kadar geciktiği başka hiçbir sınamada yoktur. Bu bilgi aday elemez ama süreyi anlatır; aralıklı arızada tek kanıt odur ve bu, sonraki dersin konusudur.
Yakalamanın Sınırı
Yakalama bu kursta bir tanı aracıdır ve tanının dışına çıkan hiçbir kullanımı anlatılmaz. Başkasının trafiğini ele geçirme, kimlik taklidi ve denetim atlatma yordamları hiçbir derste yazılmaz; bunlar Siber Güvenlik müfredatının konusudur ve orada da yordam olarak değil, savunulacak yüzey olarak ele alınır.
Sınırın kendisi de ölçüden çıkar. Tanı için gereken satır sayısı altıdır; kayıt bundan fazlasını topluyorsa fazlası tanıya bir şey katmaz. Bu yüzden yakalamanın doğru kurulumu dardır: tek arayüz, tek hedef, tek bağlantı noktası, sayılı çerçeve. Geniş kurulum yalnız verimsiz değildir; ilgisiz akışların içeriğini de kaydeder ve o içerik kimsenin tanısına ait değildir.
Üç işletim kuralı buradan doğrudan çıkar. Kayıt kapsamla sınırlanır: süzgeç, tanı konusu akıştır. Kayıt süreyle sınırlanır: çerçeve sayısı ya da süre önceden belirlenir. Kayıt dosyası saklama politikasına bağlanır; sistem yönetimi kursunda günlükler için ölçülen saklama sorusu, yakalama dosyası için de aynen geçerlidir ve dosya bir kanıt olduğu kadar bir yüktür.
Aday Kümesi Süpürmesi
Süpürme iki sınamayı aday kümesi büyürken yan yana koyar. İki adaylı kümede ikisi de 1 aday eler ve ikisi de tanıyı bitirir; farkları görünmez. Dördüncü aday eklendiğinde yollar ayrılır: bağlantı denemesi 3 eler ve kalan 1’de kalır, yakalama 2 eler ve kalan 2’ye çıkar. Sekizinci adaya kadar bu fark korunur; yakalama her adımda tam olarak bir aday geride kalır.
Buradan çıkan sonuç, ölçünün kurguya bağlılığını da sınırlar. Yakalamanın zayıflığı satır sayısından ya da seçilen çerçeve dağılımından gelmiyor; yanıt uzayının darlığından geliyor. Üç değerli bir yanıt, sekiz adayı en iyi durumda 3 öbeğe ayırır ve öbeklerin en küçüğü bile birden büyük kalabilir. Aday sayısı arttıkça bu darlık büyür: dört değerli bağlantı denemesi ile üç değerli yakalama arasındaki bir adaylık fark, daha geniş bir listede daha da açılır. Listeye eklenen her yeni aday, yanıt uzayı dar olan sınamanın elediği oranı düşürür.
Özet
- Yakalama süzgeçsiz 14400 satır üretir, 6 aday eler ve geriye 2 aday bırakarak tanıyı bitirmez; tek satırlık bağlantı denemesi 7 aday eler ve bitirir.
- Satır başına elenen aday: süzgeçsiz yakalamada 0,0004, bağlantı denemesinde 7,0000. Satır sayısını büyütmek eleme gücünü artırmaz.
- Yakalama tek başına hiçbir arızayı tek adaya indirmez; bağlantı denemesi 2, arayüz okuması 2 arızayı tek adaya indirir.
- Süzgeç eleme gücünü değil çabayı düşürür; yanlış kurulmuş bir süzgeç arızanın tek kanıtını dışarıda bırakabilir.
- Yakalamanın hakkı çerçevelerin varlığına ve zamanlamasına dair belirsizliktedir; yapılandırmaya dair belirsizlikte iki satırlık bir okuma daha çok aday eler.
- Yakalama bir tanı aracıdır: kapsam, süre ve saklama ile sınırlanır; tanı dışı kullanımı bu kursta anlatılmaz.
Sonraki Adım
Bu dersin bütün ölçüsü tek bir varsayıma yaslandı: yakalama arıza başlamadan önce çalışır durumdaydı (SG16). Varsayım kaldırıldığında sayılar çöker, çünkü kaydı olmayan bir olay hiç olmamış gibi görünür. Sonraki ders yaygın arıza kalıplarını imzalarıyla ele alır ve üçüncü iddiayı öder: aralıklı bir arıza altı yüz saniyelik pencerede 84 saniye sürerken kayıt 300. saniyede başlarsa olayların yarısı, 500. saniyede başlarsa altıda birinden azı görülür; düşürülen paketin izi ise kayıt kapalıyken sıfır satırdır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.