Güvenli bir sistemin temel taşlarından biri, etkili bir güvenlik duvarı yönetimidir. Linux dünyasında bu görevi üstlenen birçok araç bulunsa da, UFW (Uncomplicated Firewall) basitliği ve gücü bir araya getirmesiyle öne çıkar. Bu blog yazısında, bir sistem yöneticisi perspektifinden UFW’nin kurulumundan gelişmiş kullanımlarına kadar tüm yönlerini ele alacak, sunucularınızı ve sistemlerinizi daha güvenli hale getirmek için pratik bilgiler sunacağız.
UFW (Uncomplicated Firewall) Nedir?
UFW, Netfilter güvenlik duvarını yönetmek için tasarlanmış, kullanımı kolay bir komut satırı arayüzüdür. Ubuntu ve Debian tabanlı sistemlerde yaygın olarak bulunur ve karmaşık iptables komutlarını öğrenmek zorunda kalmadan güvenlik duvarı kurallarını hızlı ve etkili bir şekilde yapılandırmanıza olanak tanır. “Uncomplicated” (Karmaşık Olmayan) adı, tam da bu kolaylığı ifade eder.
UFW Kurulumu
Çoğu modern Ubuntu ve Debian tabanlı dağıtımda UFW öntanımlı olarak yüklüdür. Ancak yüklü değilse veya emin değilseniz, aşağıdaki komutla kolayca kurabilirsiniz:
sudo apt update
sudo apt install ufw
UFW Durumu ve Temel Komutlar
UFW Durumunu Kontrol Etme
UFW’nin etkin olup olmadığını, hangi kuralların geçerli olduğunu ve varsayılan politikaları görmek için aşağıdaki komutu kullanın:
sudo ufw status verbose
Eğer UFW devre dışıysa, çıktı aşağıdaki gibi olacaktır:
Status: inactive
UFW’yi Etkinleştirme ve Devre Dışı Bırakma
ÖNEMLİ UYARI: UFW’yi etkinleştirmeden önce, SSH bağlantınızın kesilmemesi için SSH portuna izin veren bir kural eklediğinizden emin olun. Aksi takdirde, sunucunuza erişiminiz kilitlenebilir!
# SSH portuna (varsayılan 22) izin verin
sudo ufw allow ssh
# UFW'yi etkinleştirin
sudo ufw enable
UFW’yi devre dışı bırakmak için:
sudo ufw disable
Varsayılan Politikalar
UFW’nin varsayılan politikaları, güvenlik duruşunuzun temelini oluşturur. Genellikle, gelen tüm bağlantıların reddedilmesi ve giden tüm bağlantıların izin verilmesi en güvenli başlangıç noktasıdır.
# Gelen tüm bağlantıları reddet (varsayılan)
sudo ufw default deny incoming
# Giden tüm bağlantılara izin ver (varsayılan)
sudo ufw default allow outgoing
Bu komutlar, yukarıda belirtilen SSH uyarısı bağlamında, belirli izin kuralları eklemediğiniz sürece sunucunuza dışarıdan hiçbir bağlantının ulaşamayacağı anlamına gelir.
Kural Ekleme: Gelen Trafiği Yönetme
Sisteminize belirli servisler veya portlar üzerinden erişime izin vermek için kurallar eklemeniz gerekir.
Port Numarasına Göre İzin Verme
HTTP (80/tcp) ve HTTPS (443/tcp) gibi belirli portlara veya port aralıklarına izin verebilirsiniz:
# HTTP trafiğine izin ver
sudo ufw allow 80/tcp
# HTTPS trafiğine izin ver
sudo ufw allow 443/tcp
# Hem TCP hem UDP için belirli bir porta izin ver
sudo ufw allow 1234
# Belirli bir port aralığına izin ver (TCP veya UDP belirtilebilir)
sudo ufw allow 6000:6007/tcp
Servis Adına Göre İzin Verme
UFW, /etc/services dosyasında tanımlanan yaygın servisler için isim tabanlı kurallar oluşturmanıza olanak tanır:
# SSH trafiğine izin ver (port 22)
sudo ufw allow ssh
# HTTP trafiğine izin ver (port 80)
sudo ufw allow http
# MySQL trafiğine izin ver (port 3306)
sudo ufw allow mysql
IP Adresi veya Alt Ağa Göre İzin Verme
Belirli bir IP adresinden veya bir alt ağdan gelen trafiğe belirli bir porta erişim izni verebilirsiniz:
# Belirli bir IP adresinden SSH erişimine izin ver
sudo ufw allow from 192.168.1.100 to any port 22
# Belirli bir alt ağdan HTTP erişimine izin ver
sudo ufw allow from 192.168.1.0/24 to any port 80
Belirli Bir Arayüze Göre İzin Verme
Çoklu ağ arayüzüne sahip sistemlerde, kuralı belirli bir arayüze (örneğin eth0) bağlayabilirsiniz:
# eth0 arayüzünden gelen HTTP trafiğine izin ver
sudo ufw allow in on eth0 to any port 80
Kural Silme
Bir kuralı silmenin iki ana yolu vardır: kuralın kendisini belirterek veya numarasına göre silerek.
Kuralı Belirterek Silme
Eklediğiniz bir kuralı aynı komutun başına delete ekleyerek silebilirsiniz:
# HTTP portuna izin veren kuralı sil
sudo ufw delete allow 80/tcp
Numarasına Göre Kural Silme
Daha karmaşık kurallar veya silmek istediğiniz kuralın tam sözdizimini hatırlamadığınız durumlarda bu yöntem kullanışlıdır.
# Numaralandırılmış kuralları göster
sudo ufw status numbered
Çıktıdan silmek istediğiniz kuralın numarasını belirledikten sonra:
# Numarası 3 olan kuralı sil
sudo ufw delete 3
UFW Sıfırlama
Tüm UFW kurallarını silip UFW’yi başlangıç durumuna döndürmek isterseniz, sıfırlama komutunu kullanabilirsiniz. Bu, güvenlik duvarını devre dışı bırakır ve varsayılan politikaları kaldırır.
# UFW'yi sıfırla (tüm kuralları siler)
sudo ufw reset
Bu komutun, tüm kuralları geri alınamaz bir şekilde sileceğini ve UFW’yi tekrar etkinleştirmeden önce tüm gerekli kuralları yeniden eklemeniz gerektiğini unutmayın.
UFW Günlükleme (Logging)
UFW günlükleri, güvenlik duvarı etkinliklerini izlemek ve olası saldırıları tespit etmek için önemlidir. Günlüklemeyi açabilir veya kapatabilirsiniz:
# Günlüklemeyi aç
sudo ufw logging on
# Günlüklemeyi kapat
sudo ufw logging off
Günlükler genellikle /var/log/ufw.log veya sisteminizin genel günlük dosyalarında (/var/log/syslog, /var/log/kern.log) bulunur.
En İyi Uygulamalar
- Önce SSH: UFW’yi etkinleştirmeden önce daima SSH portuna (genellikle 22) izin veren bir kural ekleyin.
- En Az Ayrıcalık Prensibi: Yalnızca kesinlikle gerekli olan portlara ve protokollere izin verin. “Her şeye izin ver” yaklaşımından kaçının.
- Düzenli İnceleme: Güvenlik duvarı kurallarınızı periyodik olarak gözden geçirin ve ihtiyaç duymadığınız kuralları kaldırın.
- Test Edin: Herhangi bir güvenlik duvarı değişikliği yaptıktan sonra, beklenen trafiğin geçip geçmediğini ve istenmeyen trafiğin engellendiğini test edin.
- Yedekleme: Özellikle önemli sunucularda, UFW yapılandırmanızı ve genel sisteminizi yedeklemek iyi bir uygulamadır.
Sonuç
UFW, Linux sistemleriniz için güçlü ve anlaşılır bir güvenlik duvarı yönetim aracıdır. Bu rehberde öğrendiğiniz komutlar ve en iyi uygulamalarla, sunucularınızın güvenlik duruşunu önemli ölçüde iyileştirebilir ve potansiyel tehditlere karşı daha dirençli hale getirebilirsiniz. Unutmayın, güvenlik sürekli bir süreçtir ve güvenlik duvarı, bu sürecin kritik bir bileşenidir.
