İçeriğe geç
Güvenli başlangıç

Ubuntu VPS'te UFW Güvenlik Duvarı Kurulumu

SSH erişimini kaybetmeden UFW kurallarını planlayın. Web portları, IPv6, günlükler, geri alma ve Docker ile yayımlanan portların önemli farkları.

ServerQ Yayın Ekibi8 dk okuma

UFW, Ubuntu üzerinde gelen ve giden trafiğin politikasını okunabilir kurallarla yönetir. Güvenli kurulum, önce kullandığınız SSH bağlantısına izin vermeyi ve ardından yalnızca gerekli servisleri açmayı gerektirir.

Güvenlik duvarı tek başına uygulama güvenliği sağlamaz. Güncellemeler, güçlü kimlik doğrulama, yerel veritabanı bağlantısı ve yedekler aynı planın parçalarıdır. Docker’ın yayımladığı portlar ise ayrıca değerlendirilmelidir.

Bu rehberle neler yapabilirsiniz?

  • SSH bağlantısını koruyarak temel UFW politikası oluşturmak
  • Web trafiği, IPv6 ve gereksiz açık portları değerlendirmek
  • Kural silme ve konsoldan geri dönüş yolunu bilmek
Kapsam

Ubuntu Server 24.04 LTS; örnek SSH portu 22’dir. Özel port kullananlar ilgili kuralları değiştirmelidir.

Başlamadan önce
  • Ubuntu üzerinde sudo yetkisi
  • Çalışan ikinci SSH oturumu ve sağlayıcı konsolu
  • SSH servisinizin gerçek portunu bilmek

1. Port envanteri çıkarın

Mevcut durumu kaydedin
sudo ss -lntup
sudo ufw status verbose
sudo /usr/sbin/sshd -T | grep "^port "

UFW kurulu değilse durum komutu bulunamayabilir; sudo apt update ve sudo apt install ufw ile kurun. Mevcut kuralları olan sunucuda sıfırlama yapmayın. Sağlayıcı panelindeki ağ kuralları UFW’den ayrıdır: trafiğin ulaşması için iki katmanda da gerekli izin bulunmalıdır.

Örnek web sunucusu politikası
PortAmaçErişim
22/tcpSSH yönetimiGerçek SSH portunuz; sabit yönetim IP’si varsa sınırlandırılabilir.
80/tcpHTTP ve sertifika doğrulamaWeb yayını sırasında genel erişim.
443/tcpHTTPSWeb yayını sırasında genel erişim.
3306, 5432, 3000, 5678Veritabanı / uygulama iç portlarıTek sunucu kurulumunda genellikle localhost veya özel ağ.

2. SSH iznini politikadan önce ekleyin

Aşağıdaki komutlar varsayılan 22 numaralı SSH portu içindir. Mevcut bağlantınız başka porttaysa 22 yerine o portu yazın. Açık oturumun çalışmaya devam etmesi yeni bağlantıların da çalıştığını kanıtlamaz; etkinleştirmeden sonra bağımsız oturum testi yapın.

Temel gelen / giden trafik politikası
sudo ufw allow 22/tcp comment "SSH management"
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 80/tcp comment "HTTP"
sudo ufw allow 443/tcp comment "HTTPS"
sudo ufw show added
sudo ufw enable
sudo ufw status verbose

Sunucunuz web hizmeti vermiyorsa 80 ve 443 kurallarını eklemeyin. Belirli bir yönetim IP’sinden erişimi sınırlandırmak istiyorsanız önce bu IP için ek kural oluşturup ikinci bağlantıyla test edin; genel SSH kuralını ancak ardından kaldırın. Dinamik ev veya mobil IP adresiyle dar kural kullanmak erişiminizi kesebilir.

3. IPv6 ve sağlayıcı katmanını unutmayın

IPv6 durumunu inceleyin
grep "^IPV6=" /etc/default/ufw
ip -6 address show scope global
sudo ufw status numbered

Sunucunun genel IPv6 adresi ve alan adının AAAA kaydı varsa IPv6 trafiği de politikanıza dahil olmalıdır. UFW’de IPV6=yes kullanılan normal kurallarda IPv6 karşılıkları durum listesinde “v6” olarak görünür. Sadece IPv4 üzerinden başarılı test yapmak IPv6 erişimini doğrulamaz.

AAAA kaydı yanlış sunucuya gidiyorsa HTTPS doğrulaması veya ziyaretçi erişimi beklenmedik biçimde bozulabilir. Kullanmadığınız bir IPv6 kaydını DNS’te bırakmak yerine kayıt planınızı düzeltin. Sağlayıcı seviyesinde filtre varsa IPv4 ve IPv6 politikalarını orada da karşılaştırın.

4. Docker portlarını ayrı değerlendirin

Docker, container portlarını yayımlarken kendi ağ ve paket filtreleme kurallarını oluşturur. Resmî Docker belgeleri, yayımlanan trafiğin UFW’nin kullandığı zincirlerden önce yönlendirilebildiğini belirtir. Bu yüzden “UFW portu kapalı gösteriyor” sonucu bir container portunun dışarıdan kapalı olduğuna tek başına kanıt değildir.

Compose içinde yalnızca localhost’a bağlama örneği
ports:
  - "127.0.0.1:5678:5678"
Tek sunucuda ters vekil modeli
  1. 01İnternet :443
  2. 02Nginx + TLS
  3. 03127.0.0.1:5678
  4. 04Uygulama container’ı

Uygulamanın iç portu genel ağ yerine localhost üzerinden ters vekile sunulur.

Genel erişimi Nginx üzerinden verin ve container portlarını bilinçli yayımlayın. Daha karmaşık ağ kuralları için Docker’ın kullandığınız firewall backend’ine ait dokümanını izleyin. Docker ağ yönetimini rastgele kapatmak container bağlantılarını bozabilir; eski bir iptables tarifini farklı backend üzerinde kopyalamayın.

5. Test edin, gereksiz kuralları kaldırın

Durum ve günlükler
sudo ufw logging low
sudo ufw status numbered
sudo journalctl -k --since "15 minutes ago" | grep UFW

Kendi bilgisayarınızdan yeni bir SSH bağlantısı açın ve yayımladığınız alan adını HTTPS üzerinden kontrol edin. Sunucunun içinden localhost testi yapmak dış erişim politikasını ölçmez. Sadece sahibi olduğunuz veya test etmeye yetkili olduğunuz adresleri kontrol edin.

Numaralı bir kuralı silmek için sudo ufw delete NUMARA kullanılır; NUMARA yerine güncel listedeki değeri yazın. Her silmeden sonra numaralar değişebileceği için listeyi yeniden okuyun. Erişimi yanlışlıkla kestiyseniz sağlayıcı konsolundan eksik SSH kuralını ekleyin. Gerekirse konsoldan sudo ufw disable ile geçici olarak devre dışı bırakıp doğru kuralları kurun; daha sonra etkinleştirerek yeniden test edin.

Başarılı kurulumun kaydı, açık portlar ve hangi servis için gerektiğini içermelidir. Yeni uygulama eklendiğinde bu envanteri güncelleyin. Kaynağı bilinmeyen kuralları yıllarca tutmak yerine servis kaldırılırken ilgili erişimi de kaldırın.

İnceleme kapsamı

Resmî dokümanlar ve örnek yapılandırmalar 30 Eylül 2026 tarihinde incelendi. Bu rehberdeki tam kurulum boş bir VPS üzerinde uçtan uca çalıştırılmadı. Mevcut sunucunuzu değiştirmeden önce ayrı bir deneme ortamında, kendi sürüm ve erişim koşullarınızla doğrulayın.

Resmî kaynaklar

Sürüm ve yapılandırma ayrıntılarını ilgili projenin güncel belgelerinden takip edin.