İçeriğe geç
academia.sh

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 ic ya da yonetim olan akışı görür; öteki akışlarda kararı geçirdir, çünkü kararı yoktur.
  • AG26 — Düzeneğin kararı skor < eşik biçimindedir; eşik yükseldikçe daha az akış durdurulur.
  • AG27 — İkisi birlikte çalışırken akış ancak her ikisi de geçirirse geçer.
  • AG28durduran sü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: durduran sü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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat