LIONFIN
VPS & Sunucu

UFW Firewall Kurulumu: Ubuntu ve Debian Sunucuda Port Yönetimi

6 dk okuma Güncelleme: 1 görüntülenme
UFW Firewall Kurulumu: Ubuntu ve Debian Sunucuda Port Yönetimi

UFW firewall kurulumu, Linux çekirdeğindeki netfilter kurallarını (iptables/nftables) okunaklı komutlarla yöneten Uncomplicated Firewall aracını yapılandırıp etkinleştirmektir. Amaç basittir: sunucuya gelen her bağlantıyı varsayılan olarak reddetmek ve yalnızca SSH, web gibi gerçekten kullandığınız servislerin portlarını açık bırakmak.

Ubuntu Server’da paket hazır gelir ancak etkin değildir; Debian’da önce kurmanız gerekir. Komutlar Ubuntu 24.04 LTS ve Debian 12–13 çalıştıran bir VPS sunucu için yazılmıştır. Yeni bir sunucu hazırlıyorsanız güvenlik duvarının genel sıradaki yerini VPS ilk kurulum adımları rehberinde görebilirsiniz.

Kısa cevap

UFW firewall kurulumu, Ubuntu ve Debian’da gelen bağlantıları varsayılan olarak reddedip yalnızca izin verdiğiniz portları açan güvenlik duvarını devreye almaktır. Sıra önemlidir: önce ufw default deny incoming ve ufw default allow outgoing ile politikayı belirleyin, ardından ufw allow OpenSSH ile SSH’ye izin verin, en son ufw enable çalıştırın. Web için 80 ve 443 portlarını açın, veritabanı gibi servislere ise yalnızca belirli IP adreslerinden erişim verin.

UFW nedir, nasıl çalışır?

UFW (Uncomplicated Firewall), netfilter kurallarını elle yazmak yerine allow, deny ve limit gibi kısa komutlarla tanımlamanızı sağlayan bir ön yüzdür. Kurallar yukarıdan aşağıya değerlendirilir ve bir paketle eşleşen ilk kural uygulanır; hiçbir kural eşleşmezse varsayılan politika devreye girer.

PolitikaÖnerilen değerAnlamı
Gelen (incoming)denyİzin verilmeyen her bağlantı reddedilir
Giden (outgoing)allowSunucu güncelleme, DNS ve e-posta için dışarıya bağlanabilir
Yönlendirilen (routed)VarsayılanSunucu yönlendirici olarak çalışmıyorsa değiştirmeyin

Kurallar kalıcıdır: /etc/ufw/ altındaki dosyalara yazılır ve güvenlik duvarı etkinse her açılışta otomatik yüklenir. Bu yüzden ayrıca bir başlangıç betiği ya da iptables-save gerekmez.

UFW firewall kurulumu adım adım nasıl yapılır?

UFW firewall kurulumu beş adımdan oluşur ve tek bir altın kuralı vardır: SSH izni, güvenlik duvarı etkinleştirilmeden önce eklenir. Aksi hâlde yeni SSH bağlantıları reddedilir ve sunucuya yalnızca sağlayıcının konsolu gibi bant dışı bir yoldan ulaşabilirsiniz.

  1. Paketi kurun (Ubuntu’da hazırdır): sudo apt install ufw
  2. Varsayılan politikaları belirleyin: sudo ufw default deny incoming ve sudo ufw default allow outgoing
  3. SSH’ye izin verin: sudo ufw allow OpenSSH; SSH portunu değiştirdiyseniz sudo ufw allow 2222/tcp
  4. Eklenen kuralları etkinleştirmeden önce gözden geçirin: sudo ufw show added
  5. Güvenlik duvarını açın: sudo ufw enable ve “Command may disrupt existing ssh connections” sorusuna y yanıtı verin.

Sonucu sudo ufw status verbose ile kontrol edin; çıktıda Status: active, varsayılan politikalar ve izin verdiğiniz portlar görünmelidir. UFW bundan sonra sistem açılışında kendiliğinden başlar.

Port ve uygulama profiliyle nasıl izin verilir?

Bir servise iki yoldan izin verebilirsiniz: port numarasıyla ya da paketlerin /etc/ufw/applications.d/ altına bıraktığı uygulama profiliyle. Profiller birden çok portu tek adla açtığı için hata payını azaltır:

sudo ufw app list
sudo ufw app info 'Nginx Full'
sudo ufw allow 'Nginx Full'

Nginx Full profili 80 ve 443 numaralı TCP portlarını birlikte açar; Apache’deki karşılığı Apache Full’dur ve profil adları ilgili paket kurulduktan sonra listede görünür. Port numarasıyla çalışırken protokolü de belirtin:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 6000:6007/tcp

Son satır bir port aralığı açar; aralıklarda tcp ya da udp yazmak zorunludur. Nginx’i yeni kuruyorsanız sunucu bloğu ayarları Ubuntu Nginx kurulumu rehberindedir. E-posta göndermek için giden yönde ek kural gerekmez; allow outgoing politikası, 587 numaralı port üzerinden SmartHost SMTP relay gibi bir servise bağlanmaya izin verir.

Belirli bir IP adresine izin vermek ya da IP engellemek nasıl yapılır?

Veritabanı, yönetim arayüzü ya da izleme aracı gibi herkese açık olmaması gereken servisleri yalnızca bilinen IP adreslerine açın. Örneğin MariaDB/MySQL portunu sadece ofis IP’nize, SSH’yi bir alt ağa açmak için:

sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp comment 'ofis-mysql'
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp

comment, kuralın neden eklendiğini listede gösterir. Uygulama ile veritabanı aynı sunucudaysa 3306 numaralı portu hiç açmayın; bağlantı 127.0.0.1 üzerinden kurulur. Kötü niyetli bir adresi engellemek için kuralı listenin başına ekleyin, aksi hâlde daha önce eşleşen bir allow kuralı engeli etkisiz bırakır:

sudo ufw insert 1 deny from 198.51.100.7

Tek tek IP engellemek, sürekli değişen saldırgan adreslerine karşı sürdürülebilir değildir; tekrarlanan hatalı girişleri otomatik engellemek için fail2ban kurulumu daha uygun bir çözümdür.

SSH portu limit kuralıyla nasıl korunur?

limit kuralı, aynı IP adresinden son 30 saniye içinde 6 ya da daha fazla bağlantı denemesi gelirse yeni bağlantıları reddeder; SSH’ye yönelik kaba kuvvet denemelerini yavaşlatmanın en kolay yoludur:

sudo ufw limit OpenSSH
sudo ufw status

Listede aynı port için hem ALLOW hem LIMIT satırı kaldıysa ALLOW satırını silin; ilk eşleşen kural uygulandığından sınır aksi hâlde devreye girmez. Kısa sürede çok sayıda oturum açan araçlar (Ansible, döngü içinde scp) bu sınıra takılabilir; o durumda yönetim IP’niz için ayrı bir allow from kuralı ekleyin.

SSH portunu değiştirdiyseniz sıra kritiktir: önce sudo ufw allow 2222/tcp ile yeni portu açın, SSH’yi yeni porta taşıyıp ikinci bir terminalde bağlanabildiğinizi doğrulayın, ancak bundan sonra sudo ufw delete allow OpenSSH ile eski kuralı kaldırın. OpenSSH profili her zaman 22 numaralı portu açar, değişen portu takip etmez.

Kurallar nasıl listelenir, silinir ve sıfırlanır?

Kuralları numaralı listeleyip numarayla silmek, yanlış kuralı kaldırma riskini en aza indirir:

sudo ufw status numbered
sudo ufw delete 3
sudo ufw delete allow 80/tcp

Her silmeden sonra numaralar kayar; birden çok kural sileceğiniz zaman listeyi yeniden alın. IPv6 kuralları listede (v6) ekiyle ayrı satır olarak görünür; kuralı tanımıyla sildiğinizde (üçüncü komut) iki sürüm birlikte kaldırılır.

KomutNe yapar
sudo ufw status verboseDurum, politikalar ve kurallar
sudo ufw reloadKural dosyalarını yeniden yükler
sudo ufw disableGüvenlik duvarını kapatır, kurallar korunur
sudo ufw resetTüm kuralları siler, UFW’yi kapatır, eski dosyaları yedekler
sudo ufw logging onEngellenen bağlantıları günlüğe yazar

Günlükler Ubuntu’da /var/log/ufw.log dosyasına, rsyslog bulunmayan sistemlerde çekirdek günlüğüne düşer: sudo journalctl -k | grep UFW.

IPv6 ve Docker kullanırken nelere dikkat edilmeli?

IPv6 adresi olan bir sunucuda kuralların IPv6 için de uygulandığından emin olun; aksi hâlde IPv4’te kapalı bir port IPv6 üzerinden açık kalabilir. /etc/default/ufw dosyasında IPV6=yes satırı bulunmalıdır (Ubuntu’da varsayılan budur); değiştirdiyseniz sudo ufw disable ve sudo ufw enable ile yeniden yükleyin.

Docker kullanıyorsanız önemli bir istisna vardır: -p 8080:80 gibi yayımlanan container portları Docker’ın kendi iptables zincirleri üzerinden yönlendirilir, UFW kurallarını atlar ve ufw status listesinde görünmeden internete açık kalır. Container’ı yalnızca sunucu içinden erişilebilir yapmak için portu yerel adrese bağlayın ve dışarıya Nginx gibi bir ters vekil (reverse proxy) üzerinden açın:

docker run -d -p 127.0.0.1:8080:80 nginx

Kısıtlamayı güvenlik duvarında yapmak isterseniz kuralları Docker’ın bu amaçla ayırdığı DOCKER-USER zincirine yazmanız gerekir. Docker Engine ve Compose kurulumu için Docker kurulumu rehberine bakın.

Güvenlik duvarı yüzünden erişim kaybedilirse ne yapılır?

SSH’ye izin vermeden UFW’yi etkinleştirdiyseniz sunucuya ağ üzerinden değil, sağlayıcınızın tarayıcı tabanlı konsolu gibi bant dışı bir kanaldan girip kuralı düzeltmeniz gerekir. Konsolda oturum açtıktan sonra sudo ufw allow OpenSSH komutunu çalıştırın ya da sorunu incelerken geçici olarak sudo ufw disable deyin. Konsol erişiminiz yoksa LIONFIN müşteri panelinden destek talebi açın; sunucuyu yeniden başlatmak işe yaramaz, çünkü kurallar kalıcıdır.

UFW yalnızca sunucuya ulaşan trafiği süzer; bağlantı hattını dolduran hacimsel saldırılara karşı ağ düzeyinde koruma gerekir. Bu ayrımın ayrıntıları DDoS saldırısı nedir yazısında anlatılmıştır.

Sık Sorulan Sorular

UFW ile iptables arasındaki fark nedir?

UFW ayrı bir güvenlik duvarı değil, Linux çekirdeğindeki netfilter altyapısına kural yazan bir ön yüzdür. iptables ya da nftables ile her ayrıntıyı tanımlayabilirsiniz ama sözdizimi uzundur ve hata payı yüksektir; UFW sık kullanılan senaryoları tek satırlık komutlara indirger. Tek sunucuda port açıp kapamak için UFW yeterlidir; karmaşık NAT ya da yönlendirme kuralları gerektiğinde doğrudan nftables tercih edilir.

UFW etkinken bir portun açık olup olmadığını nasıl anlarım?

Önce sudo ufw status ile kuralın listede olduğunu doğrulayın, ardından sunucuda sudo ss -tulpn ile servisin o portu gerçekten dinlediğini kontrol edin; kural olsa da dinleyen servis yoksa bağlantı kurulamaz. Dışarıdan test için Linux ya da macOS bilgisayarınızda nc -zv SUNUCU_IP 443, Windows PowerShell’de Test-NetConnection SUNUCU_IP -Port 443 komutunu kullanabilirsiniz.

Sunucuyu yeniden başlatınca UFW kuralları silinir mi?

Hayır. UFW kuralları /etc/ufw altındaki dosyalarda saklanır ve güvenlik duvarı etkinse sistem açılışında otomatik yüklenir. Kurallar uygulanmıyor gibi görünüyorsa sudo ufw status verbose çıktısında durumun active olduğunu ve systemctl is-enabled ufw komutunun enabled yanıtını verdiğini kontrol edin. Kalıcılık için ayrıca betik yazmanız ya da iptables-save kullanmanız gerekmez.

Giden trafiği de UFW ile kısıtlamalı mıyım?

Çoğu web sunucusu için gerekmez; varsayılan allow outgoing politikası güncellemelerin, DNS sorgularının ve e-posta gönderiminin çalışmasını sağlar. Yüksek güvenlik gerektiren ortamlarda giden trafiği de deny yapıp yalnızca 53 (DNS), 123 (NTP), 80, 443 ve 587 gibi gerekli portlara izin verebilirsiniz. Bu yaklaşım ele geçirilmiş bir sürecin dışarıyla iletişimini zorlaştırır ama her yeni servis için kural eklemeyi gerektirir.

UFW sunucunun performansını düşürür mü?

Tipik bir web sunucusunda fark edilir bir yavaşlama yaratmaz; kurallar çekirdek içinde değerlendirilir ve kurulu bağlantılara ait paketler listenin başındaki durum kuralıyla hızla kabul edilir. Binlerce tekil IP kuralı eklemek ise hem performansı hem yönetilebilirliği düşürür. Çok sayıda adresi engellemeniz gerekiyorsa fail2ban gibi otomatik araçları ya da ağ düzeyinde filtrelemeyi tercih edin.

Bu makale yardımcı oldu mu?

Geri bildiriminiz için teşekkürler!

kişi faydalı buldu

Paylaş

X LinkedIn WhatsApp

Sorunuz mu var? Destek ekibimize yazın.