Linux’ta firewalld Nedir? firewall-cmd ile Güvenlik Duvarı

Bir Linux sunucuda servis çalıştığı halde bağlantı sağlanamıyorsa, sorun çoğu zaman uygulama tarafında değil firewall ayarlarında ortaya çıkar. Hatalı zone kullanımı, yanlış ağ arayüzü tanımları veya geçici kurallar sistem davranışını doğrudan etkiler.

Firewalld, bu tür erişim sorunlarını daha düzenli ve anlaşılır şekilde ele almak için geliştirilmiş bir güvenlik duvarı çözümüdür.

Firewalld Nedir?

Firewalld, Linux çekirdeğinde bulunan netfilter altyapısını temel alan ve zone bazlı çalışan bir güvenlik duvarı çözümüdür. İptablese kıyasla daha okunabilir ve kontrolü kolay bir yapı sunar.

Bu yaklaşımın amacı, ağ trafiğini farklı güven seviyelerine bölmek ve her seviye için ayrı kurallar tanımlamaktır.

Fedora, RHEL, CentOS, Rocky Linux, AlmaLinux ve openSUSE dağıtımlarında firewalld varsayılan güvenlik duvarı olarak yer alır. Ubuntu ve Debian sistemlerinde ufw daha yaygın olsa da firewalld tamamen desteklenir.

firewalld Kullanımının Temel Avantajları

Firewalld’in öne çıkan yönlerinden biri yönetim tarafındaki sadeliktir. İptables kurallarını tek tek takip etmeye gerek kalmadan daha okunabilir bir yapı sunar. Dinamik çalışma mantığı sayesinde aktif bağlantılar korunur. Bu da uzak bağlantılar üzerinden yapılan değişikliklerde bağlantı kopması riskini azaltır.

Ayrıca sistemle birlikte gelen servis tanımları sayesinde yaygın servisler kolayca erişime açılabilir.

firewalld’in Temel Bileşenleri

Firewalld’i doğru şekilde kullanabilmek için altyapısını oluşturan temel kavramların bilinmesi önemlidir.

Zones

Zone, bir ağ bağlantısının hangi güvenlik seviyesinde değerlendirileceğini belirleyen yapıdır. Her network arayüzü yalnızca bir zone’a bağlanır ve tüm trafik bu zone’un kurallarına göre filtrelenir.

En sık kullanılan zone’lar şunlardır.

▪️ public
İnternet erişimi olan, güvenilmeyen ağlar için kullanılır ve varsayılan ayardır.

▪️ home
İç ağlar için tasarlanmıştır. public’e göre daha esnek kurallara sahiptir.

▪️ trusted
Her türlü trafiğe izin veren, güvenli kabul edilen ortamlar için kullanılır.

⚠️ Yanlış zone ataması, servislerin erişime kapanmasına neden olabilir.

Services

Firewalld, yaygın servisler için önceden tanımlanmış kurallar içerir. Servis eklemek, ilgili port ve protokolleri otomatik olarak aktif eder.
SSH tanımı eklendiğinde 22/tcp portu kendiliğinden açılır.

Ports

Port bazlı kurallar, hazır servis tanımı olmayan uygulamalar için kullanılır. Özel servisler ve paneller bu şekilde tanımlanır.

Runtime ve Permanent Kurallar

Firewalld’de kurallar iki farklı şekilde uygulanır.

Runtime kurallar anında geçerli olur fakat reboot sonrası kaybolur.
Permanent kurallar kalıcıdır ancak yeniden yükleme yapılana kadar aktif değildir.

Backend Yapısı

Firewalld, arka planda nftables veya iptables kullanır ve bu detaylar kullanıcıya yansıtılmaz.

firewalld Yönetim Aracı firewall-cmd

Firewalld üzerinde yapılan tüm yapılandırmalar firewall-cmd aracılığıyla uygulanır. Güvenlik duvarına dair tüm kontrol noktası bu komuttur.

firewalld Çalışma Durumu

Firewalld servisinin çalışır durumda olup olmadığını kontrol etmek için aşağıdaki komut kullanılır.

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 loglama özelliği aktif hale getirildiğinde, reddedilen bağlantılar otomatik olarak sistem kayıtlarına düşer. Böylece erişim denemesi yapan IP adresi ve hedeflenen port net şekilde izlenebilir.

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

Bu loglar sadece anlık sorun tespiti için değil, tekrar eden saldırı girişimlerini analiz etmek için de kullanılır. Port taraması gibi davranışlar log kayıtları üzerinden erkenden fark edilebilir.

Detaylı anlatım için, port scanning tespitinin ele alındığı ilgili içeriğe göz atabilirsiniz.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

Yorum yapın