Güvenlik Duvarı Yönetimi: Kritik Noktalar**

Anasayfa » Güvenlik Duvarı Yönetimi: Kritik Noktalar**

Firewall Kurallarında Dikkat Edilmesi Gerekenler: Güvenliğin Kalbi

Merhaba arkadaşlar! IT sektöründe yaklaşık 2-3 yıldır aktif olarak varım ve bu süreçte en çok üzerinde durduğum, belki de en çok hata yapıp ders çıkardığım konulardan biri firewall kuralları oldu. Günümüzün karmaşık siber tehdit ortamında, network güvenliğimizin temel taşı firewall’lar ve onların doğru yapılandırılmış kuralları. Bu yazıda, firewall kurallarını yazarken ve yönetirken nelere dikkat etmemiz gerektiğini, kendi tecrübelerimden yola çıkarak aktarmak istiyorum. Amacım, “Ben her şeyi biliyorum” demekten ziyade, “Ben bunları araştırdım, uyguladım ve sonuçları bunlar” demek.

Firewall Kuralları Neden Bu Kadar Kritik?

Firewall’lar, adından da anlaşılacağı gibi, ağımıza gelen ve giden trafiği kontrol eden bir tür güvenlik duvarıdır. Ancak bu duvarın ne kadar sağlam olduğu, sizin belirlediğiniz kurallara bağlıdır. Kötü yazılmış bir kural, tüm sistemimizi potansiyel tehlikelere açık hale getirebilirken, doğru ve optimize edilmiş kurallar, hem güvenliği artırır hem de ağ performansını olumsuz etkilemez. Benim de kariyerimin başlarında, “Bir port açalım da çalışsın yeter!” mantığıyla hareket ettiğim oldu, ancak kısa sürede bunun ne kadar tehlikeli bir yaklaşım olduğunu anladım.

Peki, Bir Firewall Kuralı Nasıl Çalışır?

Temel olarak, bir firewall paketin belirli özelliklerine (kaynak IP adresi, hedef IP adresi, kaynak port, hedef port, protokol türü gibi) bakarak ona izin verip vermeyeceğine veya engelleyip engellemeyeceğine karar verir. Modern firewall’lar (Next-Generation Firewalls – NGFW) bu temel özelliklerin ötesine geçerek uygulama bazında, kullanıcı bazında veya hatta tehdit istihbaratına göre kararlar alabiliyor. Ancak işin özü, her zaman paket filtrelemedir.

Bir kural genellikle şu bileşenlerden oluşur:

  • Kaynak (Source): Trafiğin nereden geldiği (IP adresi, ağ bloğu, ülke vb.).
  • Hedef (Destination): Trafiğin nereye gittiği (IP adresi, ağ bloğu, sunucu vb.).
  • Port (Port): Kullanılan servis (HTTP için 80, HTTPS için 443, SSH için 22 vb.).
  • Protokol (Protocol): Trafiğin türü (TCP, UDP, ICMP vb.).
  • Eylem (Action): Trafiğe yapılacak işlem (ACCEPT/ALLOW, DROP/DENY, REJECT).

Uygulama Senaryosu: Yeni Bir Web Sunucusuna Erişim İzni

Şirketimizde yeni bir iç web uygulaması yayına alındığını varsayalım. Bu web sunucusu, 192.168.10.50 IP adresinde çalışıyor ve sadece iç ağımızdaki belirli bir departmanın (192.168.1.0/24 ağı) HTTP (80) ve HTTPS (443) üzerinden erişmesine izin verilmesi gerekiyor. İşte burada, adım adım nasıl bir kural setini düşündüğümü ve uyguladığımı göstermek istiyorum. Genellikle Linux tabanlı sunucularda `iptables` ile çalıştığımız için bir örnek üzerinden gidelim:


# Mevcut kuralları listeleyelim (kontrol amaçlı)
sudo iptables -L -n -v

# INPUT zincirine kural eklemeden önce, mevcut varsayılan politikayı gözden geçirin.
# Genellikle INPUT ve FORWARD zincirleri için varsayılan DROP/REJECT politikası önerilir.
# Örnek: sudo iptables -P INPUT DROP

# 1. Kendi ağımızdan (192.168.1.0/24) web sunucumuza HTTP erişimine izin ver
sudo iptables -A INPUT -p tcp --dport 80 -s 192.168.1.0/24 -d 192.168.10.50 -j ACCEPT

# 2. Kendi ağımızdan (192.168.1.0/24) web sunucumuza HTTPS erişimine izin ver
sudo iptables -A INPUT -p tcp --dport 443 -s 192.168.1.0/24 -d 192.168.10.50 -j ACCEPT

# 3. Gerekirse SSH erişimi (sadece belirli bir yönetim IP'sinden)
# sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.10 -d 192.168.10.50 -j ACCEPT

# 4. Sunucunun dışarıya DNS sorgusu yapmasına izin ver (örneğin güncellemeler için)
# sudo iptables -A OUTPUT -p udp --dport 53 -d 8.8.8.8 -j ACCEPT
# sudo iptables -A INPUT -p udp --sport 53 -s 8.8.8.8 -j ACCEPT

# İptables kurallarını kaydet (dağıtıma göre farklılık gösterebilir)
# Debian/Ubuntu: sudo netfilter-persistent save
# CentOS/RHEL: sudo service iptables save (eski versiyonlar için)
#              sudo firewall-cmd --runtime-to-permanent (firewalld kullanılıyorsa)
        

Bu örnekte gördüğünüz gibi, en dar kapsamlı izinleri verdik. Yani sadece ilgili ağdan, ilgili porta ve ilgili sunucuya erişime izin verdik. Bu, least privilege (en az ayrıcalık) prensibinin temelidir.

Karşılaşılan Zorluklar ve Dikkat Edilmesi Gerekenler

Tecrübelerime göre firewall kurallarını yazarken veya yönetirken en çok karşılaşılan sorunlar ve benim de düştüğüm hatalar şunlar:

  • Kural Sıralaması: Firewall’lar kuralları yukarıdan aşağıya doğru okur ve ilk eşleşen kuralı uygular. Bu yüzden spesifik kurallar genel kurallardan önce gelmelidir. Örneğin, tüm trafiği engelleyen bir kural (DROP ALL) en üste yazılırsa, altında yazdığınız hiçbir izin kuralı çalışmayacaktır. Ben bunu ilk başlarda gözden kaçırıp saatlerce neden servisin çalışmadığını anlamaya çalışmıştım.
  • Default Deny Politikası: Genellikle firewall’ın sonunda tüm trafiği reddeden (DROP veya REJECT) bir kural olması, yani “varsayılan olarak her şeyi engelle, izin verdiklerini ise açıkça belirt” ilkesi esastır. Bu, bilmediğiniz veya kontrol etmediğiniz hiçbir trafiğin geçişine izin vermemenizi sağlar.
  • Geniş Kapsamlı Kurallar: ANY ANY PERMIT gibi kurallardan kaçının. Özellikle kaynak veya hedef IP’yi any, portu any olarak bırakmak, güvenliğinizi ciddi şekilde tehlikeye atar. “Kullanıcılar erişemiyor, bari şimdilik her yeri açayım” demenin bedeli genelde ağır olur.
  • Loglama ve İzleme: Güvenlik olaylarını tespit etmek ve kurallarınızın etkinliğini anlamak için firewall loglarını düzenli olarak izlemek hayati öneme sahiptir. Hatalı engellemeleri veya şüpheli denemeleri bu sayede fark edebilirsiniz.
  • Geri Dönüş Trafiği (Stateful Inspection): Modern firewall’lar genellikle “stateful” çalışır; yani giden bir bağlantıya gelen yanıt trafiğine otomatik olarak izin verirler. Ancak stateless bir firewall ile çalışıyorsanız veya karmaşık bir senaryoda, giden bağlantının geri dönüş trafiği için de kural yazmanız gerekebilir.
  • Bağımlılıklar: Bir servis sadece web portu üzerinden değil, DNS, NTP, LDAP gibi farklı servisler üzerinden de bağımlılıkları olabilir. Bu bağımlılıkları gözden kaçırıp sadece ana servisin portunu açmak, uygulamanın düzgün çalışmamasına neden olabilir.
  • Belgeleme (Documentation): Her kuralın ne amaçla yazıldığını ve hangi uygulamaya hizmet ettiğini belgelemeniz, gelecekteki değişikliklerde veya problem çözmede size ve ekibinize büyük kolaylık sağlayacaktır. İnanın bana, aylık periyodik firewall kural denetimlerinde bu belgeler altın değerinde oluyor.

Sonuç

Firewall kuralları, sadece bir kerelik ayarlayıp unutabileceğimiz şeyler değil, sürekli gözden geçirilmesi, optimize edilmesi ve değişen ihtiyaçlara göre güncellenmesi gereken dinamik yapılardır. Kariyerimin bu erken döneminde edindiğim tecrübelere dayanarak söyleyebilirim ki, bu konuya ne kadar özen gösterirsek, ağımızın güvenliği de o kadar sağlam olacaktır. Unutmayın, en zayıf halka genellikle insan hatasıdır ve biz IT’ciler olarak bu hataları en aza indirmekle yükümlüyüz. Öğrenmeye ve denemeye devam! Güvenli günler dilerim.