SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor · Güncellendi 2026-10-07

Ubuntu VPS üzerinde UFW ile güvenlik duvarı yapılandırma

UFW kullanarak VPS sunucunuzu koruma altına alın. SSH bağlantısını kaybetmeden varsayılan reddetme politikasını ayarlayın ve sadece gerekli portlara izin verin.

UFW nedir ve neden gereklidir

UFW, Uncomplicated Firewall (Basit Güvenlik Duvarı) ifadesinin kısaltmasıdır ve ismi işlevini tam olarak yansıtır. Linux çekirdeğinde halihazırda bulunan güvenlik duvarı mekanizması için kullanıcı dostu bir arayüz sunar; böylece karmaşık kurallar yazmak yerine ufw allow 22/tcp gibi kısa komutlar kullanılır. Yeni bir VPS üzerinde varsayılan olarak tüm dinleyen servisler internete açıktır. Bir güvenlik duvarı bu durumu tersine çevirir: önce her şeyi reddeder, ardından yalnızca kullandığınız az sayıdaki porta izin verirsiniz. Bu tek değişiklik, yaklaşık dört komutla saldırı yüzeyinizin büyük kısmını ortadan kaldırır. UFW, Ubuntu ve Debian için standart araçtır; eğer VPS üzerinde Rocky veya AlmaLinux kullanıyorsanız kuralları bölgelere göre düzenleyen firewalld tercih edilmelidir.

Güvenlik duvarına dokunmadan önce hangi servislerin dinlemede olduğunu bilmeniz gerekir; çünkü güvenlik duvarı bu servislerin kaderini belirleyecektir. ss -tlnp komutuyla dinleyen servisleri görüntülemek atılması gereken ilk doğru adımdır.

Sistemden dışarı kilitlenmenizi önleyecek tek kural

İnsanları güvenlik duvarlarından uzaklaştıran hata budur. UFW'yi varsayılan reddetme politikasıyla etkinleştirirsiniz ancak SSH'a izin vermeyi unutursunuz; bu durumda güvenlik duvarı devreye girdiği an bağlantınız kesilir ve sisteme tekrar erişemezsiniz. UFW'yi etkinleştirmeden önce her zaman SSH'a izin vererek bu durumdan kaçının. Tüm mesele budur ve aşağıdaki adımlar bu işlemi güvenli sırada gerçekleştirir.

Eğer yine de kilitlenirseniz, çaresiz değilsiniz: sağlayıcınızın VNC veya seri konsol üzerinden sunduğu web arayüzü SSH üzerinden çalışmaz; bu sayede oradan giriş yapıp ufw disable komutunu çalıştırabilir veya eksik kuralı ekleyebilirsiniz. Güvenlik duvarı kaynaklı kilitlenmenin belirgin bir belirtisi vardır: reddedilen paket SSH istemcinizi zaman aşımına uğrayana kadar bekletirken, durdurulmuş bir SSH servisi bağlantıyı anında reddeder; bu, connection refused ve connection timed out arasındaki farktır.

Adım 1: Varsayılan politikaları belirleyin

UFW'ye gelen her şeyi reddetmesini ve giden her şeye izin vermesini söyleyerek başlayın:

sudo ufw default deny incoming
sudo ufw default allow outgoing

deny incoming işin önemli kısmıdır. Bu, açık bir izin kuralı olmayan tüm portların, bir servis bu portları dinliyor olsa bile dış dünyaya kapalı olduğu anlamına gelir. allow outgoing sunucunuzun güncellemeler ve benzeri işlemler için internete normal şekilde erişmesini sağlar. Bu iki komut yalnızca politikayı değiştirir; 3. adımda UFW'yi etkinleştirene kadar hiçbir kural uygulanmaz.

Adım 2: İhtiyacınız olan portlara izin verin

Güvenlik duvarını etkinleştirmeden önce bağlantınızın kesilmemesi için SSH portunu açın:

sudo ufw allow 22/tcp

UFW, SSH için hız sınırlaması (rate-limit) da uygulayabilir: sudo ufw limit 22/tcp komutu, porta izin verirken otuz saniye içinde altı veya daha fazla bağlantı kurmaya çalışan adresleri engeller; bu, ek bir yazılıma gerek kalmadan kaba kuvvet (brute-force) saldırılarını hafifletir.

Bir web sunucusu çalıştırıyorsanız, HTTP ve HTTPS trafiğine de izin verin:

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

Yalnızca dış dünyaya sunduğunuz servislere izin verin. 5432 numaralı portu kullanan Postgres gibi bir veritabanı için neredeyse hiçbir zaman izin kuralı oluşturulmamalıdır. Bunun yerine veritabanını 127.0.0.1 adresine bağlayın; böylece yalnızca sunucu üzerinden erişilebilir kalır. Açtığınız her port, savunmanız gereken yeni bir kapıdır; bu nedenle izin listesini kısa tutun.

Sunucunuz için gerekli tüm ufw komutlarını burada hazırlayabilir ve ardından sırasıyla çalıştırabilirsiniz:

ToolUFW rule generator

Adım 3: Etkinleştirme ve durumunu doğrulama

sudo ufw enable

Bu komut, mevcut SSH bağlantılarını kesebileceği konusunda uyarı verir. 2. adımda 22/tcp izni verdiğiniz için oturumunuz kesilmeden devam eder. Sonucu doğrulayın:

sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing)

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp                     ALLOW IN    Anywhere

Burada iki noktaya dikkat edin. Status: active ifadesi, güvenlik duvarının çalıştığı anlamına gelir. Her kuralın iki kez listelendiğini göreceksiniz; biri normal, diğeri ise UFW'nin hem IPv4 hem de IPv6 trafiğini kapsadığını belirten (v6) ile işaretlenmiştir. Eğer (v6) satırları eksikse, IPv6 tarafınız yönetilmiyor demektir; bu durum IPv6 güvenlik duvarı yazısında ele alınan ayrı bir risk oluşturur.

Kuralları daha sonra yönetmek

Kuralları numaralarıyla görmek ve birini silmek için:

sudo ufw status numbered
sudo ufw delete 3

Bir porta yalnızca tek bir adresten erişime izin vermek için (yönetim servislerini sadece kendi IP adresinize açmanın iyi bir yoludur):

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

Bu yaklaşım, kendi IP adresiniz değiştiğinde veya birden fazla makinenin erişmesi gerektiğinde yetersiz kalır. Yaygın çözüm, portu herkese açık hale getirmekten vazgeçip servise özel bir ağ üzerinden erişmektir; sunucunun özel alt ağını tailnet'e dahil etmek bunun için kullanılır.

Güvenlik duvarı tek bir katmandır. Bir porta neyin erişebileceğini kontrol eder ancak SSH gibi açık bıraktığınız bir porta sürekli istek gönderen birini yavaşlatmaz. Bunun için, tekrarlayan saldırganları engellemek amacıyla SSH önüne Fail2ban ekleyin. Derinlemesine savunma, her katmanın diğerlerinin kapsayamadığı alanları koruması anlamına gelir.

Güvenlik duvarı ancak portların ne olduğunu ve servislerin nasıl dinleme yaptığını bildiğinizde anlam kazanır ve yapılandırması, yeni bir VPS'teki ilk 10 dakika içinde atılması gereken bir adımdır.

FAQ

UFW'yi etkinleştirmek SSH oturumumu koparır mı?

Önce SSH'e izin verirseniz koparmaz. sudo ufw enable komutunu çalıştırmadan önce sudo ufw allow 22/tcp komutunu çalıştırın; güvenlik duvarı 22 numaralı porta izin vereceği için bağlantınız kesilmez. Tehlike, SSH kuralı eklemeden varsayılan olarak reddeden bir güvenlik duvarını etkinleştirmektir; bu durum bağlantınızı keser. Eğer bu gerçekleşirse, sağlayıcınızın VNC veya seri konsolu üzerinden giriş yapın ve ufw disable komutunu çalıştırın.

Bir VPS üzerinde hangi portları açmalıyım?

Yalnızca dış dünyaya sunduğunuz portları açın. Sunucuyu yönetebilmek için SSH (22/tcp), web sitesi çalıştırıyorsanız HTTP ve HTTPS (80/tcp, 443/tcp) portlarını açın. Diğer her şeyi reddedilmiş durumda bırakın. Veritabanı gibi dahili servisler 127.0.0.1 adresine bağlanmalı ve hiçbir güvenlik duvarı kuralına dahil edilmemelidir; böylece ağ üzerinden asla erişilemez olurlar.

UFW IPv6 desteğine sahip mi?

Modern Ubuntu sürümlerinde evet: /etc/default/ufw dosyasında IPV6=yes ayarı etkindir, bu nedenle her kural her iki yığın için de geçerlidir ve ufw status komutu IPv6 kurallarını (v6) sonekiyle gösterir. Bu konuda yaşanabilecek sorunlar IPv6 güvenlik duvarı tuzağı bölümünde açıklanmıştır.

Bir UFW kuralını nasıl silerim?

Kuralları indeks numaralarıyla listelemek için sudo ufw status numbered komutunu çalıştırın, ardından silmek istediğiniz kuralın numarası N olmak üzere sudo ufw delete N komutunu kullanın. Ayrıca kuralı belirterek de silebilirsiniz, örneğin sudo ufw delete allow 80/tcp.

Bir porta sadece tek bir IP adresinden nasıl izin veririm?

Basit bir allow kuralı yerine from kuralını kullanın. PostgreSQL'e yalnızca ofis adresinizin erişmesine izin vermek için sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp komutunu çalıştırın. Varsayılan olarak reddetme politikası uygulandığında, bir kural açana kadar port herkese kapalıdır; bu nedenle bu from kuralı içeriye giren tek yoldur: tüm internet engellenmiş kalır ve yalnızca belirttiğiniz adres erişim sağlar. Ayrıca portu herkese açacak olan basit bir allow 5432/tcp kuralı eklemeyin. Bir veritabanını veya yönetim panelini dışarıya açmanın en güvenli yolu budur. Bunu, portun yanında kaynak adresi gösteren sudo ufw status verbose komutu ile doğrulayın.