Ubuntu'da UFW güvenlik duvarı yapılandırma

Ubuntu'da UFW güvenlik duvarını yapılandırmak için adım adım rehber; gerekli portları açma, kuralları yönetme ve SSH erişimini kaybetmeyi ve sunucunun dışında kilitlenmeyi önlemek için kritik ipuçları.

6 dk Güncellendi 17 Aug 2026

UFW Güvenlik Duvarı Ubuntu'da Neden Önemlidir?

Bir Ubuntu sunucusunu yeni başlattığınızda, varsayılan olarak tüm portlar açıktır. Bu, internet üzerindeki herkesin sunucuda çalışan hizmetlere bağlanabileceği anlamına gelir; SSH'den MySQL'e ve web sunucusuna kadar. Bu durum aslında otomatik tarayıcılar ve brute-force saldırıları için bir davetiyedir. UFW güvenlik duvarı (Uncomplicated Firewall'ın kısaltması) tam olarak bu sorun için tasarlanmış bir araçtır: iptables üzerinde, birkaç kısa komutla gelen trafiği kontrol etmenizi sağlayan basit bir komut satırı arayüzü.

Bu makalede, Ubuntu'da UFW güvenlik duvarını nasıl etkinleştireceğinizi, gerekli portları nasıl açacağınızı ve en önemlisi, kendi SSH erişiminizi kaybetmenize neden olan yaygın hatadan nasıl kaçınacağınızı öğreneceksiniz. Bu kılavuz Ubuntu 20.04 ve sonraki sürümler için geçerlidir.

UFW Güvenlik Duvarının Kurulumu ve İlk Etkinleştirilmesi

Çoğu Ubuntu kurulumunda UFW zaten yüklüdür. Değilse, şu komutla kurun:

sudo apt update
sudo apt install ufw

Her şeyden önce, güvenlik duvarının mevcut durumunu kontrol edin:

sudo ufw status verbose

Çıktı genellikle Status: inactive şeklindedir. Şimdi ilk kuralları ayarlama zamanı. Ancak ciddi bir uyarı: Hemen sudo ufw enable komutunu çalıştırırsanız, büyük olasılıkla SSH erişiminizi kaybedersiniz, çünkü varsayılan kural, tüm gelen trafiği reddetmektir. Bu yüzden önce kuralları ayarlayın, sonra güvenlik duvarını etkinleştirin.

Varsayılan Politikayı Ayarlama

Varsayılan politika, bir bağlantı için açık bir kural yoksa ne olacağını belirler. En iyi ve en güvenli durum şudur:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Bu, açıkça izin vermediğiniz sürece tüm gelen trafiğin engelleneceği ve tüm giden trafiğin (güncellemeler ve DNS yanıtları gibi) serbest olduğu anlamına gelir. Bu politika, güvenli bir sunucunun temelidir.

Etkinleştirmeden Önce Gerekli Portları Açma

Şimdi gerçekten ihtiyacınız olan portları açmalısınız. Bunu güvenlik duvarını etkinleştirmeden önce yapın, böylece bağlantı kesilme riski sıfıra iner.

SSH Portunu Açma (En Önemli Kural)

SSH'niz standart 22 numaralı portta çalışıyorsa:

sudo ufw allow ssh

SSH portunu değiştirdiyseniz (örneğin 2222'ye), portu açıkça belirtmelisiniz:

sudo ufw allow 2222/tcp

allow ssh komutunun allow 22/tcp ile eşdeğer olduğunu unutmayın. Standart olmayan bir portunuz varsa, protokolü de belirttiğinizden emin olun. Bu, UDP portunun yanlışlıkla açılmasını önler.

Web ve Yaygın Hizmet Portlarını Açma

Web sunucusu için (HTTP ve HTTPS):

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

MySQL veya MariaDB'ye uzaktan bağlanıyorsanız (her yerden değil, yalnızca kendi IP'nizden):

sudo ufw allow from 203.0.113.10 to any port 3306/tcp

Bu kural yalnızca belirtilen IP'nin MySQL'e bağlanmasına izin verir. Bu, portu herkese açmaktan çok daha iyi bir yöntemdir. DNS, SMTP ve diğer hizmetler için de aynı şekilde ilerleyin:

sudo ufw allow 53/tcp
sudo ufw allow 53/udp
sudo ufw allow 25/tcp

Oyun veya Belirli Bir Uygulama için Port Açma

UDP portunda çalışan bir oyun veya uygulamanız varsa (bazı çevrimiçi oyunlar gibi), protokolü mutlaka belirtin:

sudo ufw allow 27015/udp

Güvenlik Duvarını Etkinleştirme ve Kuralları Kontrol Etme

Gerekli tüm portları açtıktan sonra, artık güvenlik duvarını etkinleştirebilirsiniz:

sudo ufw enable

Sistem sizden onay isteyecek ve bu işlemin SSH'yi kesebileceği konusunda uyaracaktır. SSH kuralını zaten eklediğiniz için güvenle y yazın. Etkinleştirdikten sonra durumu kontrol edin:

sudo ufw status verbose

Çıktı şuna benzer olmalıdır:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere
3306/tcp                   ALLOW IN    203.0.113.10

Kural Yönetimi: Ekleme, Silme ve Değiştirme

Sunucunun ömrü boyunca her zaman kuralları değiştirme ihtiyacı duyacaksınız. Bu bölümü aklınızda tutun.

Bir Kuralı Silme

Bir kuralı silmek için iki yönteminiz var. İlk yöntem kural numarasıyladır. Önce numaraları görün:

sudo ufw status numbered

Çıktı, her satırın başında numarayla gösterilir. Ardından silin:

sudo ufw delete 3

İkinci yöntem, kuralın kendisiyle silmektir:

sudo ufw delete allow 80/tcp

Bir Kuralı Değiştirme

UFW kuralları düzenlemez; silip yeniden eklemeniz gerekir. Örneğin, MySQL kuralındaki izin verilen IP'yi değiştirmek için:

sudo ufw delete allow from 203.0.113.10 to any port 3306/tcp
sudo ufw allow from 198.51.100.20 to any port 3306/tcp

Port Aralığı Açma

Bir port aralığını açmak için (örneğin 8000-8100):

sudo ufw allow 8000:8100/tcp

Yaygın Hata: Sunucunun Dışında Kilitlenme ve Kurtarma Yolları

Acemilerin yaptığı en önemli hata, SSH kuralını eklemeden önce güvenlik duvarını etkinleştirmek veya SSH kuralını yanlış yazmaktır (örneğin, portu yanlış protokolle açmak). Sonuç: SSH erişimi kesilir ve sunucunun dışında kilitlenirsiniz.

Bu olursa, birkaç kurtarma yolunuz var:

  1. Yönetim panelinden konsol erişimi: Sunucunuz bir veri merkezinde veya ServerNet gibi bir hosting şirketindeyse, genellikle web tabanlı bir konsolunuz (noVNC veya IPMI gibi) vardır. Oradan giriş yapın ve sudo ufw disable komutunu çalıştırın.
  2. Ağ ayarlarıyla yeniden başlatma: Konsolunuz yoksa, yönetim panelinden sunucuyu yeniden başlatın. UFW varsayılan olarak yeniden başlatmanın ardından etkin kalır, bu nedenle bu yöntem genellikle işe yaramaz, önyüklemede güvenlik duvarını sıfırlayan bir kuralınız olmadığı sürece.
  3. Etkinleştirmeden önce bir fail-safe kuralı oluşturun: Bu en iyi yoldur. 5 dakika sonra güvenlik duvarını otomatik olarak devre dışı bırakacak bir kural ekleyin. Her şey yolundaysa, bu kuralı silin:
sudo sh -c "echo 'sudo ufw disable' | at now + 5 minutes"

Bu komut at aracını kullanır. Kurulu değilse, sudo apt install at ile kurun. Güvenlik duvarını etkinleştirdikten sonra SSH çalışıyorsa, bu zamanlanmış kuralı sudo atrm $(atq | awk '{print $1}') ile silin.

Mevcut Bağlantıyı Kesmeden Kuralları Test Etme

Bir başka akıllı yöntem: Ana güvenlik duvarına kuralları uygulamadan önce ikinci bir SSH oturumu açın ve onu açık tutun. İlk oturum kesilirse, sorunu çözmek için ikinci oturumu kullanın. Bu, sunucu yöneticileri arasında yazılmamış bir kuraldır.

Günlükleme ve Sorun Giderme

UFW varsayılan olarak günlük tutar. Günlükleri görmek için:

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

Bu günlük, hangi paketlerin reddedildiğini gösterir. Bir hizmet dışarıdan erişilemiyorsa, önce bu günlüğü kontrol edin. Genellikle, paketin ilgili IP'den ilgili porta BLOCK edildiğini görürsünüz. Bu, kuralınızın yanlış olduğu veya hiç olmadığı anlamına gelir.

Dışarıdan bağlantıyı test etmek için nc (netcat) gibi araçları kullanabilirsiniz:

nc -zv your-server-ip 443

Port açıksa, succeeded mesajını görürsünüz. Kapalıysa, Connection refused veya timeout alırsınız.

Özet ve Son İpuçları

Ubuntu'da UFW güvenlik duvarını yapılandırmak zor bir iş değildir, ancak dikkat gerektirir. Altın kuralların özeti:

  • Etkinleştirmeden önce her zaman SSH kuralını ekleyin.
  • deny incoming ve allow outgoing varsayılan politikasını kullanın.
  • Yalnızca gerçekten ihtiyacınız olan portları açın.
  • MySQL gibi hassas hizmetler için erişimi belirli bir IP ile sınırlayın.
  • Her zaman ikinci bir SSH oturumunu açık tutun.
  • Neyin reddedildiğini anlamak için günlükleri kontrol edin.

Bu ipuçlarına uyarak, UFW güvenlik duvarı Ubuntu sunucunuz için güvenilir bir kalkan haline gelir ve artık sunucunun dışında kilitlenme konusunda endişelenmezsiniz. Sunucunuz bulut veya özel altyapıda barındırılıyorsa, yönetim panelinizin konsol aracını mutlaka öğrenin; bu araç acil durumlarda kurtarıcıdır.

Bu sayfa yardımcı oldu mu?