13 Kasım 2026, Cuma
Sunucu İzleri

Altyapıyı anlamak, geleceği kurmak

Keşfet

Sunucu Güvenlik Duvarı Kuralları Yapılandırılırken Nelere Dikkat Edilir

Sunucu güvenlik duvarı kuralları yapılandırırken whitelist mantığı, SSH erişim kısıtlama ve log takibiyle açıkları nasıl önleyeceğinizi öğrenin.

Sunucu Güvenlik Duvarı Kuralları Yapılandırılırken Nelere Dikkat Edilir

Fotoğraf: Mikhail Nilov / Pexels

Bir bakışta

  • Güvenlik duvarında varsayılan red, sadece gerekli portları açık bırakan whitelist mantığı önerilir.
  • SSH gibi yönetim erişimleri belirli IP aralıkları veya VPN ile sınırlandırılmalı ve sıkı korunmalıdır.
  • Kural sırası, giden trafik kontrolü ve düzenli log takibi güvenlik açıklarını önlemede kritik rol oynar.

Güvenlik Duvarı Kuralları Neden Bu Kadar Kritik?

Bir sunucu internete açıldığı andan itibaren sürekli bir tarama ve deneme trafiğiyle karşı karşıya kalır. Güvenlik duvarı, bu dış dünya ile sunucu arasındaki ilk savunma katmanıdır; hangi trafiğin içeri girebileceğine, hangisinin reddedileceğine karar veren filtredir.

Ancak bu katmanın kendisi de yanlış kurulabilir. Çok gevşek yapılandırılmış bir güvenlik duvarı gereksiz portları açık bırakarak saldırı yüzeyini büyütür; çok sıkı ya da dikkatsizce yazılmış kurallar ise meşru erişimi engelleyip yöneticiyi kendi sunucusundan mahrum bırakabilir. Yani hem fazla açıklık hem de fazla kısıtlama pratik sorunlara yol açar.

Bu yazının amacı belirli bir ürünün arayüzünü anlatmak değil, kural yazarken izlenmesi gereken düşünme biçimini ve karar verme sürecini sadeleştirmektir.

Varsayılan Red, İzin Verilenler İstisna: Whitelist Mantığı

Güvenlik duvarı yapılandırmasında en temel prensiplerden biri, tüm trafiği varsayılan olarak reddedip yalnızca gerçekten ihtiyaç duyulan portları açmaktır. Buna genellikle whitelist (izin listesi) yaklaşımı denir.

Bunun tersi olan "her şeyi aç, riskli gördüğünü kapat" mantığı (blacklist yaklaşımı) pratikte sürdürülebilir değildir; çünkü hangi portun veya servisin gelecekte risk oluşturacağını önceden kestirmek zordur. Oysa varsayılan red yaklaşımında bilinmeyen veya unutulmuş her şey otomatik olarak kapalı kalır, sadece bilinçli olarak açılan kapılar erişilebilir olur.

Pratikte bu yaklaşım genellikle şöyle bir hiyerarşi oluşturur: en altta "tüm trafiği reddet" şeklinde genel bir kural bulunur, bunun üzerine gerekli servisler için tek tek izin kuralları eklenir. Böylece sistem büyüdükçe hangi kapının neden açık olduğu da daha kolay takip edilebilir.

İlk Adım: Hangi Servislerin Dışarıya Açık Olması Gerektiğini Belirlemek

Kural yazmaya başlamadan önce yapılması gereken iş aslında bir envanter çıkarmaktır: Bu sunucuda hangi servisler çalışıyor ve bunlardan hangileri gerçekten dışarıdan erişilebilir olmalı?

Bir web sunucusu düşünüldüğünde tipik olarak HTTP ve HTTPS portlarının dışarıya açık olması beklenir. SSH gibi yönetim erişimi ise farklı bir kategoridir; herkese değil, yalnızca yöneticilere açık olmalıdır. Veritabanı servisleri ise çoğu senaryoda dışarıya hiç açılmamalıdır; genellikle yalnızca aynı ağdaki uygulama sunucusunun erişimine izin verilmesi yeterlidir.

Buradaki kritik soru şudur: "Bu servis internetten doğrudan erişilmek zorunda mı, yoksa yalnızca belirli bir başka sunucu veya yönetici mi ona ulaşmalı?" Bu soruyu her servis için tek tek sormak, gereksiz açıklıkların önüne geçer.

Yönetim Erişimini Sınırlamak: SSH ve Benzeri Portlar

SSH gibi yönetim amaçlı erişim noktaları, saldırganların en çok hedef aldığı yerlerden biridir. Bu portun herkese açık bırakılması, sürekli otomatik giriş denemeleriyle karşılaşmak anlamına gelir.

Bu riski azaltmanın pratik yollarından biri, SSH erişimini yalnızca belirli IP aralıklarına ya da bir VPN bağlantısı üzerinden gelen trafiğe sınırlamaktır. Böylece bu port teknik olarak açık olsa bile, yalnızca tanımlanan kaynaklardan gelen istekler işleme alınır.

Elbette burada pratik bir zorluk vardır: Sabit bir IP adresinden çalışmayan, sürekli farklı ağlardan (ev, ofis, mobil bağlantı gibi) bağlanan yöneticiler için tek bir IP kısıtlaması yeterli olmayabilir. Bu durumda VPN kullanmak veya erişimi belirli bir IP aralığıyla (örneğin kurumsal ağın çıkış noktası) sınırlamak gibi alternatifler değerlendirilebilir.

Giriş ve Çıkış Trafiğini Ayrı Ayrı Düşünmek

Güvenlik duvarı kuralları yazılırken genellikle dikkat sadece gelen (inbound) trafiğe verilir: "Kim bu sunucuya bağlanabilir?" Ancak giden (outbound) trafiğin kontrolü de en az bunun kadar önemlidir.

Bunun nedeni şudur: Sunucu bir şekilde ele geçirilirse, saldırgan genellikle bu sunucudan dışarıya veri göndermek, başka sistemlere bağlanmak veya komuta-kontrol sunucusuyla iletişim kurmak ister. Eğer outbound trafik serbestse, bu tür bir sızma fark edilmeden gerçekleşebilir.

Bu nedenle sunucunun normalde hangi dış adreslere, hangi amaçlarla bağlantı kurması gerektiğini de düşünmek gerekir. Gerekmeyen giden bağlantıları kısıtlamak, olası bir ihlalin etkisini sınırlayan ek bir güvenlik katmanı sağlar.

Kural Sırası ve Önceliklendirme Neden Önemli?

Çoğu güvenlik duvarı sistemi kuralları sırayla, yukarıdan aşağıya doğru işler ve ilk eşleşen kuralı uygular. Bu nedenle kuralların sırası, sonucu doğrudan etkiler.

Örneğin genel bir "tüm trafiği reddet" kuralı, daha spesifik bir izin kuralından önce yer alırsa, o izin kuralı hiçbir zaman devreye giremez; çünkü trafik daha önce reddedilmiş olur. Bu yüzden genel kural mantıksal olarak en sonda, spesifik istisnalar ise öncesinde yer almalıdır.

Kural sayısı arttıkça bu sıralamayı takip etmek zorlaşabilir. Yeni bir kural eklerken sadece "bu kural doğru mu?" değil, "bu kural listenin neresine eklenmeli?" sorusunu da sormak, beklenmedik engellemelerin veya istenmeyen izinlerin önüne geçer.

Sık Yapılan Hatalardan Biri: Kendini Dışarıda Bırakmak (Lockout)

Güvenlik duvarı yapılandırmasında belki de en can sıkıcı hata, yöneticinin kendi erişimini yanlışlıkla kesmesidir. Örneğin SSH portunu kısıtlarken yanlış bir IP aralığı yazmak veya "tüm trafiği reddet" kuralını izin kurallarından önce uygulamak, sunucuya uzaktan erişimi tamamen kaybetmeye yol açabilir.

Bu riski azaltmanın en pratik yolu, değişiklikleri doğrudan canlı sistemde denemek yerine önce bir test ortamında ya da önceden belirlenmiş bir bakım penceresinde uygulamaktır. Böylece bir sorun oluştuğunda bunun etkisi sınırlı kalır ve düzeltme fırsatı bulunur.

Ayrıca uzaktan erişimin tamamen kesilme ihtimaline karşı fiziksel bir erişim yolu (örneğin sunucu sağlayıcısının sunduğu konsol erişimi) veya alternatif bir yönetim kanalı hazır bulundurmak, olası bir kilitlenme durumunda kurtarıcı olur.

Zamanla Biriken Gereksiz Kuralları Temizlemek

Bir sunucu uzun süre kullanıldıkça, üzerinde geçmişte test edilmiş servisler, artık kullanılmayan uygulamalar veya geçici olarak açılıp kapatılması unutulmuş portlar için yazılmış kurallar birikir.

Bu birikim iki soruna yol açar: Öncelikle kural listesi büyüdükçe hangi kuralın hâlâ gerekli olduğunu anlamak zorlaşır, bu da güvenlik denetimini karmaşıklaştırır. İkincisi, unutulmuş ama hâlâ açık olan bir port, farkında olunmayan bir güvenlik açığı haline gelebilir.

Bu nedenle kural listesini belirli aralıklarla gözden geçirip artık ihtiyaç duyulmayan kuralları kaldırmak, düzenli bir bakım alışkanlığı olarak benimsenmelidir.

Loglama ve İzlemeyi İhmal Etmemek

Kuralları yazmak sürecin yalnızca bir parçasıdır; asıl önemli olan bu kuralların pratikte ne yaptığını görebilmektir. Loglama etkinleştirilmediği sürece, hangi bağlantıların engellendiği, hangilerinin geçtiği hakkında bilgi sahibi olunmaz.

Log kayıtları, olası saldırı girişimlerini (örneğin sürekli aynı porta yapılan başarısız bağlantı denemelerini) fark etmeyi kolaylaştırır. Aynı zamanda yanlış yapılandırılmış bir kuralın meşru trafiği engelleyip engellemediğini anlamak için de bu kayıtlara bakmak gerekir.

Bu yüzden loglama, kural yazma sürecinin sonradan eklenen bir özellik değil, baştan itibaren düşünülmesi gereken ayrılmaz bir parçası olarak ele alınmalıdır.

Ağ Katmanı ile Uygulama Katmanı Güvenlik Duvarlarının Farkı

Buraya kadar anlatılan kurallar genellikle ağ katmanında çalışır; yani IP adresi ve port numarası bazında karar verir. Bu katman "kim, hangi porta bağlanabilir" sorusuna cevap verir ama bağlantı içindeki verinin ne olduğuyla ilgilenmez.

Uygulama katmanı güvenlik duvarı ise (örneğin web uygulamaları için kullanılan türden) daha farklı bir koruma sağlar: Gelen isteğin içeriğine bakarak zararlı bir web isteği, SQL enjeksiyon denemesi veya benzeri bir saldırı örüntüsü olup olmadığını değerlendirir.

Bu iki katman birbirinin yerini tutmaz, tamamlar. Ağ katmanı gereksiz portları kapatarak saldırı yüzeyini daraltırken, uygulama katmanı açık bırakılan servisler (örneğin web sunucusu) üzerinden gelen içerik bazlı tehditlere karşı ek bir filtre görevi görür. İkisinin birlikte kullanılması daha kapsamlı bir koruma sağlar.

Değişiklik Yönetimi: Her Kuralın Belgelenmesi

Özellikle birden fazla kişinin sunucu yönetimine dahil olduğu ortamlarda, her kural değişikliğinin kim tarafından, ne zaman ve hangi gerekçeyle yapıldığının kayıt altına alınması önemlidir. Aksi halde zamanla "bu kural neden burada?" sorusuna kimse net bir cevap veremez hale gelir.

Değişiklikleri bir versiyon geçmişiyle takip etmek, gerektiğinde önceki bir duruma geri dönebilmeyi kolaylaştırır. Bir kural değişikliği beklenmedik bir soruna yol açtığında, hangi değişikliğin bu soruna sebep olduğunu bulmak, belgelenmiş bir geçmiş sayesinde çok daha hızlı olur.

Bu disiplin, tek kişilik bir yönetimde bile faydalıdır; ancak ekip halinde çalışılan ortamlarda karışıklığı önlemek açısından neredeyse zorunlu hale gelir.

Sonuç: Güvenlik Duvarı Kuralları Statik Değil, Yaşayan Bir Yapı

Güvenlik duvarı yapılandırması bir kere yapılıp unutulacak bir işlem değildir. Sunucu üzerinde çalışan servisler değiştikçe, yeni ihtiyaçlar ortaya çıktıkça ve eskiyen kurallar biriktikçe bu yapının düzenli olarak gözden geçirilmesi gerekir.

Bu yazıda değinilen adımlar; whitelist mantığıyla düşünmek, servis envanterini çıkarmak, yönetim erişimini sınırlamak, giriş-çıkış trafiğini ayrı değerlendirmek, kural sırasına dikkat etmek, kendini kilitleme riskine karşı önlem almak, eski kuralları temizlemek, loglamayı etkinleştirmek ve değişiklikleri belgelemek bir kontrol listesi gibi kullanılabilir. Amaç, tek seferlik mükemmel bir yapılandırma aramak değil, zaman içinde güvenli kalabilen, izlenebilir ve sürdürülebilir bir yapı kurmaktır.

Sunucu İzleri Editör Ekibi

Altyapıyı anlamak, geleceği kurmak

Tüm yazıları

Sen ne düşünüyorsun?

Yorumlar onaylandıktan sonra yayınlanır. E-posta adresin yayınlanmaz.

Haftanın fikirleri, gelen kutunda.

Teknoloji ve yeni fikirler üzerine seçtiğimiz en iyi yazılar, her hafta e-posta adresine gelsin.