Skip to content
Back to blog
Teknoloji UFW Linux Firewall Güvenlik Sistem Yönetimi

UFW Firewall Kuralları: İleri Düzey Yapılandırma ve Log Yönetimi

Linux sunucu güvenliğinde UFW (Uncomplicated Firewall) kullanımı, gelişmiş kural setleri, subnet yönetimi ve log analizi ile güvenliği bir üst seviyeye taşıma rehberi.

Caner Serbest

Sistem ve Altyapı

4 min read

UFW Firewall Kuralları: İleri Düzey Yapılandırma ve Log Yönetimi

Yazar: Caner Serbest

Linux tabanlı sunucuların güvenliği, sistem yöneticilerinin ilk ve en kritik sorumluluklarından biridir. İnternete açık bir sunucu yapılandırdığınız anda, port tarama araçları ve otomatik botlar tarafından taranmaya başlarsınız. Bu tehditlerin önüne geçmenin ilk savunma hattı ise güvenlik duvarıdır (firewall).

Modern Linux dağıtımlarında paket filtreleme işlemlerini yönetmek için iptables veya nftables kullanılır. Ancak bu araçların sözdizimi (syntax) karmaşık olabilir ve günlük yönetim süreçlerinde hata yapmaya oldukça uygundur. Canonical tarafından geliştirilen UFW (Uncomplicated Firewall), bu karmaşıklığı ortadan kaldırarak iptables altyapısını insan dostu komutlarla yönetmenizi sağlar.

Bu yazıda, temel port açma ve kapatma işlemlerinin ötesine geçerek, IP bazlı kısıtlamaları, subnet yönetimini, arayüz bazlı kuralları ve UFW loglarının nasıl yorumlanacağını ele alacağız.


1. Temel Yapılandırma ve Varsayılan Politikalar

UFW kurulumunu tamamladıktan sonra yapılacak ilk iş, varsayılan politikaları belirlemektir. Güvenlik duvarının temel felsefesi “aksi söylenmedikçe her şeyi reddetmek” (deny by default) olmalıdır. Dışarıdan içeriye (incoming) gelen tüm bağlantıları kapatırken, sunucunun dış dünya ile iletişim kurabilmesi için dışarı giden (outgoing) trafiğe izin vermeliyiz.

Varsayılan politikaları ayarlamak için şu komutları çalıştırırız:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Bu kuralları uyguladıktan sonra SSH portunuzu (varsayılan 22 veya özel portunuz) açmadan UFW’yi etkinleştirirseniz, sunucuyla olan bağlantınız kesilebilir. Bu yüzden SSH erişimini kurala bağlamadan enable komutunu çalıştırmamalısınız.

sudo ufw allow 22/tcp
sudo ufw enable

UFW durumunu ve mevcut kuralları kontrol etmek için:

sudo ufw status verbose

2. Gelişmiş Kural Yönetimi ve Subnet Kısıtlamaları

Temel kullanımda sadece sudo ufw allow 80 diyerek HTTP trafiğine izin verebiliriz. Ancak gerçek dünya senaryolarında kuralların çok daha spesifik olması gerekir. Örneğin, bir veritabanı portunu sadece belirli bir IP adresine veya şirket içi bir VPN subnetine açmak zorundasınız.

Belirli Bir IP Adresine İzin Verme

Eğer yönetim panelinize veya veritabanınıza sadece kendi ev IP adresinizden (örneğin 203.0.113.50) erişilmesini istiyorsanız:

sudo ufw allow from 203.0.113.50 to any port 3306 proto tcp

Subnet (Alt Ağ) Bazlı Kısıtlamalar

Ofis ağınızdaki veya buluttaki bir VPC içindeki tüm makinelerin sunucuya erişmesine izin vermek için CIDR notasyonunu kullanabilirsiniz:

sudo ufw allow from 192.168.1.0/24 to any port 22

Belirli Bir Arayüze (Interface) Göre Kural Tanımlama

Çoklu ağ kartına (interface) sahip sunucularda bazı servislerin sadece iç ağda (LAN) çalışması, dış dünyaya (WAN) kapalı olması gerekir. Örneğin, iç ağ arayüzümüz olan eth1 üzerinden gelen MySQL bağlantılarına izin verip, dış ağ arayüzü eth0 üzerinden gelenleri engellemek için:

sudo ufw allow in on eth1 to any port 3306

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

SSH gibi kritik servisler sürekli olarak şifre deneme saldırılarına maruz kalır. UFW, bu tür saldırıları hafifletmek için yerleşik bir limit mekanizması barındırır.

limit komutu, kısa süre içinde (genellikle 30 saniye içinde 6 kereden fazla) aynı IP adresinden gelen bağlantı girişimlerini geçici olarak engeller:

sudo ufw limit 22/tcp

Bu yaklaşım, Fail2Ban gibi harici araçlar kurulu değilse hızlı bir önlem olarak hayat kurtarabilir.


4. Kuralları Numaralandırma ve Düzenleme

Zamanla kurallar artar ve bazen kuralların sırasını değiştirmek ya da araya yeni bir kural eklemek gerekebilir. UFW, kuralların sırasını önemser (yukarıdan aşağıya doğru değerlendirir).

Mevcut kuralları numaralı olarak listelemek için:

sudo ufw status numbered

Çıktı şu şekilde olacaktır:

Status: active

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

Eğer 2. kuraldan önce yeni bir kural eklemek isterseniz insert komutunu kullanabilirsiniz:

sudo ufw insert 2 allow from 192.168.1.50 to any port 8080

Yanlış yazılan veya artık ihtiyaç duyulmayan bir kuralı silmek için ise numarasını referans alabilirsiniz:

sudo ufw delete 3

5. UFW Log Yönetimi ve Analizi

Bir güvenlik duvarı kurmak kadar, engellenen veya izin verilen trafiği izlemek de önemlidir. UFW, varsayılan olarak loglamayı kapalı tutabilir veya düşük seviyede tutabilir. Loglamayı aktif hale getirmek için:

sudo ufw logging on

Log seviyesini değiştirmek isterseniz low, medium, high ve full seçeneklerini kullanabilirsiniz. Üretim ortamlarında medium seviyesi genellikle yeterlidir; bu seviye, engellenen paketlerin yanı sıra rate-limit kurallarına takılan bağlantıları da kaydeder.

UFW logları, standart sistem log dosyasına düşer. Bu logları incelemek için journalctl veya /var/log/ufw.log dosyasını kullanabilirsiniz:

sudo tail -f /var/log/ufw.log

Örnek bir UFW log satırı şu şekildedir:

Nov 12 10:15:30 sunucu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=... SRC=192.168.1.100 DST=203.0.113.10 LEN=40 TOS=0x00 PREC=0x00 TTL=249 ID=54321 PROTO=TCP SPT=51234 DPT=23 WINDOW=512 RES=00 SYN URGP=0

Bu log satırı bize şunları söyler:

  • [UFW BLOCK]: Paketin engellendiğini,
  • SRC=192.168.1.100: Saldırı veya istek yapan IP adresini,
  • DPT=23: Telnet portuna (kapatılmış veya izin verilmeyen bir porta) erişilmeye çalışıldığını gösterir.

Bu logları düzenli olarak incelemek, ağınızdaki anormal hareketleri erken fark etmenizi sağlar.


6. Sık Yapılan Hatalar ve En İyi Uygulamalar (Best Practices)

  1. SSH Kilitleme Riski: Her zaman yeni bir kural ekledikten veya UFW’yi yeniden başlattıktan sonra, mevcut SSH oturumunuzu kapatmadan yeni bir terminal açarak bağlantıyı test edin.
  2. IPv6 Desteği: IPv6 kullanmıyor olsanız bile /etc/default/ufw dosyası içinde IPV6=yes ayarlandığından emin olun. Aksi takdirde, sadece IPv4 kuralları aktif olur ve IPv6 üzerinden gelecek sızmaların önüne geçemezsiniz.
  3. Docker Entegrasyonu: Docker, UFW kurallarını by-pass ederek kendi iptables zincirlerini oluşturur. Eğer Docker kullanıyorsanız, konteynerlerin dış dünyaya nasıl port açtığını dikkatlice yönetmeli ve gerekirse özel Docker güvenlik duvarı ayarları yapılandırmalısınız.

Sonuç

UFW, basit arayüzünün arkasında oldukça güçlü bir iptables/nftables motoru barındırır. Doğru yapılandırılmış bir UFW kural seti, sunucunuzun yüzey alanını (attack surface) minimumda tutarak dış tehditlere karşı güçlü bir bariyer oluşturur. Temel kurallarla başlayıp, IP kısıtlamaları, subnet izolasyonu ve log takibi ile süreci profesyonel bir seviyeye taşıyabilirsiniz.


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