"Enter"a basıp içeriğe geçin

Linux firewalld Nedir? firewall-cmd ile Güvenlik Duvarı Yönetimi

Bir Linux sunucuda servis çalışıyor olmasına rağmen dışarıdan erişilemiyorsa, sorun çoğu zaman uygulamada değil güvenlik duvarı yapılandırmasındadır. Yanlış zone kullanımı, hatalı arayüz eşleşmeleri veya geçici kurallar, sistemin beklenmedik şekilde davranmasına neden olur.

Firewalld, bu tür sorunları daha öngörülebilir ve yönetilebilir hale getirmek için tasarlanmış, bir güvenlik duvarı çözümüdür.

Firewalld Nedir?

Firewalld, Linux çekirdeğinde yer alan netfilter altyapısını kullanan, bölge tabanlı çalışan güvenlik duvarı yönetim aracıdır. İptables yapısının aksine, kuralları daha okunabilir ve yönetilebilirdir.

Temel amacı ağ bağlantılarını güven seviyelerine göre ayırmak ve her bağlantı için ayrı kuralları tanımlamaktır.

Fedora, RHEL, CentOS, Rocky Linux, AlmaLinux ve openSUSE gibi dağıtımlarda firewalld varsayılan güvenlik duvarı olarak gelir. Ubuntu ve Debian tarafında genellikle ufw tercih edilsede firewalld tamamen desteklenir.

Neden firewalld Kullanılır?

İlk olarak yönetim kolaylığı sağlar. Karmaşık iptables zincirlerini ve kurallarını ezberlemeye gerek kalmaz. İkinci olarak canlı yapıdadır. Kurallar değiştirilirken mevcutta olan bağlantılar kesilmez. SSH üzerinden bağlı olduğunuz bir sunucuda firewalld yapılandırması yapılırken bağlantı kompası gibi riskler oluşturmaz.

Son olarak hazır servis tanımları sunar. SSH, HTTP, HTTPS gibi yaygın servisler için port numaralarını bilmeden doğrudan izin verilebilir.

Firewalld Temel Kavramları

Firewalld ile doğru çalışabilmek için bazı kavramların bilinmesi gerekir.

Zones

Zone bir ağ bağlantısının güven seviyesini temsil eder. Her ağ arayüzü yalnızca bir zone’a atanır ve tüm trafik bu zone’un kurallarına göre değerlendirilir.

Yaygın kullanılan zone’lar şunlardır.

▪️public İnternet gibi güvenilmeyen ağlar için kullanılır. Varsayılan ve en kısıtlı zone’dur.

▪️home Güvenilir fakat tamamen açık olmayan iç ağlar için uygundur.

▪️trusted Tüm trafiğe izin verilen, tamamen güvenilen ortamlar için kullanılır.

Services

Firewalld, birçok yaygın servis için hazır tanımlar içerir. Bir servisi eklemek, ilgili port ve protokollerin otomatik olarak açılmasını sağlar.
Örneğin SSH servisi eklendiğinde 22/tcp portu manuel olarak tanımlamaya gerek kalmadan açılır.

Ports

Servis tanımı kullanmak istemeyenler için port bazlı kurallar tanımlanabilir. Özel uygulamalar, paneller veya custom servisler için bu yöntem tercih edilir.

Runtime ve Permanent Kurallar

Firewalld iki farklı kural türüyle çalışır.

Runtime kurallar anında aktif olur ancak sistem yeniden başlatıldığında kaybolur.
Permanent kurallar kalıcıdır, ancak aktif hale gelmesi için yapılandırmanın yeniden yüklenmesi gerekir.

Backend Yapısı

Firewalld, arka planda sistem sürümüne bağlı olarak nftables veya iptables kullanır. Kullanıcının bu detaylarla doğrudan ilgilenmesine gerek yoktur.

firewall-cmd ile Firewalld Yönetimi

Firewalld, firewall-cmd komutuyla yönetilir. Tüm yapılandırma ve kontrol işlemleri buradan gerçekleşir.

Firewalld Durumunu Kontrol Etme

Firewalld’ın çalışıp çalışmadığını gösterir.

sudo firewall-cmd --state

Kuralları Yeniden Yükleme

Kalıcı kuralların aktif hale gelmesi için reload işlemi kullanılır. Reload işlemi mevcut bağlantıları kesmeden yapılandırmayı uygular.

sudo firewall-cmd --reload

Restart işlemi servisi tamamen yeniden başlatır ve kısa süreli bağlantı kesintilerine neden olabilir. Bu nedenle çoğu durumda reload tercih edilmelidir.

Aktif Zone ve Arayüzleri Görüntüleme

Sistemde hangi ağ arayüzünün hangi zone’da olduğunu gösterir.

sudo firewall-cmd --get-active-zones

Varsayılan Zone Bilgisini Görme

Yeni eklenen ağ arayüzlerinin hangi zone’a atanacağını belirtir.

sudo firewall-cmd --get-default-zone

Mevcut Kuralları Listeleme

Varsayılan zone’a ait aktif servisler, portlar ve kurallar bu komutla görüntülenir.

sudo firewall-cmd --list-all

Servis ve Port Yönetimi

Bir Servise Kalıcı Olarak İzin Verme

SSH erişimini kalıcı olarak açar.

sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload

Servis Erişimini Kaldırma

sudo firewall-cmd --remove-service=ssh --permanent
sudo firewall-cmd --reload

Port Açma ve Kapatma

Belirli bir TCP portunu kalıcı olarak açar veya kapatır.

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload

İzin Verilen Servisleri Listeleme

Bulunulan zone’da açık olan servisleri gösterir.

sudo firewall-cmd --list-services

Arayüz Bazlı Zone Atama

Birden fazla ağ arayüzü bulunan sistemlerde her arayüz için farklı zone’lar tanımlanabilir. Bu yaklaşım özellikle iç ağ ve internet trafiğinin ayrılması gereken senaryolarda önemlidir.

sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
sudo firewall-cmd --reload

Bu işlem, belirtilen arayüzden gelen tüm trafiğin ilgili zone kurallarına göre değerlendirilmesini sağlar.

Firewalld Loglama ve Reddedilen Trafik Analizi

Firewalld üzerinde loglama aktif edildiğinde, reddedilen bağlantılar sisteme yazılır. Bu kayıtlar sayesinde hangi IP adresinin, hangi port üzerinden erişmeye çalıştığı net şekilde görülebilir.

sudo firewall-cmd --set-log-denied=all

Reddedilen bağlantı kayıtları yalnızca anlık denetim için değil, sistematik saldırı girişimlerini fark etmek için de önemlidir. Özellikle port tarama denemeleri, log kayıtları üzerinden erken aşamada tespit edilebilir ve gerekli önlemler alınabilir.

Bu konuyu daha detaylı ele aldığımız içerikte, sunucularda port scanning tespitinin nasıl yapıldığını inceleyebilirsiniz.

Sık Sorulan Sorular

Firewalld açıkken servis çalışıyor ama dışarıdan erişilemiyor?

Öncelikle ilgili ağ arayüzünün hangi zone altında çalıştığı kontrol edilmelidir. Servisin izinli olduğu zone ile arayüzün bağlı olduğu zone farklıysa erişim gerçekleşmez. Servisi doğru zone altına ekledikten sonra kurallar yeniden yüklenmelidir.

Firewall-cmd reload sonrası SSH bağlantım koptu?

SSH erişimi yalnızca sınırlı bir IP veya dar bir kural setiyle tanımlandıysa, reload sonrası yeni kurallar devreye girerken mevcut bağlantı düşebilir.

sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload

Firewall-cmd ile eklediğim kurallar reboot sonrası neden kayboluyor?

Kurallar yalnızca runtime yapılandırmaya eklenmiştir. Sistem yeniden başlatıldığında firewalld temiz başlar.
Kuralların kalıcı olduğundan emin olunmalı.

sudo firewall-cmd --runtime-to-permanent

Daha sonra doğrulama yapmak için aşağıdaki komut girilmeli.

sudo firewall-cmd --list-all
Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir