---
title: 'Güvenlik Duvarı Kuralları'
source: 'https://academia.sh/tr/kurslar/linux-ag-yonetimi/guvenlik-duvari-kurallari'
course: 'Linux Ağ Yönetimi ve Sorun Giderme'
language: tr
updated: '2026-08-17T18:09:59+00:00'
license: 'CC BY-SA 4.0'
---

# Güvenlik Duvarı Kuralları

Varsayılan reddet politikasının beş adımı yüz yirmi sırada uygulanır; kırkı tam, yirmisi yarım kilitlenme üretir, son kural kümesi yüz yirmi sıranın hepsinde aynı olduğu için kuru çalışma bunların sıfırını önler ve yazım hatalarında kuru çalışma beş, uçtan deneme beş aday eler.

Önceki ders kararın hangi durakta verildiğini sordu ve kâhin olarak politikayı seçti: hiçbir kural
eşleşmediği için zincirin varsayılanı devreye girmişti. O varsayılan bir kaza değil, bir tercihtir.
Bu ders o tercihi ve onu kurma işini ele alır.

Varsayılan reddet politikası tek bir satırdır ve o satırın **ne zaman** yazıldığı, ne yazdığından
daha çok sonuç doğurur. Bu dersin ölçtüğü şey kuralların içeriği değil, **uygulanma sırasıdır**;
ve bu sıranın yanlış seçilmesi, yöneticinin makineyle arasındaki tek yolu kesebilir.

## Varsayılan Reddet ve Meşru Akışlar

**Varsayılan reddet** (default deny), bir zincirin politikasını "eşleşmeyen her şeyi reddet"
olarak kurmaktır. Karşıtı varsayılan kabuldür: eşleşmeyen her şey geçer ve yasaklamak istediğiniz
her durumu tek tek yazmanız gerekir. İkisi arasındaki fark bir kural sayısı farkı değil, bir
**hata yönü** farkıdır. Varsayılan kabulde unutulan kural bir açıklık üretir; varsayılan reddette
unutulan kural bir kesinti üretir. Kesinti görülür, açıklık görülmez.

Varsayılan reddet kurulurken ayakta tutulması gereken meşru akışlar vardır ve bu kurguda dört
tanedir. **Geri döngü** akışı makinenin kendi süreçlerinin birbiriyle konuşmasıdır. **Kurulu
bağlantı** akışı, halihazırda açık oturumların geri dönüş paketleridir. **Yönetim** akışı
yöneticinin bu makineye ulaşma yoludur. **Hizmet** akışı makinenin dışarıya sunduğu servistir.
Her biri bir kuralla ayakta kalır.

Beş adım vardır ve dördü izin, biri politikadır. Aşağıdaki döküm çalıştırılmamıştır ve
çalıştırılabilir bir komut dizisi değildir; yalnız adımların adlarını ve iki sıralamanın farkını
göstermek için yazılmıştır:

```text
# ornek dokum , calistirilabilir bir dizi degildir
# guvenli sira: reddet politikasi EN SONA birakilir
1 geri-dongu-izni
2 kurulu-baglanti-izni
3 yonetim-izni
4 hizmet-izni
5 varsayilan-reddet

# kilitleyen sira: reddet , yonetim ve kurulu izinlerinden ONCE
1 varsayilan-reddet     <- uzak oturum bu adimda duser
2 ...                   <- kalan adimlar uygulanamaz
```

**Kilitlenme** (lockout), yöneticinin kendi erişimini kesmesidir. Bu sözcük **İşletim Sistemi
Kavramları** kursundaki `deadlock` karşılığıyla aynıdır ama olay aynı değildir: orada birbirini
bekleyen iki süreç vardır ve hiçbiri ilerleyemez, burada tek bir yönetici vardır ve kendi
kanalını kapatmıştır. Ortak yanları yalnız sonucun geri döndürülemez görünmesidir.

## Yüz Yirmi Sıra

Kurgu şudur: beş adım bir makinede uygulanacak ve yönetici uzaktan bağlıdır. Adımların sırası
serbesttir; bütün sıralar tüketici olarak sayılır.

- **EF31** — Beş adımın **120** sırası tam sayımla üretilir; örnekleme ve tohum yoktur.
- **EF32** — Yöneticinin oturumu, reddet politikası uygulandığında **yönetim izni** ya da
  **kurulu bağlantı izni** kurallarından en az biri yerindeyse ayakta kalır.
- **EF33** — Oturum düştüğünde kalan adımlar **uygulanamaz**; sıra orada kesilir.
- **EF34** — Kurulu bağlantı izni verilip yönetim izni verilmeden reddet uygulanırsa mevcut
  oturum yaşar, **yeni bağlantı kurulamaz**; bu duruma yarım kilitlenme denir.
- **EF35** — Geri alma zamanlayıcısı **120 saniyeye** kurulur; süre dolduğunda önceki kural
  kümesi geri yüklenir.
- **EF36** — Kural yazımı ölçümünde **yedi aday** vardır: altı yazım hatası ve hatasız durum.
- **EF37** — Kuru çalışma, uygulanacak kural kümesini uygulamadan üretir ve **yapısal** hataları
  görür; niyeti bilmediği için yanlış yazılmış bir bağlantı noktasını göremez.
- **EF38** — Uçtan deneme dört meşru akışın hepsini yoklar; bu yüzden altı hatanın hepsini
  görür, ama kural kümesinin **uygulanmış** olmasını gerektirir.
- **EF39** — Aday kümesi süpürmesi altı, yedi ve sekiz adaylı listelerle yapılır.
- **EF40** — Bütün sayılar tam sayımdır; rastgelelik ve tohum yoktur.

```python
"""Varsayilan reddet: uygulama sirasi ve kural yazim hatalari.

Bolum 1 - bes adimin 120 sirasi tuketici sayilir , kac sira kilitlenme uretir.
Bolum 2 - yedi aday (alti yazim hatasi ve hatasiz durum) , dort okuma.
"""
from itertools import permutations

ADIM = ("geri-dongu-izni", "kurulu-baglanti-izni", "yonetim-izni",
        "hizmet-izni", "varsayilan-reddet")
GERI_ALMA = 120


def uygula(sira):
    """Reddet politikasi uygulanirken yonetim ya da kurulu izni yoksa uzak
    oturum duser; kalan adimlar uygulanamaz."""
    var = set()
    for i, a in enumerate(sira):
        var.add(a)
        if a == "varsayilan-reddet":
            if not ({"yonetim-izni", "kurulu-baglanti-izni"} & var):
                return "tam-kilitlenme", i + 1, len(sira) - (i + 1)
            if "yonetim-izni" not in var:
                return "yarim-kilitlenme", i + 1, 0
    return "guvenli", len(sira), 0


SIRALAR = list(permutations(ADIM))
SONUC = [uygula(s) for s in SIRALAR]
SAYIM = {}
for tur, _, _ in SONUC:
    SAYIM[tur] = SAYIM.get(tur, 0) + 1
print("bes adimin butun siralari:", len(SIRALAR))
for tur in ("guvenli", "yarim-kilitlenme", "tam-kilitlenme"):
    print(f"  {tur:18s} {SAYIM.get(tur, 0):3d} / {len(SIRALAR)}"
          f"  oran {SAYIM.get(tur, 0) / len(SIRALAR):.4f}")
print("  tam kilitlenmede uygulanamayan adim toplami:",
      sum(u for t, _, u in SONUC if t == "tam-kilitlenme"))
print("  son kural kumesi kac ayri bicimde bitiyor:",
      len({frozenset(s) for s in SIRALAR}))
print()
TAM = SAYIM["tam-kilitlenme"]
print("uygulama bicimi         kilitlenme  harici mudahale  kesinti (sn)"
      "  kuru calismanin onledigi")
for ad, kilit, mudahale, kesinti, kuru in (
        ("duz uygulama", TAM, TAM, 0, 0),
        ("kuru calisma sonrasi", TAM, TAM, 0, 0),
        ("zamanlayiciyla geri alma", TAM, 0, TAM * GERI_ALMA, 0),
        ("ayri yonetim kanali", TAM, 0, 0, 0),
        ("atomik yukleme", 0, 0, 0, 0)):
    print(f"  {ad:23s} {kilit:10d} {mudahale:16d} {kesinti:13d} {kuru:27d}")
print()
HATA = {
    "sozdizimi-hatasi": (True, True, "yonetim-akisi-kesildi"),
    "kural-yanlis-zincirde": (False, True, "yonetim-akisi-kesildi"),
    "kural-sirasi-golgeliyor": (False, True, "hizmet-akisi-kesildi"),
    "durum-kurali-eksik": (False, True, "geri-donus-kesildi"),
    "yanlis-arayuz-adi": (False, True, "yonetim-akisi-kesildi"),
    "yanlis-bag-noktasi": (False, False, "hizmet-akisi-kesildi"),
    "hata-yok": (False, False, "hepsi-gecti"),
}
KAHIN = "yanlis-bag-noktasi"
SINAMA = {
    "sozdizim-denetimi": lambda a: "hata" if HATA[a][0] else "temiz",
    "kural-listesi": lambda a: ("kural-yok" if a == "sozdizimi-hatasi"
                                else "baska-zincirde"
                                if a == "kural-yanlis-zincirde" else "yerinde"),
    "kuru-calisma": lambda a: a if HATA[a][1] else "temiz",
    "uctan-deneme": lambda a: HATA[a][2],
}
RISK = {"sozdizim-denetimi": 0, "kural-listesi": 0, "kuru-calisma": 0,
        "uctan-deneme": sum(1 for a in HATA
                            if HATA[a][2] == "yonetim-akisi-kesildi")}
A = tuple(HATA)


def ele(adaylar, s, yanit):
    return tuple(a for a in adaylar if SINAMA[s](a) == yanit)


def obek(sinamalar, adaylar):
    o = {}
    for a in adaylar:
        o.setdefault(tuple(SINAMA[s](a) for s in sinamalar), []).append(a)
    return [sorted(v) for v in o.values() if len(v) > 1]


print("aday:", len(A), "| kahin:", KAHIN)
print()
print("okuma               ayri yanit  elenen  kalan  yonetimi kesme riski")
for s in SINAMA:
    kalan = len(ele(A, s, SINAMA[s](KAHIN)))
    print(f"  {s:18s} {len({SINAMA[s](a) for a in A}):11d} {len(A) - kalan:7d}"
          f" {kalan:6d} {RISK[s]:20d}")
print()
print("okuma kumesi                       ayrilamayan obek")
for ad, k in (("yalniz sozdizim denetimi", ["sozdizim-denetimi"]),
              ("sozdizim + kural listesi",
               ["sozdizim-denetimi", "kural-listesi"]),
              ("kuru calisma", ["kuru-calisma"]),
              ("uctan deneme", ["uctan-deneme"]),
              ("kuru calisma + uctan deneme",
               ["kuru-calisma", "uctan-deneme"])):
    o = obek(k, A)
    print(f"  {ad:34s} {len(o):8d}", o if o else "")
print()
print("aday kumesi supurmesi")
HATA["yanlis-kaynak-araligi"] = (False, False, "hizmet-akisi-kesildi")
for ad, k in (("6 aday: durum-kurali-eksik cikarildi",
               tuple(a for a in A if a != "durum-kurali-eksik")),
              ("7 aday: temel liste", A),
              ("8 aday: yanlis-kaynak-araligi eklendi",
               A + ("yanlis-kaynak-araligi",))):
    kalan = len(ele(k, "kuru-calisma", SINAMA["kuru-calisma"](KAHIN)))
    o = obek(["kuru-calisma", "uctan-deneme"], k)
    print(f"  {ad:38s} kuru calisma elenen {len(k) - kalan:2d} kalan {kalan:2d}"
          f" | iki okuma birlikte ayrilamayan obek {len(o)}"
          f" en buyuk {max((len(x) for x in o), default=0)}")
```

```
bes adimin butun siralari: 120
  guvenli             60 / 120  oran 0.5000
  yarim-kilitlenme    20 / 120  oran 0.1667
  tam-kilitlenme      40 / 120  oran 0.3333
  tam kilitlenmede uygulanamayan adim toplami: 140
  son kural kumesi kac ayri bicimde bitiyor: 1

uygulama bicimi         kilitlenme  harici mudahale  kesinti (sn)  kuru calismanin onledigi
  duz uygulama                    40               40             0                           0
  kuru calisma sonrasi            40               40             0                           0
  zamanlayiciyla geri alma         40                0          4800                           0
  ayri yonetim kanali             40                0             0                           0
  atomik yukleme                   0                0             0                           0

aday: 7 | kahin: yanlis-bag-noktasi

okuma               ayri yanit  elenen  kalan  yonetimi kesme riski
  sozdizim-denetimi            2       1      6                    0
  kural-listesi                3       2      5                    0
  kuru-calisma                 6       5      2                    0
  uctan-deneme                 4       5      2                    3

okuma kumesi                       ayrilamayan obek
  yalniz sozdizim denetimi                  1 [['durum-kurali-eksik', 'hata-yok', 'kural-sirasi-golgeliyor', 'kural-yanlis-zincirde', 'yanlis-arayuz-adi', 'yanlis-bag-noktasi']]
  sozdizim + kural listesi                  1 [['durum-kurali-eksik', 'hata-yok', 'kural-sirasi-golgeliyor', 'yanlis-arayuz-adi', 'yanlis-bag-noktasi']]
  kuru calisma                              1 [['hata-yok', 'yanlis-bag-noktasi']]
  uctan deneme                              2 [['kural-yanlis-zincirde', 'sozdizimi-hatasi', 'yanlis-arayuz-adi'], ['kural-sirasi-golgeliyor', 'yanlis-bag-noktasi']]
  kuru calisma + uctan deneme               0 

aday kumesi supurmesi
  6 aday: durum-kurali-eksik cikarildi   kuru calisma elenen  4 kalan  2 | iki okuma birlikte ayrilamayan obek 0 en buyuk 0
  7 aday: temel liste                    kuru calisma elenen  5 kalan  2 | iki okuma birlikte ayrilamayan obek 0 en buyuk 0
  8 aday: yanlis-kaynak-araligi eklendi  kuru calisma elenen  5 kalan  3 | iki okuma birlikte ayrilamayan obek 1 en buyuk 2
```

## Sıranın Bedeli

Üst tablo yüz yirmi sırayı üç öbeğe ayırıyor. **60** sıra güvenli, **20** sıra yarım kilitlenme,
**40** sıra tam kilitlenme üretiyor. Üçte biri. Reddet politikası, yönetim izni ve kurulu bağlantı
izni arasında hiçbir tercih yapılmadığında bu üç adımdan hangisinin önce geleceği eşit olasılıdır
ve reddetin önce gelmesi kilitlenmedir.

Yarım kilitlenmenin yirmi sırası, en sinsi öbektir. Kurulu bağlantı izni verilmiş, reddet
uygulanmış, yönetim izni henüz yazılmamıştır. Yöneticinin oturumu **ayaktadır**; komutlar
çalışmakta, çıktılar dönmektedir. Hiçbir belirti yoktur. O oturum herhangi bir nedenle
kapandığında geriye dönüş yoktur ve kapanma nedeni bir ağ kesintisi, bir uçbirim kapatması ya da
bir zaman aşımı olabilir. **Ayakta kalan oturum, erişimin sürdüğünün kanıtı değildir.**

Tam kilitlenmenin kırk sırasında bir bedel daha var: uygulanamayan adım toplamı **140**. Sıra
kesildiğinde kural kümesi yarım kalır ve yarım kalan küme genellikle hem yöneticiyi hem hizmeti
dışarıda bırakır. Arıza tek bir erişim arızası değil, aynı anda bir hizmet kesintisidir.

Üst tablonun son satırı bu dersin en önemli bulgusudur: **son kural kümesi yüz yirmi sıranın
hepsinde aynıdır** — bir tek biçim. Uygulanan adımların kümesi değişmiyor, yalnız sıraları
değişiyor. Bunun doğrudan sonucu şudur: son kural kümesini uygulamadan üreten ve inceleyen bir
kuru çalışma, bu kilitlenmelerin **hiçbirini** göremez. İkinci tablonun son sütunu bu yüzden
baştan aşağı sıfırdır. **Tehlike son durumda değil, ara durumlardadır.**

## Kilitlenmeyi Önleyen Yollar

İkinci tablo dört yolu bedelleriyle yan yana koyuyor.

**Düz uygulama** kırk kilitlenmede kırk harici müdahale demektir; her müdahale konsol düzeyinde
erişim ya da makinenin başına gitmek anlamına gelir. **Kuru çalışma sonrası uygulama** aynı
sayıları verir; kuru çalışma bu sınıf için değersizdir. **Zamanlayıcıyla geri alma** kırk
kilitlenmeyi önlemez ama harici müdahaleyi **sıfıra** indirir: yüz yirmi saniyelik zamanlayıcı
dolduğunda önceki kural kümesi geri yüklenir ve yönetici geri girer. Bedeli toplam **4800**
saniyelik kesintidir. **Ayrı yönetim kanalı** da kilitlenmeyi önlemez, müdahaleyi sıfıra indirir
ve kesinti üretmez; bedeli, o kanalın sürekli var olmasıdır. **Atomik yükleme** kural kümesini
tek bir işlemde değiştirir; ara durum oluşmadığı için kilitlenme sayısı **0** olur.

Dört yolun sırası bu tablodan çıkıyor. Ara durum üretmeyen yol en iyisidir, çünkü sorunu
kaynağında yok eder. Üretilen ara durumu kısa tutan yol ikincisidir. Ara durumu tolere edilebilir
kılan yol üçüncüsüdür. Ara durumu yalnız inceleyen yol ise bu sınıf için hiçbir şey yapmaz.

Kilitlenmenin kendi kanıtı da yoktur ve bu, kursun üçüncü iddiasının buradaki biçimidir. Oturum
düştüğü anda yöneticinin elinde kalan tek şey uçbirimde donmuş bir ekrandır; makinede ne olduğunu
söyleyecek satır makinenin içindedir ve makineye girilemez. Düşürülen yönetim paketinin izi de
önceki derste sayıldığı gibi kayıt açılmadıkça **sıfır satırdır**. Bu yüzden zamanlayıcının
süresi, günlüğü okuyup karar vermeye değil, **geri gelmeye** göre seçilir.

## Üç Sayı

Alt ölçüm kural yazımına bakıyor: küme doğru sırayla uygulanıyor, ama yazılmış kuralın kendisinde
bir hata olabilir. **Kâhin:** yedi adaydan gerçek olan `yanlis-bag-noktasi` — kural yazılmış,
sözdizimi doğru, zinciri doğru, sırası doğru ve içindeki bağlantı noktası yanlış. **Sınama:**
sözdizim denetimi "temiz" diyor, kural listesi kuralı "yerinde" gösteriyor, kuru çalışma "temiz"
diyor, uçtan deneme "hizmet akışı kesildi" diyor. **Elenen aday:** sözdizim denetimi **1**, kural
listesi **2**, kuru çalışma **5**, uçtan deneme **5**.

Son iki okuma aynı sayıda aday eliyor ve bıraktıkları iki adaylık kalıntı **farklı**. Kuru
çalışmanın bıraktığı çift `hata-yok` ile `yanlis-bag-noktasi`; yani kuru çalışma "temiz" dediğinde
gerçekten temiz olmakla, göremediği bir hatayı taşımak arasında ayrım yapamıyor. Uçtan denemenin
bıraktığı çift ise `kural-sirasi-golgeliyor` ile `yanlis-bag-noktasi`; ikisi de aynı akışı
kesiyor. İki okuma birlikte kullanıldığında ayrılamayan öbek **0**.

Sağdaki sütun neden ikisinin de gerektiğini söylüyor. Uçtan denemenin yönetim akışını kesme
riski **3**: yedi adayın üçünde deneme yapılabilmesi için uygulanan küme yöneticinin kendi yolunu
kapatır. Kuru çalışmanın riski **0**. Doğru sıra buradan çıkar: önce risksiz okuma, sonra
zamanlayıcı ya da ayrı kanal koruması altında riskli deneme. Kuru çalışma denemenin yerini almaz;
**denemeyi ucuzlatır**, çünkü yakalayabildiği beş hatayı deneme yapılmadan eler.

## Aday Kümesi Süpürmesi

Alt tablo yine üç boy deniyor. `durum-kurali-eksik` çıkarıldığında kuru çalışmanın elediği aday
beşten dörde iniyor, kalan yine iki. Listeye `yanlis-kaynak-araligi` eklendiğinde elenen sayısı
**5**'te kalıyor, kalan üçe çıkıyor ve iki okuma birlikte kullanıldığında bile ayrılamayan bir
öbek doğuyor: yeni aday da kuru çalışmadan kaçıyor ve aynı akışı kesiyor.

Örüntü konu boyunca aynı kaldı. Aday listesi büyüdükçe eleme sayısı sabit kalıyor, kalan
belirsizlik büyüyor. Kuru çalışmanın göremediği hata türü listeye her eklendiğinde, "temiz"
yanıtının anlamı bir aday daha zayıflıyor.

## Özet

- Varsayılan reddet politikası dört meşru akışı ayakta tutan dört izin kuralı ister: geri döngü,
  kurulu bağlantı, yönetim ve hizmet.
- Beş adımın **120** sırasından **60**'ı güvenli, **20**'si yarım kilitlenme, **40**'ı tam
  kilitlenme üretir; tam kilitlenmede uygulanamayan adım toplamı **140**.
- Yarım kilitlenmede mevcut oturum yaşar ve hiçbir belirti vermez; ayakta kalan oturum erişimin
  sürdüğünün kanıtı değildir.
- Son kural kümesi yüz yirmi sıranın hepsinde aynıdır; bu yüzden kuru çalışma sıra kaynaklı
  kilitlenmelerin **0'ını** önler. Zamanlayıcıyla geri alma ve ayrı yönetim kanalı harici
  müdahaleyi sıfırlar, atomik yükleme kilitlenmeyi sıfırlar.
- Kural yazım hatalarında kuru çalışma **5**, uçtan deneme **5** aday eler ve bıraktıkları
  kalıntı farklıdır; ikisi birlikte ayrılamayan öbeği **0**'a indirir. Uçtan denemenin yönetimi
  kesme riski **3**, kuru çalışmanınki **0**.

## Sonraki Adım

Bu ders bir makinenin kendi kapısını nasıl kapattığını saydı. Sonraki ders ters yöne bakar: aynı
makine bir ağın çıkışında durduğunda, arkasındaki makineler için adres dönüştürme yapar ve
dışarıdan gelen bağlantıları içeri yönlendirir. Her yönlendirme kuralı, kapatılan kapının yanında
bir pencere açar. Kursun son dersi o pencerelerin sayısını, tanıya verdiği zararı ve dönüştürme
kaydının ne kadar süre yaşadığını ölçer.
