Ders 11 / 14
Saldırı Tespit ve Önleme
Eşiğe dayanan bir düzenekte iki hata birbirine bağlıdır: ağ tabanlı sistemde eşik 7 iken fazla geçen 0 ama fazla duran 7, eşik 9 iken fazla duran 0 ama fazla geçen 5; konak tabanlı sistemin 8 yasak akışı ise hiçbir eşikte görünmez çünkü onları hiç görmez.
İçindekiler
Önceki üç ders de sınırı bir kez karar veren bir düzenek saydı. Akış gelir, alanları
okunur, kural dizisinden geçer, geçer ya da durur. Karar kesindir çünkü ölçüt kesindir: bir
akış ya dmz kaynaklıdır ya değildir, arada bir şey yoktur.
Bu ders kesin olmayan bir ölçüte bakar. Bir saldırı tespit sistemi (intrusion detection system) akışı alanlarından değil davranışından değerlendirir ve davranış bir sayıya indirilir. O sayı ile bir eşik karşılaştırılır. Yeni olan şey eşiğin kendisi değil, sayının iki sınıf arasında örtüşmesidir — ve bu dersin tamamı o örtüşmenin içinde geçer.
Eşik Bir Kural Değildir
Kural dizisinin ölçütü ikilidir ve ayırt ettiği şeyi kusursuz ayırt eder. Eşiğin ölçütü süreklidir ve ayırt ettiği iki sınıfın değerleri iç içe girer. Niyetin geçirdiği akışların sayıları düşük, durdurduklarınınki yüksektir; ama iki dağılım bir bantta üst üste biner ve o bandın içinde hiçbir eşik doğru yanıt vermez.
# ogretilen olcek , calistirilmamistir
# eksen skordur , sayilar olcum blogundan gelir
niyetin gecirdigi akislar |==========|
niyetin durdurdugu akislar |==============|
^^^^ ortusme bandi
esik bu eksende bir yere konur :
sola kayarsa -> fazla duran buyur , fazla gecen kucul
saga kayarsa -> fazla gecen buyur , fazla duran kucul
bandin disina cikamaz
Bu, düzeneğin bir kusuru değil, ölçütün doğasıdır. Ölçüt kusursuz ayırsaydı zaten kural yazılabilirdi ve eşiğe gerek kalmazdı.
İki Sistemin Gördüğü
Ağ tabanlı sistem akışın kendisini değerlendirir ve bölge fark etmeksizin kırk akışın kırkını da görür. Gördüğü şey akışın dışıdır; sayısı gürültülüdür.
Konak tabanlı sistem akışın indiği uçta çalışır. Uçtaki bağlamı gördüğü için sayısı daha keskindir, ama yalnız kendi konağına inen akışı görür; başka bir bölgeye inen akış hiç alanına girmez ve o akışa dair bir kararı yoktur.
Siber Güvenlik müfredatının Çevre Savunması konusu bu sistemleri yerleşimleriyle ve imza yordamıyla ele aldı: duyarga nereye konur, imza nasıl yazılır, hangi kayıt nasıl eşleştirilir. O anlatı burada tekrarlanmaz. Ölçülen şey yerleşim değil, iki yönlü hatanın eşiğe bağlı davranışıdır.
Ölçümün varsayımları:
- AG22 — Kırk akış ortak kurgudan değiştirilmeden alınır; kâhin niyetin kendisidir ve bir akışın gerçekten niyete uyup uymadığını söyler.
- AG23 — Skor kâhinden türetilir: niyetin durdurduğu akış 7 tabanından, geçirdiği akış 2 tabanından başlar ve üzerine ayrı bir üreteçten gelen gürültü eklenir. Kurgu budur çünkü bir tespit sisteminin gördüğü şey ihlalin gürültülü izidir; izi biz yazdığımız için örtüşme bandı bilinir.
- AG24 — Ağ tabanlı sistemin gürültü genişliği 7, konak tabanlınınki 6’dır. Konak tabanlının daha keskin olması bu genişlik farkından gelir; iki skor ayrı üreteçlerden üretilir ve birbirinden bağımsızdır.
- AG25 — Konak tabanlı sistem yalnız hedefi
icya dayonetimolan akışı görür; öteki akışlarda kararı geçirdir, çünkü kararı yoktur. - AG26 — Düzeneğin kararı
skor < eşikbiçimindedir; eşik yükseldikçe daha az akış durdurulur. - AG27 — İkisi birlikte çalışırken akış ancak her ikisi de geçirirse geçer.
- AG28 —
durduransütunu düzeneğin durdurduğu bütün akışları sayar, doğrusunu da yanlışını da. Tespit kipinde bu sütun uyarı sayısıdır, önleme kipinde kesilen akış sayısı. - AG29 — Kırk olaylık kümede ölçülebilen en küçük fark 1/40 = 0,025’tir.
Ölçüm
"""Saldiri tespit ve onleme: esik degistikce iki yonlu hatanin kaymasi. Bolum 1 - ag tabanli sistem, esik taramasi. Bolum 2 - konak tabanli sistem ve ikisinin birlikte karari. """ TOHUM = 20260811 BOLGELER = ("dis", "dmz", "ic", "yonetim") NOKTALAR = (80, 443, 22, 3306, 8080) KONAKLI = ("ic", "yonetim") def uretec(tohum): d = tohum % 2147483646 + 1 def r(n): nonlocal d d = (d * 48271) % 2147483647 return d % n return r def akislar(sayi=40, tohum=TOHUM): r, liste = uretec(tohum), [] for i in range(sayi): liste.append({"no": i + 1, "kaynak": BOLGELER[r(4)], "hedef": BOLGELER[r(4)], "bnokta": NOKTALAR[r(5)]}) return liste def politika(a): """Niyet: disaridan yalniz DMZ'nin web kalemine; yonetime disaridan kimse.""" if a["kaynak"] == "dis": return a["hedef"] == "dmz" and a["bnokta"] in (80, 443) if a["kaynak"] == "dmz": return a["hedef"] == "ic" and a["bnokta"] == 3306 if a["kaynak"] == "yonetim": return True return a["hedef"] != "yonetim" def fark(olaylar, niyet, duzenek): d = {"dogru_gecti": 0, "dogru_durdu": 0, "yanlis_gecti": 0, "yanlis_durdu": 0} for o in olaylar: n, g = niyet(o), duzenek(o) if n and g: d["dogru_gecti"] += 1 elif not n and not g: d["dogru_durdu"] += 1 elif g: d["yanlis_gecti"] += 1 else: d["yanlis_durdu"] += 1 return d def puanla(ak, alan, genislik, tohum): """Ihlalin gurultulu izi: yasak akis 7'den, izinli akis 2'den baslar.""" r = uretec(tohum) for a in ak: a[alan] = (7 if not politika(a) else 2) + r(genislik) return ak def ag_tabanli(esik): return lambda a: a["ag_skor"] < esik def konak_tabanli(esik): """Yalniz kendi konagina inen akisi gorur; otekini gecirir.""" return lambda a: a["konak_skor"] < esik if a["hedef"] in KONAKLI else True def birlikte(ea, ek): return lambda a: ag_tabanli(ea)(a) and konak_tabanli(ek)(a) AK = puanla(puanla(akislar(), "ag_skor", 7, TOHUM + 5), "konak_skor", 6, TOHUM + 7) print(f"akış {len(AK)} | niyetin geçirdiği {sum(1 for a in AK if politika(a))} " f"| konak tabanlının gördüğü " f"{sum(1 for a in AK if a['hedef'] in KONAKLI)}") print(f"ağ skoru: izinli {min(a['ag_skor'] for a in AK if politika(a))}" f"-{max(a['ag_skor'] for a in AK if politika(a))}, " f"yasak {min(a['ag_skor'] for a in AK if not politika(a))}" f"-{max(a['ag_skor'] for a in AK if not politika(a))}") print() print(f"{'düzenek':<16s} {'eşik':>4s} {'doğru':>5s} {'fazla geçen':>11s} " f"{'fazla duran':>11s} {'durduran':>8s}") sinamalar = ([("ağ tabanlı", e, ag_tabanli(e)) for e in range(6, 13)] + [("konak tabanlı", e, konak_tabanli(e)) for e in range(6, 10)] + [("ikisi birlikte", e, birlikte(e, e)) for e in (8, 9)]) for ad, e, f in sinamalar: d = fark(AK, politika, f) print(f"{ad:<16s} {e:4d} {d['dogru_gecti'] + d['dogru_durdu']:5d} " f"{d['yanlis_gecti']:11d} {d['yanlis_durdu']:11d} " f"{sum(1 for a in AK if not f(a)):8d}") print() print("ağ tabanlı, eşik 7 — boşuna durdurulanlar:", [(a["no"], a["ag_skor"]) for a in AK if politika(a) and not ag_tabanli(7)(a)]) print("ağ tabanlı, eşik 9 — kaçırılanlar:", [(a["no"], a["ag_skor"]) for a in AK if not politika(a) and ag_tabanli(9)(a)]) print("konak tabanlının hiç göremediği yasak akış:", sum(1 for a in AK if not politika(a) and a["hedef"] not in KONAKLI))
akış 40 | niyetin geçirdiği 22 | konak tabanlının gördüğü 21 ağ skoru: izinli 2-8, yasak 7-13 düzenek eşik doğru fazla geçen fazla duran durduran ağ tabanlı 6 27 0 13 31 ağ tabanlı 7 33 0 7 25 ağ tabanlı 8 32 4 4 18 ağ tabanlı 9 35 5 0 13 ağ tabanlı 10 33 7 0 11 ağ tabanlı 11 31 9 0 9 ağ tabanlı 12 26 14 0 4 konak tabanlı 6 28 8 4 14 konak tabanlı 7 29 8 3 13 konak tabanlı 8 30 10 0 8 konak tabanlı 9 29 11 0 7 ikisi birlikte 8 35 1 4 21 ikisi birlikte 9 38 2 0 16 ağ tabanlı, eşik 7 — boşuna durdurulanlar: [(7, 8), (11, 7), (20, 7), (21, 8), (24, 8), (30, 8), (38, 7)] ağ tabanlı, eşik 9 — kaçırılanlar: [(2, 7), (12, 7), (31, 8), (36, 7), (37, 7)] konak tabanlının hiç göremediği yasak akış: 8
Eşiği Sıkmanın İki Yönü
Ağ tabanlı sistemin skorları izinli akışlarda 2–8, yasak akışlarda 7–13 aralığında. Örtüşme bandı iki değerden ibaret: 7 ve 8. Alt tablodaki iki liste bunu doğruluyor — boşuna durdurulan yedi akışın da, kaçırılan beş akışın da skoru 7 ya da 8. Bandın dışındaki hiçbir akış hata üretmiyor.
Eşik 7’ye çekildiğinde fazla geçen 0’a iniyor. Yasak akışların hepsi durduruluyor; kâğıt üzerinde kusursuz bir sonuç. Bedeli öbür sütunda: 7 izinli akış boşuna durduruluyor. Eşik 9’a açıldığında bu kez fazla duran 0’a iniyor ve fazla geçen 5’e çıkıyor. 6’ya kadar sıkmak fazla duranı 13’e çıkarıyor, 12’ye kadar açmak fazla geçeni 14’e.
İki sütun aynı anda sıfırlanmıyor ve sıfırlanamaz — çünkü örtüşme bandındaki akışların skorları birbirinden ayırt edilemez. Bu, önceki iki dersteki durumdan başka bir şey: orada iki yönlü hata yanlış yazılmış bir kümenin sonucuydu ve doğru küme ikisini birden sıfırlıyordu. Burada doğru eşik yok; yalnız hangi hatanın tercih edildiğine dair bir karar var. Tek yönü sıfırlamak öbür yönü gizler, ve gizlenen yön ölçülmediği sürece düzenek kusursuz görünür.
Doğru sütununun tepe noktası eşik 9’da, 35‘te. Hataların eşit olduğu nokta ise eşik 8’de (4 ve 4) ve orada doğru 32. İkisini eşitlemek toplam doğruyu en büyük yapmıyor, çünkü iki sınıfın büyüklüğü eşit değil: niyet 22 akışı geçiriyor, 18’ini durduruyor. Hangisinin daha pahalı olduğu ölçünün söyleyeceği bir şey değil, politikanın söyleyeceği bir şeydir.
Görüşün Tabanı
Konak tabanlı sistem daha keskin bir skor üretiyor ama fazla geçeni hiçbir eşikte 8’in altına inmiyor. Nedeni eşikte değil: kırk akışın 19’u onun görüş alanının dışında ve bunların 8’i niyetin durdurduğu akış. Görülmeyen akış hakkında karar da yok, hata da yok — yalnız geçiş var. Eşikle onarılamayan tek hata, görülmeyen olaydan doğan hatadır.
İkisi birlikte çalıştığında tablo değişiyor. Eşik 9’da ağ tabanlı 5, konak tabanlı 11 akış kaçırıyor; ikisi birlikte 2. Fazla duran yine 0 ve doğru 38’e çıkıyor — iki sistemin tek başına ulaşamadığı bir sayı. Kazanç birleştirmenin kendisinden değil, körlüklerin örtüşmemesinden geliyor: ağ tabanlının gürültüde kaybettiği akışı konak tabanlı keskin görüyor, konak tabanlının hiç görmediği bölgeyi ağ tabanlı görüyor. Kalan 2 kaçırılan akış ikisinin de yanıldığı yerdir ve daha fazla düzenek eklemek onu kapatmaz; kapatan şey ölçütü değiştirmektir.
Tespit ile Önleme Arasındaki Fark
Buraya kadarki bütün satırlar iki kipte de aynıdır. Saldırı önleme sistemi (intrusion
prevention system) akışı keser; tespit sistemi akışı geçirir ve bir kayıt yazar. Fazla
geçen ve fazla duran sayıları ikisinde de aynı çıkar, çünkü ikisi de aynı kararı verir.
Değişen şey o kararın bedelidir, ve bedel durduran sütununda durur.
Önleme kipinde bu sütun kesilen akış sayısıdır: eşik 6’da kırk akışın 31’i kesilir ve bunların 13‘ü kesilmemeliydi. Tespit kipinde aynı sütun uyarı sayısıdır: 31 kayıt yazılır, 13’ü yanlış alarmdır ve bir kişi hepsini okumak zorundadır.
Bu ayrım eşik kararını doğrudan etkiler. Eşiği 9’dan 6’ya çekmek kaçırılan 5 akışı kurtarır; karşılığında durduran sayısı 13’ten 31’e çıkar — 2,4 kat. Önleme kipinde bu on sekiz akışlık fazladan kesinti demektir; tespit kipinde on sekiz fazladan kayıt. Aynı ölçü, iki ayrı fatura.
Açık Kalan Yüzeyler ve Daraltmalar
Birinci yüzey — kaçırılan akış. Eşik 9’da beş, ikisi birlikte çalışırken iki yasak akış geçiyor ve hiçbirinin arkasında bir kayıt yok. Kırklık kümede iki akış 0,050’lik bir paydır ve ölçüm bandının iki katıdır; yok sayılamaz. Daraltma: eşiği düşürmek değil — o öbür sütunu büyütür — ölçütü değiştirmek. Bu akışların hepsi kural dizisinin zaten kesin ayırt ettiği alanlara sahip; eşiğe dayanan düzenek kural dizisinin yerine değil, yanına konur.
İkinci yüzey — görülmeyen bölge. Konak tabanlı sistemin görmediği on dokuz akışın sekizi yasak. Bu sekiz akış için sistem bir karar vermiyor ve verilmeyen karar bir kayıt da üretmiyor; denetleyen taraf için sessizlik ile temizlik aynı görünür. Daraltma: görüş alanının kendisini raporlamak — hangi bölgelerin izlendiğini ve hangilerinin izlenmediğini akış sayılarıyla yazmak. Kapsamı bilinmeyen bir ölçümün sayısı okunamaz.
Üçüncü yüzey — uyarı yığını. Eşiği sıkmak uyarıyı 13’ten 31’e çıkarıyor ve fazladan on sekiz kaydın on üçü yanlış alarm. Okunamayan uyarı, yazılmamış uyarıyla aynı işi görür; sıkı bir eşik bu yolla kendi kazancını geri verebilir. Daraltma: eşiği tek bir sayı olarak değil, bölgeye göre ayrı ayrı seçmek — yönetim bölgesine inen akışta sıkı, dışarıyla konuşan akışta gevşek. Ölçüm bunu doğrudan destekler: iki sistemin farkı da zaten bölgeye göre değişiyordu.
Özet
- Eşiğe dayanan bir düzeneğin ölçütü sürekli olduğu için iki sınıfın değerleri bir bantta örtüşür; bu ölçümde bant 7–8’dir ve iki yönlü hatanın tamamı o bandın içinde doğar.
- Ağ tabanlı sistemde eşik 7 iken fazla geçen 0, fazla duran 7; eşik 9 iken fazla duran 0, fazla geçen 5. İki sütun aynı anda sıfırlanamaz.
- Hataları eşitleyen eşik (8’de 4 ve 4) toplam doğruyu en büyük yapmaz; sınıflar eşit büyüklükte değildir ve hangi hatanın daha pahalı olduğu ölçünün değil politikanın kararıdır.
- Konak tabanlı sistemin fazla geçeni hiçbir eşikte 8’in altına inmez, çünkü kırk akışın 19’unu hiç görmez; eşikle onarılamayan tek hata görülmeyen olaydan doğar.
- İkisi birlikte eşik 9’da 38 doğru veriyor; kazanç birleştirmeden değil körlüklerin örtüşmemesinden gelir ve kalan 2 kaçırılan akış ikisinin de yanıldığı yerdir.
- Tespit ile önleme aynı sayıları üretir, aynı bedeli ödetmez:
durduransütunu önlemede kesilen akış, tespitte okunması gereken uyarıdır — eşiği 9’dan 6’ya çekmek onu 2,4 kat büyütür.
Sonraki Adım
Bu konudaki dört ders de tek bir varsayımı paylaştı: dışarısı dışarıdadır. Kural dizisi,
bölge grafiği ve eşik, hepsi bir akışın nereden geldiğine bakarak karar verdi ve
dis adı her üçünde de “güvenilmeyen” ile eş anlamlıydı. Peki dışarıdaki bir uç içeri
alınmak zorundaysa? Evinden çalışan biri, başka bir yerdeki bir bölge, ya da denetimi
elimizde olmayan bir yol üzerinden konuşan iki ağ — bunların hiçbiri disin dışına
çıkmıyor, ama hepsinin ic gibi davranması bekleniyor. Sonraki ders bu ucu içeri almanın
düzeneğini kurar ve yine aynı iki sütunu sorar: içeri alınacak hedefler nasıl seçiliyor,
seçilmeyen ne oluyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.