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)
- 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.
- IPv6 Desteği:
IPv6kullanmıyor olsanız bile/etc/default/ufwdosyası içindeIPV6=yesayarlandığından emin olun. Aksi takdirde, sadece IPv4 kuralları aktif olur ve IPv6 üzerinden gelecek sızmaların önüne geçemezsiniz. - Docker Entegrasyonu: Docker, UFW kurallarını by-pass ederek kendi
iptableszincirlerini 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.