Blog’a Dön

UFW Kullanımı: Ubuntu Güvenlik Duvarı Rehberi

UFW nedir, nasıl kullanılır? Ubuntu'da güvenlik duvarını açma, port ve IP kuralları, kural silme, uygulama profilleri, hız sınırlama, IPv6 ve Docker.

Nodesty Ekibi5 dk okumaGüvenlik
Koyu Nodesty arka planında UFW yazısı ile allow, deny ve limit ifadeleri

UFW (Uncomplicated Firewall), Ubuntu ve Debian sunucularda güvenlik duvarını basit komutlarla yönetmenizi sağlayan bir araçtır. Linux çekirdeğinin paket filtreleme altyapısının üzerinde çalışır ve uzun iptables kuralları yerine ufw allow 443/tcp gibi okunabilir komutlar kullanmanızı sağlar. Doğru ayarlanmış bir güvenlik duvarı, sunucunuzda yalnızca gerçekten kullandığınız servislerin dışarıdan erişilebilir olmasını sağlar.

Bu rehberde UFW'yi güvenle etkinleştirmeyi, port ve IP kurallarını, kural silmeyi, uygulama profillerini, hız sınırlamayı, IPv6'yı, günlükleri ve Docker ile birlikte kullanırken dikkat edilmesi gerekenleri anlatıyoruz. Portların nasıl çalıştığını Port nedir? yazımızda bulabilirsiniz.

Kurulum ve güvenli etkinleştirme

Ubuntu'da UFW genellikle kurulu gelir. Kurulu değilse:

sudo apt install ufw

Etkinleştirmeden önce varsayılan kuralları belirleyin ve mutlaka SSH'a izin verin:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
  • default deny incoming: Açıkça izin vermediğiniz bütün gelen bağlantıları engeller.
  • default allow outgoing: Sunucunun dışarıya bağlanmasına (güncellemeler, API'ler) izin verir.
  • allow OpenSSH: SSH bağlantınızın kesilmemesini sağlar. SSH'ı farklı bir portta çalıştırıyorsanız sudo ufw allow 2222/tcp gibi o portu açın.

Bu adımı atlarsanız enable komutundan sonra SSH bağlantınız kesilir. Kendinizi dışarıda bıraktıysanız sağlayıcınızın web konsolundan bağlanıp kuralı ekleyebilirsiniz.

Durumu ve kuralları görmek için:

sudo ufw status verbose

Port kuralları

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 25565/tcp
sudo ufw allow 27015/udp
sudo ufw allow 30120
sudo ufw allow 2456:2457/udp
  • Protokol belirtirseniz (/tcp, /udp) yalnızca o protokol açılır. Belirtmezseniz (30120) port hem TCP hem UDP için açılır.
  • Port aralıkları iki nokta üst üste ile yazılır ve protokol belirtmek zorunludur (2456:2457/udp).

Bir portu açıkça engellemek için deny, sessizce düşürmek yerine bağlanana ret cevabı vermek için reject kullanılır.

IP adresine göre kurallar

Yönetim portlarını yalnızca kendi IP adresinize açmak, en etkili güvenlik alışkanlıklarından biridir:

sudo ufw allow from 198.51.100.7 to any port 3306 proto tcp
sudo ufw allow from 198.51.100.0/24 to any port 22 proto tcp
sudo ufw deny from 203.0.113.50
  • İlk kural, MariaDB portunu yalnızca bir IP adresine açar.
  • İkinci kural, SSH'ı bir IP aralığına açar.
  • Üçüncü kural, bir IP adresinden gelen bütün bağlantıları engeller.

Kural sırası önemlidir. UFW kuralları yukarıdan aşağıya değerlendirir ve ilk eşleşen kuralı uygular. Herkese açık bir porttan belirli bir adresi engellemek istiyorsanız engelleme kuralını listenin başına ekleyin:

sudo ufw insert 1 deny from 203.0.113.50

Kuralları listeleme ve silme

sudo ufw status numbered
sudo ufw delete 3

İlk komut kuralları numaralarıyla listeler; ikincisi belirtilen numaradaki kuralı siler. Kuralı yazarak da silebilirsiniz:

sudo ufw delete allow 80/tcp

Kural silindikçe numaralar değişir; birden fazla kural silecekseniz her seferinde listeyi yeniden kontrol edin. Bütün kuralları silip baştan başlamak için sudo ufw reset kullanılır; bu komut UFW'yi de kapatır.

Uygulama profilleri

Bazı paketler UFW için hazır profiller kurar. Mevcut profilleri görmek için:

sudo ufw app list

Örneğin Nginx kuruluysa Nginx Full profili 80 ve 443 portlarını birlikte açar:

sudo ufw allow 'Nginx Full'

Profiller, bir servisin hangi portları kullandığını hatırlamak zorunda kalmamanızı sağlar.

Hız sınırlama: ufw limit

limit kuralı, aynı IP adresinden kısa sürede çok sayıda bağlantı denemesi geldiğinde o adresi geçici olarak engeller. Varsayılan olarak 30 saniye içinde 6 ya da daha fazla bağlantı denemesi yapan adresler engellenir:

sudo ufw limit OpenSSH

Bu, SSH'a yönelik otomatik şifre deneme saldırılarını yavaşlatır. Daha esnek ve günlüklere dayalı bir koruma için Fail2ban kurulumu rehberimize göz atın; asıl koruma ise SSH'ta anahtarla giriştir.

IPv6

UFW'nin IPv6 için de kural uyguladığından emin olun. /etc/default/ufw dosyasında:

IPV6=yes

Bu ayar açıkken eklediğiniz her kural iki protokol için de geçerli olur; ufw status çıktısında (v6) ile işaretlenmiş kuralları görürsünüz. Ayarı değiştirdiyseniz sudo ufw reload çalıştırın. Ayrıntılar IPv6 nedir? yazımızda.

Günlükler

UFW'nin engellediği bağlantıları görmek için günlüğü açın:

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

Günlükte [UFW BLOCK] ile başlayan satırlar engellenen bağlantıları gösterir. Bir servise neden bağlanılamadığını bulurken çok işe yarar. Günlük düzeyini sudo ufw logging medium gibi değerlerle ayarlayabilirsiniz; yüksek düzeyler diski hızla doldurabilir.

Docker ile kullanım

Docker kullanıyorsanız bilmeniz gereken en önemli şey: Docker'ın yayınladığı portlar UFW kurallarını atlar. Docker, -p ya da ports: ile açtığınız portlar için iptables kurallarını kendisi ekler ve bu kurallar UFW'den önce işlenir. Bu yüzden UFW'de kapalı görünen bir port internete açık olabilir.

Yalnızca sunucunun içinden erişilmesi gereken portları yerel adrese bağlayın:

ports:
    - '127.0.0.1:3306:3306'

Ayrıntılar Docker kurulumu rehberimizde.

Sık kullanılan komutlar

KomutNe yapar?
sudo ufw status verboseDurumu ve bütün kuralları gösterir
sudo ufw allow 443/tcpBir portu açar
sudo ufw allow from IP to any port NBir portu yalnızca bir IP adresine açar
sudo ufw deny from IPBir IP adresini engeller
sudo ufw status numberedKuralları numaralarıyla listeler
sudo ufw delete NBelirtilen numaradaki kuralı siler
sudo ufw limit OpenSSHSSH'a hız sınırı uygular
sudo ufw reloadKuralları yeniden yükler
sudo ufw disableGüvenlik duvarını kapatır

Genel sunucu güvenliği için Linux sunucu güvenliği kontrol listemize de göz atın.

Nodesty sunucularında güvenlik duvarı

Nodesty AMD Ryzen 9 9950X VDS ve AMD EPYC 7763 VDS paketlerinde Ubuntu ve Debian'ı seçtiğinizde UFW ile güvenlik duvarınızı birkaç komutla kurabilirsiniz. Sanal sunucularda oyun portlarını ya da UDP trafiğini varsayılan olarak engellemiyoruz; hangi portların açık olacağına siz karar verirsiniz. L3–L7 nShield DDoS koruması ağ düzeyindeki saldırıları sunucunuza ulaşmadan süzer, SSH erişiminizi kaybederseniz panelinizdeki web konsolu üzerinden sunucunuza her zaman ulaşabilirsiniz.

Sıkça Sorulan Sorular

UFW'yi açınca SSH bağlantım kopar mı?

SSH için bir kural eklemeden UFW'yi etkinleştirirseniz evet; varsayılan kural gelen bütün bağlantıları engeller. UFW'yi açmadan önce mutlaka sudo ufw allow OpenSSH komutunu çalıştırın. Kendinizi dışarıda bıraktıysanız sağlayıcınızın web konsolundan sunucuya bağlanıp kuralı ekleyebilirsiniz.

UFW ile iptables arasındaki fark nedir?

iptables ve nftables, Linux çekirdeğinin paket filtreleme altyapısını doğrudan yöneten araçlardır ve kuralları yazmak daha karmaşıktır. UFW bu altyapının üzerinde çalışan basit bir arayüzdür; aynı kuralları çok daha kısa ve okunabilir komutlarla yazmanızı sağlar.

Docker'ın açtığı portlar neden UFW'ye takılmıyor?

Docker, yayınladığı portlar için iptables kurallarını kendisi ekler ve bu kurallar UFW'nin kurallarından önce işlenir. Bu yüzden UFW'de kapalı görünen bir port Docker üzerinden dışarıya açık olabilir. Yalnızca sunucunun içinden erişilmesi gereken portları 127.0.0.1 adresine bağlayın.

UFW kurallarım yeniden başlatmadan sonra kalır mı?

Evet. UFW kuralları kalıcıdır ve UFW etkinse sunucu her açıldığında otomatik olarak uygulanır. sudo ufw status verbose ile UFW'nin etkin olup olmadığını ve bütün kuralları görebilirsiniz.

AlmaLinux'ta UFW kullanabilir miyim?

AlmaLinux ve Rocky Linux'ta varsayılan güvenlik duvarı firewalld'dir ve onu kullanmanızı öneririz. İki güvenlik duvarı aracını aynı anda çalıştırmak kuralların çakışmasına yol açabilir.

Belirli bir ülkeden gelen bağlantıları engelleyebilir miyim?

UFW'nin kendisinde ülkeye göre engelleme özelliği yoktur. Bunun için ülkelere ait IP aralığı listeleriyle ipset ya da benzeri araçlar kullanılır. Ancak bu listeler sürekli değişir ve VPN kullanan saldırganları durdurmaz; temel korumayı güçlü kimlik doğrulama ve kapalı portlar sağlar.

Nodesty

Yazar hakkında

Nodesty Ekibi · Altyapı ve Destek

Nodesty ekibi sunucularımızı, ağımızı ve DDoS korumamızı her gün işletir ve müşteri destek taleplerini 7/24 yanıtlar. Bu rehberler o deneyimden yazılır.

İlgili yazılar

Sunucunuzu şimdi başlatın.

Nodesty'nin üstün altyapısı ile projelerinizi özgürce inşa edin ve sınır tanımadan ölçeklendirin.

                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                             ············································                                                   
                                                ··································································································..........···························                                     
                                       ················..........................................................................................................................··············                             
                                  ·············.................::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::::::::::::::::::::::::::::................···········                        
                             ············................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............·········                     
                         ············.................:::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::----------------:::::::::::::::::::::..........········                  
                    ············......................::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------:::::::::::::.........········                
                ··········.............................................::::::::::::::::::-------------==========================================-----------------------------------:::::::::::........·······               
             ········..................:.....................................::::::::::--------=======+++++++++++++++++++++++++++++++++++++=========================------------------::::::::::.......·······              
           ······.........::::::::::::::::::::................................:::::::-----=====++++xxxxxx**************************xxxxxxxxx++++++++++++++===================------------::::::::.......·······             
          ·····.......:::::::::::::::::::::::::::.............................:::::----===+++xxx****%%%%&&&&&&#############&&&&&&&%%%%%*******xxxxxxxx++++++++++++++==============----------:::::::......······             
         ····......::::::::-------------:::::::::::..........................::::---===+++xx***%%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@####&&&&&%%%%*******xxxxxxxxx+++++++++++++===========--------::::::......·····             
        ····.....:::::::--------------------:::::::::.......................::::---===++xxx**%%&&&###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&%%%%%********xxxxxxxxxxx++++++++++++========------::::::.....······            
        ····.....:::::--------------------------::::::::....................::::---===++xx***%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&&%%%%%**********xxxxxxxxxxxxx+++++++++=======------:::::.....·····            
        ····....::::::-------=============---------:::::::::................:::::---===+++xx***%%%&&&#####@@@@@@@@@@@@@@@@@@@@@@@@@#####&&&&&%%%%%%*************xxxxxxxxxxxxxx+++++++++======-----:::::....·····            
         ····....:::::-------================---------:::::::::...............:::::----===++++xxx***%%%%&&&&&&#################&&&&&&%%%%%%%*******************xxxxxxxxxxxxxxxxx++++++++======----:::::....·····            
         ·····....:::::--------=================---------::::::::::..............:::::::-----====+++++xxxxxx**************************xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx++++++++=====-----::::....·····            
          ·····.....:::::--------=================----------:::::::::::.................:::::::::-------=============++++++++++++++++++++++++++++++++++++xxxxxxxxxxxxxxxxxxxxxxx++++++++======-----::::....·····            
            ·····.....:::::::----------===========-------------::::::::::::.........................::::::::::::::::::------------------=============+++++++++++++++++++++++++++++++++=======-----::::.....·····            
              ······......:::::::---------------------------------:::::::::::::........................................:::::::::::::::-----------============+++++++++++++++++++++========------:::::.....·····             
                 ······........:::::::::---------------------------:::::::::::::::::...........................................:::::::::::::------------=============================--------::::::.....······              
                    ·········.........:::::::::::::::-------------::::::::::::::::::::::::.......................................::::::::::::::::--------------------------------------::::::::......·······                
                          ··········............::::::::::::::::::::::::::::::::::::::::::::::::::................................::::::::::::::::::::::::::-------------:::::::::::::::.........········                   
                                  ············..................:::::::::::::::::::::::::::::::::::::::::::.........................:::::::::::::::::::::::::::::::::::::................···········                        
                                             ················.............................................................................................................·················                                 
                                                           ······················................................................................···························                                                
                                                                               ·········································································