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
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
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.
| Port | Amaç | Erişim |
|---|---|---|
| 22/tcp | SSH yönetimi | Gerçek SSH portunuz; sabit yönetim IP’si varsa sınırlandırılabilir. |
| 80/tcp | HTTP ve sertifika doğrulama | Web yayını sırasında genel erişim. |
| 443/tcp | HTTPS | Web yayını sırasında genel erişim. |
| 3306, 5432, 3000, 5678 | Veritabanı / 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.
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 verboseSunucunuz 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
grep "^IPV6=" /etc/default/ufw
ip -6 address show scope global
sudo ufw status numberedSunucunun 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.
ports:
- "127.0.0.1:5678:5678"- 01İnternet :443
- 02Nginx + TLS
- 03127.0.0.1:5678
- 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
sudo ufw logging low
sudo ufw status numbered
sudo journalctl -k --since "15 minutes ago" | grep UFWKendi 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.