---
title: 'Güvenlik Duvarı Türleri'
source: 'https://academia.sh/tr/kurslar/kablosuz-ve-guvenlik/guvenlik-duvari-turleri'
course: 'Kablosuz Ağlar ve Ağ Güvenliği'
language: tr
updated: '2026-08-17T18:07:22+00:00'
license: 'CC BY-SA 4.0'
---

# Güvenlik Duvarı Türleri

Paket filtreleyen, durum bilgili ve uygulama farkındalıklı düzeneklerin aynı kırk akıştaki semantiği: yansımasız filtre 6 akışı fazladan geçirip 7 akışı fazladan durdurur, durum bilgili düzenek ikisini birden sıfırlar, uygulama farkındalıklı düzenek ise niyetin yazmadığı bir alanı okuduğu için yalnız 8 fazla duran üretir.

Önceki ders hücresel kapsamayı bitirdi ve şunu bıraktı: buraya kadar sınırı çizen şey
**ortamdı**. İşaret gücü eşiğin altına düştüğü yerde bağ kesiliyordu; hücrenin kenarını
kimse yazmamıştı. Yarıçap bir tasarım sözüydü, onu uygulayan taraf fizikti.

Bu ders sınırın yazıldığı yerden başlar. Bir **güvenlik duvarı (firewall)**, geçişin nerede
biteceğini ortama bırakmaz: sınırı **sıralı bir kural dizisi** olarak yazar ve her akışı o
diziden geçirir. Yazılmış sınırın ortamınkine göre bir üstünlüğü vardır — okunabilir. Bir de
eksikliği vardır: yazan kişi ne yazdıysa o çalışır, ne demek istediği değil. Bu dersin
sorusu, aynı dizinin farklı düzeneklerde neden farklı davrandığıdır.

## Yazılmış Sınırın İki Kuralı

Kural dizisinin semantiği iki kuralla tanımlanır ve ikisi de kurs boyunca sabittir.

**İlk eşleşen kazanır.** Akış diziye baştan girer, eşleşen ilk kuralın eylemi uygulanır ve
değerlendirme orada biter. Dizinin geri kalanı okunmaz.

**Dizi örtük retle biter.** Hiçbir kural eşleşmezse akış geçmez. **Örtük ret (implicit
deny)** yazılmaz; dizinin bittiği yerden doğar. Ölçümde **fazla duranın** sessiz kaynağı
budur: örtük retin durdurduğu akışın karşısında bir kural adı yoktur, dolayısıyla kimse onu
aramaz.

Bu iki kural birlikte **değerlendirme sırasını (evaluation order)** anlamın parçası yapar.
Sıranın kendisi ayrı bir ölçü nesnesidir ve sonraki dersin konusudur; burada dizi sabit
tutulur ve yalnız onu işleten düzenek değişir. Kural dökümü şudur:

```text
# ogretilen kural dokumu , calistirilmamistir
# sozdizimi kurgudur ve hicbir cihazin bicimi degildir

sira  eylem  kaynak    hedef   bnokta
  1   gecir  dis       dmz     80
  2   gecir  dis       dmz     443
  3   gecir  dmz       ic      3306
  4   gecir  yonetim   *       *
  5   gecir  ic        dmz     *
  6   gecir  ic        dis     *
  7   gecir  ic        ic      *
  -   ortuk ret : dizinin bittigi yer
```

Siber Güvenlik müfredatının Çevre Savunması konusu güvenlik duvarını **nesilleriyle** ve
saldırının karşısındaki duruşuyla ele aldı; o anlatı burada tekrarlanmaz. Bu derste ölçülen
şey nesil değil, **düzeneğin okuduğu alan kümesinin** aynı diziyi nasıl başka bir sınıra
çevirdiğidir.

## Üç Türün Gördüğü Alanlar

Üç tür arasındaki fark, kuralların yazımında değil, kuralın uygulandığı **girdide**dir.

**Paket filtreleme (packet filtering)** her paketi tek başına değerlendirir: kaynağını,
hedefini ve bağlantı noktasını okur, kararı verir, unutur. Belleği yoktur.

**Durum bilgili (stateful)** düzenek bir durum çizelgesi tutar. Bir konuşma açıldığında ve
geçirildiğinde çizelgeye yazılır; o konuşmanın sonraki paketleri kural dizisine yeniden
sokulmaz, çizelgeden karşılanır. Bu düzeneğin kural dizisine sorduğu soru, paketin kendi
yönü değil, **konuşmayı açan yön**dür.

**Uygulama farkındalıklı (application aware)** düzenek bunun üstüne akışın gerçekten ne
taşıdığını okur: bağlantı noktası bir uygulamayı ima eder, taşınan içerik onu doğrulayabilir
ya da doğrulamayabilir.

Paket filtrelemenin belleksizliğinin doğrudan bir sonucu vardır. Geçirilmiş bir konuşmanın
dönüş yönü, kural dizisine ters çevrilmiş bir üçlü olarak girer ve genellikle hiçbir kurala
uymaz; örtük ret onu keser. Bu eksiğin bilinen durağan çaresi **ayna kuralı**dır: yönlü her
kuralın kaynağı ile hedefi yer değiştirilerek diziye ikinci bir kopya eklenir. Ayna, durum
bilgisinin bir taklididir ve iki yerde tökezler. Birincisi, iki ucunu birden yazmayan bir
kuralın aynası yoktur. İkincisi, ayna kuralı dönüş paketiyle **yeni** bir bağlantıyı
birbirinden ayırt edemez; ikisine de aynı kapıyı açar.

Ölçümün varsayımları:

- **AG1** — Kırk akış ortak kurgudan üretilir; kaynağı, hedefi ve bağlantı noktası
  kurgudandır. Kâhin niyetin kendisidir ve kurguyu biz yazdığımız için bilinir.
- **AG2** — Her akışa iki alan eklenir: **evre** (yeni bağlantı mı, açılmış bir konuşmanın
  sürdürülmesi mi) ve **taşıdığı** (bağlantı noktasının ima ettiği uygulamayı taşıyıp
  taşımadığı). İkisi de ayrı bir üreteçten gelir; temel kırk akış değişmez.
- **AG3** — Kurulu bir akışın niyeti, **konuşmayı açan yönün** niyetidir: politika ters
  çevrilmiş üçlüye uygulanır. Politika işlevinin kendisi değiştirilmez.
- **AG4** — Dört düzenek de **aynı yedi kurallık diziyi** kullanır. Değişen tek şey
  düzeneğin okuduğu alan kümesidir; kural kümesinin doğruluğu bu derste ölçülmez.
- **AG5** — Durum bilgili düzenek, kurulu bir akışta diziyi konuşmanın **açılış yönüne**
  uygular; durum çizelgesinin kaydettiği bilgi budur.
- **AG6** — Uygulama farkındalıklı düzenek, durum bilgili kararın üstüne taşınan uygulamanın
  bağlantı noktasına uyup uymadığını arar. Kâhin bu alanı **okumaz**.
- **AG7** — Kırk olaylık kümede ölçülebilen en küçük fark **1/40 = 0,025**'tir; bundan küçük
  bir fark bu kümeyle savunulmaz.

## Ölçüm

```python
"""Guvenlik duvari turleri: ayni kirk akista dort duzenek.

Bolum 1 - kural dizisi sabit; degisen sey duzenegin okudugu alan.
Bolum 2 - her turun niyetten iki yonde birden sapmasi.
"""
TOHUM = 20260811
BOLGELER = ("dis", "dmz", "ic", "yonetim")
NOKTALAR = (80, 443, 22, 3306, 8080)


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 evrele(ak, tohum=TOHUM + 1):
    """Her akisa evre ve tasidigi alanlarini ekler."""
    r = uretec(tohum)
    for a in ak:
        a["evre"] = ("yeni", "kurulu", "kurulu", "yeni")[r(4)]
        a["tasidigi"] = ("uygun", "uygun", "uygun", "baska")[r(4)]
    return ak


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 kural_dizisi(kurallar):
    """Ilk eslesen kazanir; sonda ortuk ret."""
    def calis(a):
        for eylem, olcut in kurallar:
            if all(a[k] == v for k, v in olcut.items()):
                return eylem
        return False
    return calis


DAR = [(True, {"kaynak": "dis", "hedef": "dmz", "bnokta": 80}),
       (True, {"kaynak": "dis", "hedef": "dmz", "bnokta": 443}),
       (True, {"kaynak": "dmz", "hedef": "ic", "bnokta": 3306}),
       (True, {"kaynak": "yonetim"}),
       (True, {"kaynak": "ic", "hedef": "dmz"}),
       (True, {"kaynak": "ic", "hedef": "dis"}),
       (True, {"kaynak": "ic", "hedef": "ic"})]
UCLU = ("kaynak", "hedef", "bnokta")


def ters(a):
    return {"kaynak": a["hedef"], "hedef": a["kaynak"], "bnokta": a["bnokta"]}


def yansimalar(kurallar):
    """Iki ucunu da yazan her kuralin ayna esi."""
    y = []
    for eylem, olcut in kurallar:
        if "kaynak" in olcut and "hedef" in olcut:
            t = dict(olcut)
            t["kaynak"], t["hedef"] = olcut["hedef"], olcut["kaynak"]
            y.append((eylem, t))
    return y


def gorunen(a, alanlar):
    return {k: v for k, v in a.items() if k in alanlar}


def niyet(a):
    """Kurulu bir akisin niyeti, konusmayi acan yonun niyetidir."""
    return politika(a if a["evre"] == "yeni" else ters(a))


def paket(kurallar):
    k = kural_dizisi(kurallar)
    return lambda a: k(gorunen(a, UCLU))


def durum_bilgili(kurallar):
    k = kural_dizisi(kurallar)
    return lambda a: k(gorunen(a, UCLU)) if a["evre"] == "yeni" else k(ters(a))


def uygulama_farkindalikli(kurallar):
    d = durum_bilgili(kurallar)
    return lambda a: d(a) and a["tasidigi"] == "uygun"


AK = evrele(akislar())
AYNALI = DAR + yansimalar(DAR)
TURLER = (("paket, yansımasız", DAR, paket(DAR)),
          ("paket, yansımalı", AYNALI, paket(AYNALI)),
          ("durum bilgili", DAR, durum_bilgili(DAR)),
          ("uygulama farkındalıklı", DAR, uygulama_farkindalikli(DAR)))

print(f"akış {len(AK)} | yeni {sum(a['evre'] == 'yeni' for a in AK)} | "
      f"kurulu {sum(a['evre'] == 'kurulu' for a in AK)} | "
      f"niyetin geçirdiği {sum(niyet(a) for a in AK)} | "
      f"kaleme uymayan {sum(a['tasidigi'] == 'baska' for a in AK)}")
print()
print(f"{'düzenek':<22s} {'kural':>5s} {'doğru':>6s} {'fazla geçen':>12s} "
      f"{'fazla duran':>12s}")
for ad, k, d in TURLER:
    s = fark(AK, niyet, d)
    print(f"{ad:<22s} {len(k):5d} {s['dogru_gecti'] + s['dogru_durdu']:6d} "
          f"{s['yanlis_gecti']:12d} {s['yanlis_durdu']:12d}")
print()
print("yansımasızın durdurduğu kurulu akışlar:",
      [a["no"] for a in AK
       if a["evre"] == "kurulu" and niyet(a) and not paket(DAR)(a)])
print("her iki filtrenin fazladan geçirdikleri:",
      [(a["no"], a["kaynak"], a["hedef"], a["bnokta"])
       for a in AK if not niyet(a) and paket(AYNALI)(a)])
print("uygulama farkındalıklının fazladan durdurdukları:",
      [(a["no"], a["kaynak"], a["hedef"], a["bnokta"])
       for a in AK if niyet(a) and durum_bilgili(DAR)(a)
       and not uygulama_farkindalikli(DAR)(a)])
```

```
akış 40 | yeni 20 | kurulu 20 | niyetin geçirdiği 23 | kaleme uymayan 12

düzenek                kural  doğru  fazla geçen  fazla duran
paket, yansımasız          7     27            6            7
paket, yansımalı          13     30            6            4
durum bilgili              7     40            0            0
uygulama farkındalıklı     7     32            0            8

yansımasızın durdurduğu kurulu akışlar: [12, 26, 27, 31, 32, 36, 37]
her iki filtrenin fazladan geçirdikleri: [(1, 'yonetim', 'ic', 3306), (6, 'yonetim', 'ic', 3306), (30, 'ic', 'dis', 3306), (35, 'ic', 'dis', 3306), (38, 'yonetim', 'ic', 443), (40, 'ic', 'dis', 443)]
uygulama farkındalıklının fazladan durdurdukları: [(7, 'yonetim', 'yonetim', 443), (8, 'yonetim', 'dmz', 443), (9, 'dis', 'dmz', 443), (15, 'yonetim', 'yonetim', 443), (20, 'ic', 'dmz', 443), (21, 'ic', 'dmz', 22), (32, 'dis', 'ic', 443), (36, 'dis', 'ic', 443)]
```

## Durum Bilgisinin Kurtardığı

Yansımasız filtre kırk akışın **27**'sinde niyetle aynı kararı veriyor. Kalan on üç,
**iki ayrı hata** olarak ikiye ayrılıyor ve ikisi de yazılmalıdır.

**Fazla geçen 6.** Altısı da kurulu akış. Bunların hepsinde filtre paketin kendi yönüne
bakıyor ve o yön kurala uyuyor — ama konuşmayı açan yön uymuyordu. `yonetim`den `ic`e dönen
paket dördüncü kurala takılıp geçiyor; oysa konuşmayı `ic` açmıştı ve `ic`ten `yonetim`e
gitmek niyetin yasakladığı tek şeydi. Filtre paketi doğru okuyor, konuşmayı yanlış okuyor.

**Fazla duran 7.** Yedisi de kurulu akış. Geçirilmiş bir konuşmanın dönüş yönü hiçbir
kurala uymuyor ve örtük ret onu kesiyor. Bu yedi akışın kesildiğine dair bir kayıt
üretilmez; dizide onları durduran bir satır yoktur.

Ayna kuralları eklendiğinde dizi yediden **13**'e çıkıyor ve fazla duran **7**'den **4**'e
iniyor. Kurtarılan üç akışın üçü de `dis`ten `ic`e dönen paketler; onları kurtaran şey,
üçüncü ve altıncı kuralın ayna eşleridir. Kalan dördü kurtarılamıyor, çünkü hepsi
`yonetim` bölgesine dönüyor ve o bölgenin kuralı yalnız kaynağını yazıyor: **iki ucunu
yazmayan kuralın aynası yoktur.**

Aynanın ödemediği şey ise fazla geçen sütunu: **6'dan 6'ya**, hiç değişmedi. Ayna, dönüş
paketiyle yeni bir bağlantıyı ayırt edemediği için zaten var olan yanlışı düzeltemez.
Altı kural eklemek dizinin uzunluğunu %86 artırdı, niyetten sapmayı ise on üçten ona
indirdi — ve sapmanın yönlerinden birine hiç dokunmadı.

Durum bilgili düzenek aynı yedi kuralla **40/40** veriyor: fazla geçen **0**, fazla duran
**0**. Kazanç kuralın yazımından değil, sorunun değişmesinden geliyor. Düzenek kurulu bir
akış için "bu üçlü kurala uyuyor mu" diye sormuyor; "bu konuşma açılırken geçirilmiş miydi"
diye soruyor. İki soru kırk akışın on üçünde ayrı yanıt veriyor.

## Uygulama Farkındalığının Ölçülemeyeni

Uygulama farkındalıklı düzenek durum bilgili karara bir koşul ekliyor ve sonuç **kötüleşiyor**:
doğru **40**'tan **32**'ye iniyor, fazla duran **0**'dan **8**'e çıkıyor. Fazla geçen yine
**0**.

Bu bir kusur değil, ölçünün sınırı. Kırk akışın **12**'si bağlantı noktasının ima ettiğinden
başka bir uygulama taşıyor; düzenek bunları görüyor ve kesiyor. Kâhin ise o alanı hiç
okumuyor: niyet "dışarıdan yalnız silahtan arındırılmış bölgenin web kalemine" derken
**kalemi bağlantı noktasıyla** tarif ediyor, taşınan uygulamayla değil. Niyetin ölçüt almadığı
bir alanı ölçüte alan düzenek, o alanda ne kadar haklı olursa olsun, bu kâhinde yalnız fazla
duran üretir.

Buradan çıkan sonuç düzenek hakkında değil, niyet hakkındadır. Uygulama farkındalığının
kazandırdığı şeyi ölçebilmek için **politikanın kendisinin uygulama diliyle yeniden
yazılması** gerekir. Bu bir cihaz özelliği değil, bir politika kararıdır; ve yazılmadığı
sürece cihazın fazladan gördüğü alan ölçüye giremez.

## Açık Kalan Yüzeyler ve Daraltmalar

**Birinci yüzey — ayna kuralının yönü.** `dis` ile `ic` arasındaki ayna kuralı bağlantı
noktası taşımıyor; dönüş paketini geçirirken **yeni** bir dış bağlantıyı da geçirir.
Ölçümde bu yüzeyden sıfır fazla geçen çıktı, çünkü kırk akışın içinde `dis`ten `ic`e giden
**yeni** bir akış yok. Sıfır ölçmek yüzeyin kapalı olduğunu göstermez; bu, kümenin
çözünürlüğüdür. **Daraltma:** ayna yerine durum bilgisi. Çizelge kapıyı yalnız açılmış
konuşmalara açar ve aynı dizide fazla geçeni **6**'dan **0**'a indirir.

**İkinci yüzey — yönsüz kural.** Dördüncü kural yalnız kaynağını yazıyor: yönetim
bölgesinden her hedefe, her bağlantı noktasına. Bu genişlik iki yönde de ödüyor — ileri
yönde ölçülemeyen bir açıklık, dönüş yönünde aynasızlık yüzünden **4** fazla duran.
**Daraltma:** kuralın hedefini ve bağlantı noktasını da yazmak. Bunun bedeli kural
sayısıdır ve o bedelin ölçülmesi sonraki iki dersin işidir.

**Üçüncü yüzey — kaleme uymayan taşıma.** Kırk akışın **12**'si bağlantı noktasının ima
ettiğinden başkasını taşıyor. Bağlantı noktasına bakan üç düzenek de bunların hepsini
geçiriyor ve ölçüde bu bir hata olarak görünmüyor. **Daraltma:** niyeti uygulama diliyle
yeniden yazmak. Cihazın fazladan okuması tek başına bir daraltma değildir; okunanı ölçüt
sayan bir niyet gerekir.

## Özet

- Yazılmış sınırın iki değişmezi vardır: ilk eşleşen kazanır ve dizi örtük retle biter.
  Örtük ret, karşısında bir kural adı olmadığı için fazla duranı görünmez kılar.
- Üç türü ayıran şey kuralların yazımı değil, kuralın uygulandığı girdidir: paket filtreleme
  üçlüyü, durum bilgili düzenek konuşmanın açılış yönünü, uygulama farkındalıklı düzenek
  taşınan uygulamayı okur.
- Aynı yedi kuralla yansımasız filtre **6** fazla geçen ve **7** fazla duran, ayna kurallı
  filtre 13 kuralla **6** ve **4**, durum bilgili düzenek **0** ve **0** veriyor.
- Ayna kuralı fazla duranı üçte bir azaltır ama fazla geçene hiç dokunmaz ve iki ucunu
  yazmayan kuralı taklit edemez; durum bilgisinin yerini tutmaz.
- Uygulama farkındalıklı düzenek **8** fazla duran üretir ve fazla geçeni azaltmaz; niyet
  bağlantı noktasıyla yazıldığı sürece fazladan okunan alan ölçüye giremez.

## Sonraki Adım

Bu derste kural dizisi sabit tutuldu ve yalnız onu işleten düzenek değişti. Diziye kendisine
bakılmadı: yedi kural doğru sayı mıdır, sıraları doğru sıra mıdır, bir kuralı silmek neyi
açar? Sonraki ders düzeneği sabitler ve diziyi değiştirir. Altı kurallık kısa bir küme,
sekiz kurallık uzun bir küme ve yedi kurallık dar küme aynı kırk akışta yan yana konur;
ölçülen şey kural sayısı ile politikanın karşılanması arasında bir bağ olup olmadığı ve
bir kuralın kendinden önceki bir kural yüzünden nasıl hiç okunmadan kalabileceğidir.
