Sunucu Yönetimi & Linux

    UFW ile Linux Güvenlik Duvarı Yapılandırma

    UFW ile Ubuntu/Debian sunucunuzda güvenlik duvarını sıfırdan kurup kendinizi kilitlemeden 22, 80 ve 443 portlarını doğru şekilde açmayı öğrenin.

    9 dk okuma Güncellendi: 1 Temmuz 2026

    Bir Linux sunucusunu internete açtığınız andan itibaren, o sunucu artık dünyanın her yerinden gelen otomatik port taramalarının hedefi hâline gelir. Sunucu yönetiminde en çok atlanan ama en kritik adımlardan biri, hangi trafiğin içeri girip hangisinin engelleneceğine karar veren bir güvenlik duvarı kurmaktır. Bu rehberde Ubuntu ve Debian tabanlı sistemlerde en yaygın kullanılan güvenlik duvarı ön yüzü olan UFW (Uncomplicated Firewall) ile bunu nasıl yapacağınızı, en önemlisi de kendinizi sunucudan kilitlemeden nasıl yapacağınızı adım adım göreceksiniz.

    Anlatım kurulumdan başlayıp varsayılan politikaya, kritik SSH kuralına, servis bazlı port açmaya, belirli IP'lere özel izinlere, durum görüntülemeye ve loglamaya kadar ilerliyor. Yeni bir VDS ya da sanal sunucu kurduysanız, bu rehberdeki adımları ilk yapılandırma listenize eklemenizi öneririz.

    UFW Nedir?#

    UFW, Linux çekirdeğinin netfilter/iptables alt yapısının üzerine kurulmuş, komut satırından kolayca yönetilebilen bir güvenlik duvarı ön yüzüdür. Ham iptables kuralları yazmak karmaşık ve hataya açık bir iştir — tek bir yanlış zincir tanımı bütün trafiği kesebilir. UFW bu karmaşıklığı ufw allow 80/tcp gibi okunabilir komutların arkasına gizler ve arka planda doğru iptables kurallarını otomatik oluşturur.

    UFW, Ubuntu'da varsayılan olarak kurulu gelir; Debian'da ise genellikle tek satırla eklenir. Adının açılımı olan "uncomplicated" (karmaşık olmayan) tam olarak amacını özetler: sunucu yönetiminde deneyimi az olan biri bile birkaç dakikada temel bir güvenlik duvarı politikası kurabilir.

    Kurulum çok basittir:

    sudo apt update
    sudo apt install ufw -y
    

    Kurulumdan hemen sonra UFW etkin değildir — bu kasıtlıdır, çünkü etkinleştirmeden önce doğru kuralları tanımlamanız gerekir. Bir sonraki bölümde bunun neden bu kadar kritik olduğunu göreceksiniz.

    Varsayılan Politika: Önce Reddet, Sonra İzin Ver#

    Güvenlik duvarı düşüncesinin temel ilkesi "varsayılan reddet" (default deny) yaklaşımıdır: hiçbir bağlantıya izin vermeyerek başlayın, sonra yalnızca ihtiyacınız olan trafiği tek tek açın. UFW bu felsefeyi iki komutla uygular:

    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    

    Bu iki satır şu anlama gelir:

    • deny incoming — Sunucuya dışarıdan gelen tüm bağlantılar, açıkça izin vermediğiniz sürece reddedilir. Saldırı yüzeyini en aza indiren asıl kural budur.
    • allow outgoing — Sunucudan dışarıya giden bağlantılar (örneğin apt update ile paket indirme, dış bir API'ye istek atma) serbest bırakılır. Çoğu senaryoda giden trafiği kısıtlamak gereksiz bir zorluk yaratır; bu yüzden varsayılan olarak açık bırakılması yaygın ve makul bir tercihtir.

    Bu iki komutu çalıştırmak henüz güvenlik duvarını etkinleştirmez — yalnızca politikayı tanımlar. UFW'yi enable etmeden önce mutlaka bir sonraki adımı, yani SSH kuralını eklemeniz gerekir.

    Kritik Adım: SSH Kuralını Önce Ekleyin#

    Burada bir uyarı gerekiyor, çünkü bu adımı atlamak sunucu yönetiminde en sık yapılan hatalardan biridir: varsayılan politikayı deny incoming yapıp güvenlik duvarını SSH kuralı eklemeden etkinleştirirseniz, kendi bağlantınızı da keser ve sunucudan tamamen kilitlenirsiniz.

    Uzaktan bağlandığınız bir sunucuda bu hatayı yapmak, genellikle sağlayıcının konsol erişimi olmadan geri dönülemeyen bir duruma yol açar. Bu yüzden sıralama şudur: önce SSH'a izin verin, sonra etkinleştirin.

    sudo ufw allow OpenSSH
    

    OpenSSH, UFW'nin uygulama profillerinden biridir ve varsayılan 22 portunu temsil eder. Aynı işi port numarasıyla da yapabilirsiniz:

    sudo ufw allow 22/tcp
    

    SSH'ı farklı bir porta taşıdıysanız (örneğin 2222), o zaman gerçek portu açmanız gerekir — aksi hâlde OpenSSH profili sizi kurtarmaz:

    sudo ufw allow 2222/tcp
    

    Ancak bu kuralı ekledikten sonra bile etkinleştirmeden önce hangi portu kullandığınızı iki kez kontrol edin:

    sudo ss -tlnp | grep sshd
    

    Bu komutun çıktısında sshd servisinin dinlediği gerçek port numarasını görürsünüz. UFW kuralınızdaki port bu değerle eşleşmiyorsa, etkinleştirmeden önce düzeltin.

    Servis Bazlı Port İzinleri (80, 443, 22)#

    SSH kuralı güvence altına alındıktan sonra, sunucunuzda çalışacak diğer servisler için de port açmanız gerekir. Bir web sunucusu için en yaygın üçlü şudur:

    sudo ufw allow OpenSSH
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    
    • 80/tcp — Şifrelenmemiş HTTP trafiği. Genellikle 443'e yönlendirme (redirect) yapmak dışında doğrudan kullanılmaz, ama Let's Encrypt gibi sertifika doğrulama süreçleri bu portu kullanabilir.
    • 443/tcp — HTTPS trafiği; SSL sertifikası kurulu bir sitenin gerçek trafiği buradan akar.

    Nginx veya Apache kuruluysa, UFW bu servisler için hazır uygulama profilleri de sunar; bu profiller port numarasını ezbere bilmenize gerek bırakmaz:

    sudo ufw app list
    

    Bu komut kurulu uygulamaların listesini gösterir; tipik bir çıktı şuna benzer:

    Available applications:
      Nginx Full
      Nginx HTTP
      Nginx HTTPS
      OpenSSH
    

    Örneğin hem 80 hem 443'ü tek seferde açmak isterseniz:

    sudo ufw allow "Nginx Full"
    

    Yalnızca HTTPS trafiğine izin verip HTTP'yi kapalı tutmak isterseniz (örneğin sertifika doğrulamasını farklı bir yöntemle yapıyorsanız):

    sudo ufw allow "Nginx HTTPS"
    

    Bir e-posta sunucusu, veritabanı ya da özel bir uygulama çalıştırıyorsanız ilgili portu aynı mantıkla ekleyin. Örneğin MySQL için 3306'yı genel internete asla açmayın — bu tür servisler yalnızca belirli IP'lerden erişilebilir olmalıdır; bir sonraki bölüm tam olarak bunu anlatıyor.

    SSH'a Kaba Kuvvet Koruması: limit#

    UFW'nin allow dışında bir de limit seçeneği vardır ve özellikle SSH gibi sürekli saldırı denemesi alan portlar için değerlidir. Aynı IP adresinden kısa sürede tekrarlanan bağlantı denemelerini otomatik olarak geçici süreliğine reddeder — basit bir kaba kuvvet (brute-force) frenidir:

    sudo ufw limit OpenSSH
    

    Bu kural, aynı IP'den 30 saniye içinde 6'dan fazla bağlantı denemesi gelirse o IP'yi bir süreliğine engeller. allow kadar esnek değildir ve fail2ban gibi özel bir aracın yerini tutmaz, ama tek satırla eklenen ücretsiz bir ek katmandır. SSH'ı zaten allow ile açtıysanız, aynı kuralı tekrar eklemek yerine önce eskisini silip (sudo ufw delete allow OpenSSH) sonra limit ile yeniden eklemeniz gerekir; ikisi aynı anda tanımlıysa UFW ilk eşleşen kuralı uygular ve limit devreye girmeyebilir.

    Belirli Bir IP'ye Özel İzin Verme#

    Bazı servislerin herkese değil, yalnızca güvendiğiniz belirli bir IP adresine (örneğin ofis IP'niz, bir yönetim panelinin sunucusu ya da başka bir sunucunuz) açık olması gerekir. Bunun için from anahtar kelimesini kullanırsınız:

    sudo ufw allow from 203.0.113.55 to any port 22
    

    Bu kural, yalnızca 203.0.113.55 adresinden gelen bağlantıların 22 portuna erişmesine izin verir; başka hiçbir IP bu porta ulaşamaz. Bir port belirtmeden tüm trafiğe izin vermek isterseniz:

    sudo ufw allow from 203.0.113.55
    

    Belirli bir alt ağa (subnet) izin vermek için CIDR gösterimini kullanabilirsiniz — örneğin bir şirket ofisinin tüm IP bloğu:

    sudo ufw allow from 203.0.113.0/24 to any port 3306
    

    Bu yaklaşım özellikle veritabanı, yönetim paneli veya iç servisler için kritik bir katmandır: uygulamanız dışarıya açık olsa bile, hassas portları yalnızca bilinen IP'lere kısıtlamak saldırı yüzeyini büyük ölçüde daraltır. Genel bir sunucu sertleştirme yaklaşımı için sunucu güvenliği temelleri rehberimize de göz atabilirsiniz.

    Kuralları Etkinleştirme ve Durum Görüntüleme#

    SSH kuralınızı (ve gerekiyorsa 80/443'ü) ekledikten sonra güvenlik duvarını etkinleştirebilirsiniz:

    sudo ufw enable
    

    Bu komut çalıştırıldığında UFW, mevcut SSH oturumunuzu kesebileceğine dair bir uyarı gösterir; SSH kuralını zaten eklediyseniz y yazıp devam edebilirsiniz. Etkinleştirdikten hemen sonra mevcut terminal oturumunuzu kapatmadan yeni bir terminalde bağlantıyı test edin:

    ssh kullanici@sunucu-ip-adresi
    

    Bağlantı başarısız olursa, hâlâ açık olan ilk oturumdan sudo ufw disable ile güvenlik duvarını kapatıp kuralları gözden geçirebilirsiniz.

    Hangi kuralların etkin olduğunu görmek için:

    sudo ufw status verbose
    

    Örnek çıktı şuna benzer:

    Status: active
    Logging: on (low)
    Default: deny (incoming), allow (outgoing), disabled (routed)
    
    To                         Action      From
    --                         ------      ----
    22/tcp                     ALLOW IN    Anywhere
    80/tcp                     ALLOW IN    Anywhere
    443/tcp                    ALLOW IN    Anywhere
    22/tcp (v6)                ALLOW IN    Anywhere (v6)
    

    Kuralları numaralı görmek isterseniz (silme işlemi için faydalıdır):

    sudo ufw status numbered
    
         To                         Action      From
         --                         ------      ----
    [ 1] 22/tcp                     ALLOW IN    Anywhere
    [ 2] 80/tcp                     ALLOW IN    Anywhere
    [ 3] 443/tcp                    ALLOW IN    Anywhere
    

    Kural Silme#

    Gereksiz veya hatalı eklenmiş bir kuralı iki yoldan biriyle kaldırabilirsiniz. En sezgisel yöntem, kuralı eklerken kullandığınız komutun başına delete eklemektir:

    sudo ufw delete allow 80/tcp
    

    Diğer yöntem, status numbered çıktısındaki numarayı kullanmaktır:

    sudo ufw status numbered
    sudo ufw delete 2
    

    Numaraya göre silme özellikle karmaşık from/to içeren kurallarda, komutu tekrar tam olarak yazmak yerine tercih edilir. Bir kuralı sildikten sonra status verbose ile listeyi tekrar kontrol etmek iyi bir alışkanlıktır.

    Loglama#

    UFW, reddedilen ve kabul edilen bağlantı denemelerini sistem günlüğüne (/var/log/ufw.log) kaydedebilir. Bu, hangi IP'lerin sunucunuzu taradığını görmek ya da bir kuralın beklendiği gibi çalışıp çalışmadığını doğrulamak için değerlidir.

    sudo ufw logging on
    

    Log ayrıntı seviyesini kontrol etmek isterseniz:

    sudo ufw logging low     # sadece temel bilgi
    sudo ufw logging medium  # önerilen orta seviye
    sudo ufw logging high    # ayrıntılı, disk kullanımı yüksek olabilir
    

    Günlükleri canlı izlemek için:

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

    Yoğun trafik alan sunucularda high seviyesi disk alanını hızla tüketebilir; çoğu senaryo için low veya medium yeterlidir. Loglama, DDoS koruma katmanınızla birlikte çalıştığında anormal trafik desenlerini erken fark etmenizi sağlar.

    Etkinleştirme, Devre Dışı Bırakma ve Sıfırlama#

    Güvenlik duvarını geçici olarak kapatmak gerekebilir — örneğin bir bağlantı sorununu ayıklarken UFW'nin neden olup olmadığını test etmek için:

    sudo ufw disable
    

    Tekrar açmak için:

    sudo ufw enable
    

    Tüm kuralları silip sıfırdan başlamak isterseniz:

    sudo ufw reset
    

    reset komutu tüm kuralları temizler ve UFW'yi devre dışı bırakır — bu yüzden sıfırladıktan sonra SSH kuralını eklemeden asla tekrar enable çalıştırmayın. Sunucunun yeniden başlatılmasında UFW'nin otomatik açılmasını istiyorsanız (ki enable komutu zaten bunu sistem servisine kaydeder), ek bir işlem yapmanıza gerek yoktur.

    Sıkça Sorulan Sorular#

    UFW etkinleştirdikten sonra SSH bağlantım koptu, ne yapmalıyım?#

    SSH kuralını eklemeden ufw enable çalıştırdıysanız kendinizi kilitlemiş olabilirsiniz. Eğer hâlâ eski oturumunuz açıksa hemen sudo ufw disable çalıştırıp SSH kuralını (sudo ufw allow OpenSSH) ekleyin, sonra tekrar etkinleştirin. Oturumunuz da kapandıysa sunucu sağlayıcınızın web konsolu (VNC/seri konsol) üzerinden erişip aynı adımları uygulamanız gerekir.

    UFW ile iptables aynı şey mi?#

    Hayır. iptables, Linux çekirdeğinin netfilter alt sistemini doğrudan yöneten düşük seviyeli araçtır; UFW ise bunun üzerine kurulmuş, daha okunabilir komutlar sunan bir ön yüzdür. UFW ile eklediğiniz her kural arka planda otomatik olarak iptables kurallarına dönüştürülür.

    UFW etkinken sunucum yine de saldırıya uğrayabilir mi?#

    Evet. UFW port bazlı erişimi kontrol eder ama açık bıraktığınız portlardaki uygulama katmanı zafiyetlerini (örneğin güncel olmayan bir WordPress eklentisi) engellemez. UFW'yi WAF ve DDoS koruma gibi ek katmanlarla birlikte düşünmek, tek bir önlemle yetinmekten çok daha güvenlidir.

    Belirli bir IP'yi tamamen engellemek istiyorum, nasıl yaparım?#

    deny kuralını from ile birleştirin: sudo ufw deny from 198.51.100.20. Bu, o IP'den gelen tüm bağlantıları reddeder. Sık tekrarlanan saldırgan IP'leri elle engellemek yerine fail2ban gibi bir araçla bunu otomatikleştirmek, SSH güvenliği rehberimizde anlatıldığı gibi daha sürdürülebilir bir çözümdür.

    UFW kurallarım sunucu yeniden başlatıldığında kayboluyor mu?#

    Hayır. ufw enable komutu güvenlik duvarını sistem başlangıcında otomatik olarak etkinleştirecek şekilde ayarlar ve kurallarınız /etc/ufw/ altında kalıcı olarak saklanır. Bir sunucu yeniden başlatmasından sonra sudo ufw status verbose ile kurallarınızın hâlâ yerinde olduğunu doğrulayabilirsiniz.

    IPv6 için ayrı kural eklemem gerekir mi?#

    Genellikle hayır. /etc/default/ufw dosyasında IPV6=yes ayarlıysa (Ubuntu'da varsayılan budur), eklediğiniz her kural hem IPv4 hem IPv6 için otomatik olarak uygulanır — status verbose çıktısında (v6) etiketli satırları bu yüzden görürsünüz. Sunucunuzda IPv6 kullanılmıyorsa bu ayarı no yapıp servisi yeniden başlatabilirsiniz.

    Özetle#

    UFW, karmaşık iptables sözdizimiyle uğraşmadan sunucunuza sağlam bir ilk savunma katmanı kazandırmanın en pratik yoludur. Doğru sıralama her zaman aynıdır: önce varsayılan politikayı belirleyin, SSH kuralını mutlaka önce ekleyin, sonra ihtiyaç duyduğunuz portları (80, 443 ve varsa özel servisleriniz) açın, ardından etkinleştirip test edin. Belirli IP'lere özel izinler ve düzenli loglama, bu temel yapının üzerine eklediğiniz ek güvenlik katmanlarıdır.

    Yeni bir sunucu kurulumunda bu adımları VDS veya sanal sunucu hizmetimizle başlangıç noktanız yapabilir, ardından SSH güvenliği ve sunucu güvenliği temelleri rehberlerimizle koruma katmanlarınızı tamamlayabilirsiniz.

    UFWFirewallGüvenlik

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.