GÜVENLİK DUVARI YÖNETİMİ (FIREWALLD) VE PORT AÇMA

CentOS/RHEL sistemlerinin standart güvenlik duvarı arayüzü olan Firewalld'un yönetimi, Zone (Bölge) kavramıyla port/servis erişimlerinin kontrol edilmesi ve kuralların kalıcı hale getirilmesi.

Giriş: Firewalld, Linux çekirdeğindeki netfilter sisteminin dinamik bir yönetim aracıdır. En önemli özelliği **Zone (Bölge)** konseptidir. Network arayüzlerini veya kaynak IP adreslerini farklı güvenlik bölgelerine (public, internal, trusted) atayarak esnek güvenlik kuralları uygulamayı sağlar.

Bölüm 1: Firewalld Servis Yönetimi ve Durum Kontrolü

Firewalld servisi, systemd tarafından yönetilir ve sistemin açılışında otomatik olarak çalışır durumda olmalıdır.

Temel Servis Komutları (Systemctl)

  1. **Servisi Kontrol Etme:** Firewalld servisinin durumunu kontrol edin.
    sudo systemctl status firewalld
  2. **Servisi Başlatma/Durdurma:** Servis çalışmıyorsa başlatın, gerekiyorsa durdurun (ancak bu önerilmez).
    sudo systemctl start firewalld
    sudo systemctl stop firewalld
  3. **Servisin Otomatik Başlamasını Sağlama:** Sunucu yeniden başlatıldığında Firewall'un otomatik devreye girmesi için:
    sudo systemctl enable firewalld
  4. **Aktif Ayarları Görüntüleme:** Hangi Zone'ların aktif olduğunu ve bu Zone'lara hangi arayüzlerin atandığını gösterir.
    sudo firewall-cmd --get-active-zones

Bölüm 2: Zone (Bölge) Konsepti ve Yönetimi

Firewalld'un gücü, her Zone'un farklı bir güven seviyesine sahip olması ve kuralların bu Zone'lara uygulanmasıdır.

Zone'lar Arası Güven Seviyeleri (Örnekler)

Zone Adı Güven Seviyesi Kullanım Alanı
**public** Düşük Güvenilmeyen dış ağlar (internet) için. Gelen bağlantılar engellenir.
**internal** Orta Şirket içi güvenilir LAN segmenti için.
**trusted** En Yüksek Tüm ağ trafiğine izin verilen (Güvenilir Yöneticiler) Zone.
**drop** Sıfır Gelen tüm trafiği bildirim yapmadan sessizce düşürür.

Zone Değişiklikleri ve Kontrolleri

  1. **Varsayılan Zone'u Görüntüleme:** Varsayılan Zone'un ne olduğunu kontrol edin (Genellikle `public`).
    sudo firewall-cmd --get-default-zone
  2. **Arayüzü Zone'a Atama:** Ağ arayüzünü (Örn: `ens192`) kalıcı olarak daha güvenilir bir Zone'a atama (Örn: `internal`).
    sudo firewall-cmd --zone=internal --change-interface=ens192 --permanent
    sudo firewall-cmd --reload
  3. **Zone'daki Kuralları Listeleme:** Belirli bir Zone'da (Örn: `internal`) hangi servislerin ve portların açık olduğunu görün.
    sudo firewall-cmd --zone=internal --list-all

Bölüm 3: Servis ve Port Açma/Kapama

Firewalld'da kural eklerken, port numarası yerine önceden tanımlı servis adlarını kullanmak (Örn: `ssh`, `http`) tercih edilir.

Kural Ekleme ve Kaldırma

  1. **Ön Tanımlı Servisi Açma (Web Sunucusu):** `http` (Port 80) servisini `public` Zone'da kalıcı olarak açın.
    # Önce kuralı kalıcı olarak ekle
    sudo firewall-cmd --zone=public --add-service=http --permanent
    
    # Sonra değişiklikleri aktif hale getir
    sudo firewall-cmd --reload
  2. **Özel Port Açma (Örn: TCP 5432 - PostgreSQL):** Eğer servis adı tanımlı değilse, port numarası ve protokol (`tcp` veya `udp`) kullanarak kural ekleyin.
    sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
    sudo firewall-cmd --reload
  3. **Kural Kaldırma:** Daha önce eklenmiş bir servisi veya portu kapatma.
    # Servisi kapatma
    sudo firewall-cmd --zone=public --remove-service=http --permanent
    sudo firewall-cmd --reload
    
    # Portu kapatma
    sudo firewall-cmd --zone=public --remove-port=5432/tcp --permanent
    sudo firewall-cmd --reload
  4. **Kaynak IP Kuralı (Source-Based Rule):** Sadece belirli bir IP adresinden (Örn: Yönetici iş istasyonu `192.168.1.50`) gelen SSH erişimine izin verme.
    sudo firewall-cmd --zone=public --add-source=192.168.1.50/32 --add-service=ssh --permanent
    sudo firewall-cmd --reload
    **Kritik:** Bu kural, güvenlik açısından Root erişimi kapatıldıktan sonra (8. Adım) mutlaka yapılmalıdır.
Kritik Uyarı (Kalıcı Kural): `firewall-cmd` komutlarını çalıştırırken **`--permanent`** parametresi kullanılmazsa, kural sadece bir sonraki yeniden başlatmaya kadar (geçici olarak) geçerli olur. Kuralı kalıcı yapmak için `--permanent` kullanıldıktan sonra mutlaka **`--reload`** komutunu çalıştırın.

← ÖNCEKİ: SYSTEMD & SERVİS YÖNETİMİ | SONRAKİ: SSH & SELINUX →