Skip to content
Bloga dön
Teknoloji UFW Firewall Linux Sistem Yönetimi Ağ Güvenliği Ubuntu

UFW Firewall Kuralları: Linux Sunucularda Pratik Ağ Güvenliği Yönetimi

Linux sunucu güvenliğinin temellerinden biri olan UFW (Uncomplicated Firewall) yapılandırmasını, günlük operasyonlarda en çok ihtiyaç duyulan pratik senaryolar ve gerçek dünya örnekleriyle inceleyin.

Caner Serbest

Sistem ve Altyapı

5 dk okuma

UFW Firewall Kuralları: Linux Sunucularda Pratik Ağ Güvenliği Yönetimi

Yazarı: Caner Serbest

Linux sunucu yönetirken karşılaştığımız ilk ve en kritik güvenlik katmanlarından biri ağ trafiğinin kontrol altına alınmasıdır. Çoğu dağıtımda çekirdek seviyesinde güçlü bir paket filtreleme altyapısı sunan iptables, esnekliği kadar karmaşık sözdizimiyle de bilinir. Özellikle hızlı bir şekilde güvenli bir ortam ayağa kaldırmak veya günlük operasyonlarda pratik kurallar yazmak istediğimizde iptables’ın bu karmaşıklığı bir dezavantaj haline gelebilir.

İşte tam bu noktada UFW (Uncomplicated Firewall) devreye girer. Ubuntu ve türevi dağıtımlarda öntanımlı olarak gelen UFW, iptables altyapısını arka planda kullanırken, sistem yöneticilerine son derece anlaşılır, sade ve insan dostu bir komut satırı arayüzü sunar. Bu yazıda, bir Linux sunucuyu sıfırdan güvenli hale getirirken en sık ihtiyaç duyacağınız UFW kurallarını, pratik ipuçlarını ve olası senaryoları ele alacağız.


UFW Nasıl Çalışır? Varsayılan Politikalar

UFW kullanmaya başlamadan önce, temel felsefesini anlamak gerekir. Bir güvenlik duvarının temel prensibi, aksi belirtilmedikçe her şeyi yasaklamak ve sadece izin verilen trafiğe geçiş vermektir. UFW de bu mantıkla (default deny) çalışır.

Sisteme ilk kez UFW kurduğumuzda veya aktifleştirdiğimizde geçerli olan varsayılan politikalar şunlardır:

  • Dışarıdan sunucuya gelen tüm bağlantılar engellenir (Incoming: Deny).
  • Sunucudan dış dünyaya giden tüm bağlantılara izin verilir (Outgoing: Allow).

Bu varsayılan yaklaşım, siz özel olarak bir kapı açana kadar sunucunuzun dış dünyaya kapalı ve güvenli bir kale gibi kalmasını sağlar.

UFW Kurulumu ve Durum Kontrolü

Çoğu modern Ubuntu sunucuda UFW halihazırda kurulu gelir. Ancak emin olmak veya sıfırdan kurmak için paket yöneticisini kullanabiliriz:

sudo apt update
sudo apt install ufw

Servisin durumunu ve aktif olan kuralları görmek için şu komutu çalıştırırız:

sudo ufw status verbose

Eğer çıktı olarak Status: inactive görüyorsanız, henüz kurallarımız uygulanmıyor demektir. Güvenlik duvarını aktif hale getirmeden önce en kritik adımı atlamamamız gerekir: SSH erişimini kaybetmemek.


Hayati Adım: SSH Portunu Güvenceye Almak

Uzak bir sunucuda çalışırken sudo ufw enable komutunu çalıştırmadan önce mutlaka SSH portuna izin vermelisiniz. Aksi takdirde sunucuyla olan bağlantınız anında kesilir ve fiziksel veya bulut sağlayıcınızın konsol ekranından müdahale etmek zorunda kalırsınız.

Standart SSH portuna izin vermek için:

sudo ufw allow ssh

Eğer SSH portunuzu güvenlik amacıyla varsayılan olan 22’den başka bir porta (örneğin 2222) taşıdıysanız, kuralı port numarası belirterek eklemelisiniz:

sudo ufw allow 2222/tcp

Bu kuralı ekledikten sonra UFW’yi güvenle aktif hale getirebiliriz:

sudo ufw enable

Sistem sizden “Bu işlem mevcut SSH bağlantısını bozabilir. Devam etmek istiyor musunuz?” şeklinde bir onay isteyecektir. SSH kuralını eklediğimizden emin olduğumuz için y diyerek devam edebiliriz.


Temel UFW Komutları ve Kural Yönetimi

UFW ile kural eklemek, silmek ve listelemek oldukça sezgiseldir. Günlük işlerinizde en çok kullanacağınız komut yapıları şunlardır:

1. Servis Adları veya Portlar Üzerinden İzin Verme

Web sunucuları için standart HTTP ve HTTPS trafiğine izin vermek istiyorsak port numaralarını veya servis adlarını kullanabiliriz:

# HTTP ve HTTPS trafiğine izin ver
sudo ufw allow http
sudo ufw allow https

# Belirli bir port numarasına doğrudan izin ver
sudo ufw allow 8080/tcp

2. Belirli IP Adreslerine Erişim Verme

Bazen bir servisi (örneğin veritabanını veya yönetim panelini) sadece belirli bir IP adresine açmak isteriz. Ofisinizin statik IP adresinden sunucuya SSH erişimi verilmesi veya başka bir sunucunun veritabanına bağlanması gibi senaryolarda şu komut kullanılır:

sudo ufw allow from 203.0.113.50 to any port 22 proto tcp

3. Belirli Bir Alt Ağdan (Subnet) Gelen Trafiğe İzin Verme

Şirket içi ağınızdan veya belirli bir IP bloğundan gelen tüm bağlantılara izin vermek için CIDR notasyonu kullanılabilir:

sudo ufw allow from 192.168.1.0/24 to any port 3306

Kuralları Listeleme ve Numaralandırma

Sunucu üzerinde zamanla pek çok kural birikebilir. Hangi kuralın nerede olduğunu görmek ve gerektiğinde silmek için numaralandırılmış liste formatını kullanmak en pratik yöntemdir:

sudo ufw status numbered

Bu komut bize kuralları bir liste halinde sıra numaralarıyla (1, 2, 3…) verecektir. Örnek bir çıktı şöyle görünür:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere

Yanlış eklediğimiz veya artık ihtiyaç duymadığımız bir kuralı silmek için bu numaraları referans alabiliriz. Örneğin 2 numaralı kuralı silmek için:

sudo ufw delete 2

Alternatif olarak kuralın kendisini yazarak da silebilirsiniz:

sudo ufw delete allow 80/tcp

İleri Düzey UFW Senaryoları

Temel port açma ve kapatma işlemlerinin ötesinde, gerçek dünya senaryolarında daha spesifik kural setlerine ihtiyaç duyarız.

Trafiği Engellemek (Deny ve Reject)

Varsayılan olarak gelen her şeyi reddettiğimiz için deny kuralı genellikle belirli bir IP adresini veya IP bloğunu tamamen kara listeye almak için kullanılır:

sudo ufw deny from 203.0.113.99

deny komutu, eşleşen istekleri sessizce düşürür (hiçbir yanıt dönmez). reject komutu ise bağlantı reddedildiğine dair karşı tarafa bir hata paketi gönderir. Güvenlik açısından saldırganlara ipucu vermemek adına genellikle deny tercih edilir.

Belirli Bir Arayüze Özel Kural Yazma

Eğer sunucunuzda birden fazla ağ kartı (interface) varsa (örneğin biri dış dünya, diğeri dahili VPN ağı için), kuralları belirli bir arayüze bağlayabilirsiniz:

sudo ufw allow in on eth0 to any port 80

Rate Limiting (Hız Sınırlaması) ile Brute-Force Koruması

UFW’nin en sevilen özelliklerinden biri limit parametresidir. Özellikle SSH gibi kritik servislerde, kısa süre içinde çok fazla başarısız bağlantı denemesi yapan IP adreslerini otomatik olarak engellemek için kullanılır:

sudo ufw limit ssh

Bu kural, bir IP adresi 30 saniye içinde 6’dan fazla bağlantı denemesi yaparsa geçici olarak engellenmesini sağlar. Fail2ban gibi harici araçları kurmaya vakit bulamadığınız minimal sistemlerde hızlı bir katman koruması sunar.


Loglama ve Sorun Giderme

Güvenlik duvarının arkasında nelerin olup bittiğini anlamak için loglama mekanizmasını aktif tutmak önemlidir. UFW logları varsayılan olarak /var/log/ufw.log veya /var/log/syslog dosyalarına yazılır.

Loglamayı aktif hale getirmek için:

sudo ufw logging on

İhtiyacınıza göre log seviyesini ayarlayabilirsiniz (low, medium, high, full). Günlük operasyonlarda medium seviyesi, engellenen paketler ile izin verilen bağlantıların dengeli bir kaydını tutar için idealdir:

sudo ufw logging medium

Eğer kuralları test ederken her şeyi bozduğunuzu düşünürseniz ve sıfırdan başlamak isterseniz, tüm kuralları sıfırlayıp UFW’yi kapatabilirsiniz:

sudo ufw reset

(Not: Resetleme işlemi öncesinde yine SSH erişiminizi göz önünde bulundurmayı unutmayın.)


Sonuç

UFW, iptables’ın karmaşık yapısını arka planda ustalıkla yöneterek sistem yöneticilerine hız ve güvenlik kazandırır. Karmaşık kurallarla vakit kaybetmeden, sunucunuzun yüzey alanını daraltmak ve sadece gereken portları dış dünyaya açmak birkaç dakikalık bir iştir.

Unutmayın ki güvenlik tek seferlik yapılan bir yapılandırma değil, süreklilik arz eden bir süreçtir. Sunucunuza yeni bir servis kurduğunuzda ilk düşüneceğiniz şeylerden biri her zaman UFW kurallarını güncellemek olmalıdır. Sade, anlaşılır ve sürdürülebilir bir altyapı için UFW, Linux araç çantanızın vazgeçilmez bir parçasıdır.


Bu yazı Gemini ile otomatik oluşturulmuştur.