UFW (Uncomplicated Firewall) ile Güvenlik Duvarı Yönetimi: Basit ve Etkili Koruma
Modern sunucu ve işletim sistemlerinin güvenliği, en temel önceliklerden biridir. Ağ trafiğini kontrol etmek ve istenmeyen erişimleri engellemek için bir güvenlik duvarı (firewall) kullanmak hayati öneme sahiptir. Linux sistemlerinde bu görevi üstlenen güçlü araçlardan biri de `iptables`’tır. Ancak `iptables`’ın karmaşık yapısı, özellikle yeni kullanıcılar için göz korkutucu olabilir. İşte tam bu noktada, UFW (Uncomplicated Firewall) devreye girer. UFW, `iptables` için kullanıcı dostu bir arayüz sunarak, güvenlik duvarı kurallarını yönetmeyi son derece basitleştirir.
Bu blog yazısında, UFW’nin temel kurulumundan gelişmiş kural tanımlamalarına kadar uzanan yolculuğunu detaylı bir şekilde inceleyeceğiz.
UFW Kurulumu
Çoğu Ubuntu/Debian tabanlı sistemde UFW varsayılan olarak yüklü gelir. Eğer yüklü değilse, aşağıdaki komutla kolayca kurabilirsiniz:
sudo apt update
sudo apt install ufw
UFW Durumu ve Temel Komutlar
UFW’nin mevcut durumunu kontrol etmek, yönetim sürecinin ilk adımıdır. UFW’yi etkinleştirmeden önce var olan tüm kuralları ve varsayılan politikaları görmek önemlidir.
Durumu Kontrol Etme
UFW’nin şu anda etkin olup olmadığını ve herhangi bir kuralın tanımlanıp tanımlanmadığını kontrol etmek için:
sudo ufw status verbose
Bu komut, UFW’nin etkin olup olmadığını, varsayılan politikaları ve tanımlanmış tüm kuralları ayrıntılı bir şekilde gösterir.
UFW’yi Etkinleştirme ve Devre Dışı Bırakma
UFW’yi etkinleştirmek veya devre dışı bırakmak oldukça basittir. Ancak uzak bir sunucuda çalışıyorsanız, UFW’yi etkinleştirmeden önce SSH erişiminizin açık olduğundan emin olun! Aksi takdirde sunucuya erişiminizi kaybedebilirsiniz.
UFW’yi Etkinleştirme:
sudo ufw enable
Bu komutu çalıştırdıktan sonra bir uyarı alacaksınız. Onaylamak için ‘y’ tuşuna basın.
UFW’yi Devre Dışı Bırakma:
sudo ufw disable
UFW devre dışı bırakıldığında, tanımlı tüm kurallar göz ardı edilir ve güvenlik duvarı etkin olmaz.
Kural Tanımlama: İzin Verme (Allow)
UFW ile en sık yapacağınız işlem, belirli bağlantı noktalarına veya hizmetlere erişime izin vermektir. İşte bazı yaygın örnekler:
SSH (Secure Shell) Erişimi
Sunucunuza uzaktan bağlanmak için SSH (varsayılan port 22) erişimine izin vermelisiniz:
sudo ufw allow ssh
Veya port numarasıyla:
sudo ufw allow 22/tcp
Web Sunucusu Erişimi (HTTP ve HTTPS)
Web sitenizin veya web uygulamanızın internetten erişilebilir olması için HTTP (port 80) ve HTTPS (port 443) portlarını açmanız gerekir:
sudo ufw allow http
sudo ufw allow https
Veya port numaralarıyla:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Belirli Bir Port veya Protokol İçin İzin Verme
Özel bir uygulama için belirli bir porta (örneğin, 8080) veya farklı bir protokole (UDP) izin vermek isteyebilirsiniz:
sudo ufw allow 8080/tcp # 8080 numaralı TCP portuna izin ver
sudo ufw allow 53/udp # 53 numaralı UDP portuna (DNS) izin ver
Belirli Bir IP Adresinden/Ağından Erişime İzin Verme
Yalnızca belirli bir IP adresinden veya IP aralığından belirli bir porta erişime izin verebilirsiniz. Bu, genellikle SSH gibi hassas hizmetler için en iyi uygulamadır.
sudo ufw allow from 192.168.1.100 to any port 22 # Sadece bu IP'den SSH'e izin ver
sudo ufw allow from 192.168.1.0/24 to any port 80 # Bu ağdan HTTP'ye izin ver
Kural Tanımlama: Engelleme (Deny)
Erişimi engellemek de en az izin vermek kadar önemlidir. Örneğin, belirli bir portu veya şüpheli bir IP adresini engelleyebilirsiniz.
Belirli Bir Porta Erişimi Engelleme
Telnet (port 23) gibi güvensiz hizmetlere erişimi engelleyebilirsiniz:
sudo ufw deny 23/tcp
Belirli Bir IP Adresini Engelleme
Sisteminize sürekli saldıran veya şüpheli görünen bir IP adresini tamamen engelleyebilirsiniz:
sudo ufw deny from 192.0.2.10
Kural Silme
Bir kuralı silmek için iki temel yöntem vardır: kuralın numarasını kullanarak veya kuralın tam tanımını kullanarak.
Kural Numarası ile Silme
Bu yöntem genellikle daha kolaydır. Öncelikle kuralları numaralandırılmış bir listede görmeniz gerekir:
sudo ufw status numbered
Çıktı aşağıdaki gibi olacaktır:
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
Şimdi, örneğin 2 numaralı kuralı (80/tcp) silmek için:
sudo ufw delete 2
Kural Tanımı ile Silme
Kuralın tam tanımını biliyorsanız, doğrudan bu tanımı kullanarak silebilirsiniz:
sudo ufw delete allow 80/tcp
UFW’yi Sıfırlama (Reset)
Tüm UFW kurallarını silmek ve UFW’yi varsayılan ayarlara (genellikle tüm gelen bağlantıları engelle, tüm giden bağlantılara izin ver) döndürmek için kullanışlı bir komuttur. Bu, yeni bir başlangıç yapmak istediğinizde işe yarar.
sudo ufw reset
Bu komutu çalıştırdıktan sonra tüm mevcut kuralların silineceğini ve UFW’nin devre dışı kalacağını onaylamanız istenecektir.
Varsayılan Politikalar
UFW’nin varsayılan politikaları, belirli bir kural tanımlanmadığında ne yapılacağını belirler. Genellikle, gelen tüm bağlantıların engellenmesi (deny) ve giden tüm bağlantılara izin verilmesi (allow) önerilir.
sudo ufw default deny incoming # Gelen tüm bağlantıları engelle
sudo ufw default allow outgoing # Giden tüm bağlantılara izin ver
Bu politikaları belirledikten sonra, yalnızca ihtiyacınız olan portları manuel olarak açmanız gerekecektir.
Uygulama Profilleri
UFW, bazı yaygın uygulamalar için önceden tanımlanmış kurallara sahiptir. Bu profiller, uygulamanın doğru çalışması için gerekli portları otomatik olarak açar. Hangi uygulamaların profilinin olduğunu görmek için:
sudo ufw app list
Örneğin, Nginx için bir profiliniz varsa, aşağıdaki gibi etkinleştirebilirsiniz:
sudo ufw allow 'Nginx Full'
Bu, Nginx’in hem HTTP hem de HTTPS trafiğine izin verecektir.
Günlük Kayıtları (Logging)
Güvenlik olaylarını izlemek ve güvenlik duvarı trafiğini analiz etmek için UFW günlük kaydını etkinleştirebilirsiniz:
sudo ufw logging on
Günlükler genellikle `/var/log/ufw.log` veya `/var/log/syslog` dosyalarında bulunur.
Sonuç ve En İyi Uygulamalar
UFW, Linux sistemlerinde güvenlik duvarı yönetimini basitleştiren güçlü ve kullanımı kolay bir araçtır. Doğru yapılandırıldığında, sunucularınızı istenmeyen erişimlere karşı etkili bir şekilde korur. İşte bazı en iyi uygulamalar:
- Varsayılan Politikayı Belirleyin: Gelen tüm bağlantıları engellemek ve yalnızca ihtiyacınız olan portları açmak, güvenlik duruşunuzu önemli ölçüde güçlendirir.
- Sadece Gerekli Portları Açın: Açıkta kalan her port, potansiyel bir güvenlik açığıdır. Yalnızca uygulamanızın veya hizmetinizin gerektirdiği portları açın.
- SSH Erişimini Unutmayın: Uzak bir sunucuda UFW’yi etkinleştirmeden önce SSH portunun açık olduğundan emin olun.
- Kuralları Düzenli Olarak Gözden Geçirin: Zamanla ihtiyaçlar değişebilir. `ufw status verbose` komutu ile kurallarınızı düzenli olarak kontrol edin ve gereksiz olanları silin.
- IP Kısıtlamaları Kullanın: Hassas hizmetlere (SSH gibi) yalnızca belirli IP adreslerinden erişime izin vermek, güvenlik seviyenizi artırır.
- Günlük Kaydını Etkinleştirin: Güvenlik olaylarını izlemek ve anormallikleri tespit etmek için günlük kaydını açık tutun.
UFW ile sistemlerinizin ağ güvenliğini sağlamak artık karmaşık bir görev olmak zorunda değil. Bu kılavuzdaki adımları takip ederek, sunucularınızı daha güvenli hale getirebilirsiniz.
