Debian 9’da UFW ile Güvenlik Duvarı Kurulumu: Adım Adım Kılavuz
Giriş ve Neden Bir Güvenlik Duvarına İhtiyaç Duyarız?
Günümüzün birbirine bağlı dijital dünyasında, sunucuların ve kişisel bilgisayarların güvenliği her zamankinden daha kritik hale gelmiştir. İnternete bağlı her sistem, kötü niyetli saldırılara, yetkisiz erişim denemelerine ve çeşitli siber tehditlere açıktır. Bu tehditlere karşı ilk savunma hattından biri de güvenlik duvarıdır (firewall). Bir güvenlik duvarı, ağ trafiğini izleyerek ve önceden belirlenmiş kurallara göre filtreleyerek, istenmeyen bağlantıların sisteminize ulaşmasını engellerken, güvenli ve meşru trafiğe izin verir.
Debian gibi Linux tabanlı işletim sistemleri, güçlü güvenlik özellikleriyle bilinir. Ancak, varsayılan kurulumlar genellikle tüm olası tehditlere karşı tam koruma sağlamaz. İşte bu noktada, bir güvenlik duvarı çözümüne ihtiyaç duyarız. Debian’da güvenlik duvarı yönetimi için birçok araç bulunsa da, “Uncomplicated Firewall” (UFW) özellikle basitliği ve kullanım kolaylığı nedeniyle tercih edilmektedir. Yeni başlayanlar için bile anlaşılır bir arayüze sahip olan UFW, karmaşık iptables komutlarını öğrenme zorunluluğunu ortadan kaldırır ve güvenlik duvarı yapılandırmasını herkes için erişilebilir kılar. Bu makalede, Debian 9 “Stretch” sürümünde UFW’yi nasıl kuracağınızı, yapılandıracağınızı ve yöneteceğinizi adım adım detaylı bir şekilde anlatacağız. Amacımız, sunucunuzu veya bilgisayarınızı internet tehditlerine karşı güvenli hale getirirken, temel ağ hizmetlerinizin sorunsuz çalışmasını sağlamaktır.
UFW Nedir?
UFW, “Uncomplicated Firewall” kelimelerinin kısaltmasıdır ve adından da anlaşılacağı gibi, Linux için tasarlanmış, kullanımı kolay bir güvenlik duvarı arayüzüdür. Temelinde netfilter çekirdek modülü ve iptables komut satırı aracı yatan UFW, bu güçlü ancak karmaşık araçların üzerine inşa edilmiş, daha kullanıcı dostu bir soyutlama katmanı sunar. Geleneksel iptables komutları, genellikle uzun, detaylı ve doğru bir şekilde yazılması zor olabilir. En küçük bir yazım hatası bile güvenlik açıklarına veya ağ bağlantısı sorunlarına yol açabilir. UFW ise bu karmaşıklığı ortadan kaldırarak, basit ve sezgisel komutlarla güvenlik duvarı kurallarını tanımlamanıza olanak tanır.
UFW, varsayılan olarak gelen tüm bağlantıları engeller (DENY) ve giden tüm bağlantılara izin verir (ALLOW). Bu “varsayılan reddetme” politikası, güvenlik açısından oldukça sağlam bir başlangıç noktasıdır, çünkü yalnızca açıkça izin verilen trafiğin sisteme ulaşmasını sağlar. Bu sayede, gereksiz veya potansiyel olarak tehlikeli portların açık kalması engellenir. UFW, hem IPv4 hem de IPv6 ağları için kurallar belirleme yeteneğine sahiptir ve bu, modern ağ ortamlarında tam kapsamlı bir koruma sağlar. Ayrıca, belirli uygulamalar için önceden tanımlanmış profil desteği, sık kullanılan servisler (HTTP, HTTPS, SSH vb.) için kural eklemeyi daha da kolaylaştırır. Debian 9 kullanıcıları için UFW, sistem güvenliğini artırmak amacıyla vazgeçilmez bir araçtır.
Ön Koşullar ve Sistem Güncelleme
UFW kurulumuna başlamadan önce, bazı temel ön koşulların yerine getirildiğinden emin olmamız gerekir. Bu adımlar, sorunsuz bir kurulum süreci ve güncel bir güvenlik ortamı için kritik öneme sahiptir.
Debian 9 Sistemi
Bu kılavuz, özellikle Debian 9 “Stretch” sürümü için yazılmıştır. Farklı Debian sürümlerinde veya diğer Linux dağıtımlarında UFW’nin kurulum ve yapılandırma adımları benzer olsa da, bazı küçük farklılıklar gösterebilir. Sisteminizin Debian 9 olduğundan emin olun.
Sudo Yetkilerine Sahip Bir Kullanıcı
UFW kurulumu ve yapılandırması, sistem çapında değişiklikler gerektirir. Bu nedenle, root kullanıcı yetkilerine veya sudo grubuna dahil edilmiş bir kullanıcı hesabına ihtiyacınız olacaktır. sudo kullanmak, root olarak doğrudan çalışmaktan daha güvenli bir yöntemdir. Eğer sudo yetkilerine sahip bir kullanıcınız yoksa, root olarak giriş yapıp bir kullanıcı oluşturabilir ve sudo grubuna ekleyebilirsiniz:
adduser
usermod -aG sudo
Daha sonra bu yeni kullanıcı ile oturum açarak devam edebilirsiniz.
Sistemi Güncelleme
Herhangi bir yazılım kurulumundan önce, sisteminizin paket listelerini güncellemek ve mevcut paketleri yükseltmek iyi bir uygulamadır. Bu, en son güvenlik yamalarına ve yazılım düzeltmelerine sahip olmanızı sağlar ve bağımlılık sorunlarını önleyebilir. Terminalinizi açın ve aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt upgrade -y
apt update komutu, yerel paket indeksinizi güncel depolardaki bilgilerle eşleştirir. apt upgrade komutu ise yüklü paketlerinizi en yeni sürümlerine yükseltir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı vermenizi sağlar, bu da yükseltme işlemini etkileşimli olmayan bir şekilde tamamlar. Güncelleme işlemi tamamlandıktan sonra, gerekirse sistemi yeniden başlatmanız önerilir.
UFW Kurulumu
Ön koşulları sağladıktan ve sisteminizi güncelledikten sonra, UFW’yi Debian 9 sisteminize kurmaya hazırız. Kurulum işlemi oldukça basittir ve apt paket yöneticisi aracılığıyla gerçekleştirilir.
Terminalinizi açın ve aşağıdaki komutu çalıştırın:
sudo apt install ufw
Bu komut, UFW paketini ve gerekli tüm bağımlılıklarını sisteminize indirecek ve kuracaktır. Kurulum tamamlandığında, UFW’nin başarıyla yüklendiğini doğrulamak için durumunu kontrol edebiliriz:
sudo ufw status
Kurulumdan hemen sonra UFW henüz etkinleştirilmediği için, çıktıda genellikle “Status: inactive” (Durum: etkin değil) veya benzeri bir mesaj görmelisiniz. Bu beklenen bir durumdur ve UFW’nin başarıyla kurulduğunu gösterir. Henüz etkinleştirmememizin nedeni, önce temel kuralları belirleyerek kendimizi sistemden dışarı kilitlememizi önlemektir. Özellikle SSH bağlantısı üzerinden bir sunucuda çalışıyorsanız, UFW’yi etkinleştirmeden önce SSH erişimine izin veren bir kural eklemek hayati önem taşır. Bu adımları bir sonraki bölümde detaylandıracağız.
UFW’nin Temel Kullanımı ve Yapılandırma İlkeleri
UFW’yi kurduktan sonra, sıra geldi temel yapılandırma ilkelerini anlamaya ve varsayılan politikaları belirlemeye. UFW’nin güvenlik yaklaşımının temelini oluşturan bu politikalar, sisteminizin varsayılan olarak ne kadar açık veya kapalı olacağını belirler.
Varsayılan Politikalar
UFW, iki ana varsayılan politikaya sahiptir: gelen bağlantılar (incoming) ve giden bağlantılar (outgoing). Güvenlik açısından en iyi uygulama, gelen tüm bağlantıları reddetmek ve yalnızca belirli, güvenli bağlantılara izin vermektir. Giden bağlantılar için ise genellikle tümüne izin verilir, ancak daha sıkı bir güvenlik politikası istenirse bu da kısıtlanabilir.
UFW’nin varsayılan politikalarını aşağıdaki komutlarla ayarlayabilirsiniz:
sudo ufw default deny incoming # Gelen tüm bağlantıları reddet
sudo ufw default allow outgoing # Giden tüm bağlantılara izin ver
Bu komutlar, güvenlik duvarınızın temel davranışını tanımlar:
* deny incoming: Bu, sisteminize dışarıdan yapılan tüm bağlantı girişimlerini varsayılan olarak engeller. Yalnızca açıkça izin verdiğiniz servisler veya portlar sisteme erişebilir. Bu, “beyaz liste” (whitelist) yaklaşımının temelini oluşturur ve güvenlik için en sağlam yaklaşımdır.
* allow outgoing: Bu, sisteminizden dışarıya yapılan tüm bağlantılara varsayılan olarak izin verir. Çoğu sunucu veya masaüstü ortamı için bu kabul edilebilir bir politikadır, çünkü sistemin yazılım güncellemelerini çekmesi, web sitelerine erişmesi veya diğer harici hizmetlerle iletişim kurması gerekir. Ancak, çok yüksek güvenlik gerektiren ortamlarda, giden bağlantıları da kısıtlamak isteyebilirsiniz.
Bu varsayılan politikaları uyguladıktan sonra, UFW’yi etkinleştirmeden önce kendinizi sunucudan dışarı kilitlememek için mutlaka gerekli olan servislere (özellikle SSH) izin vermeniz gerekmektedir.
Önemli Not: SSH Bağlantısının Kesilmemesi
Eğer sunucunuza SSH üzerinden bağlanıyorsanız, UFW’yi etkinleştirmeden önce SSH bağlantısına izin veren bir kural eklemeniz hayatidir. Aksi takdirde, UFW’yi etkinleştirdiğiniz anda gelen tüm bağlantılar reddedileceği için SSH oturumunuz anında kesilecek ve sunucunuza bir daha uzaktan erişemeyebilirsiniz. Bu durumda, sunucuya fiziksel erişim sağlamanız veya sanal konsol üzerinden müdahale etmeniz gerekebilir.
SSH erişimine izin vermek için aşağıdaki komutu kullanın:
sudo ufw allow ssh
Bu komut, varsayılan SSH portu olan 22/TCP’ye gelen bağlantılara izin verir. Eğer SSH servisinizi farklı bir portta çalıştırıyorsanız (ki bu iyi bir güvenlik uygulamasıdır), o port numarasını belirtmeniz gerekir. Örneğin, SSH’iniz 2222 portunda çalışıyorsa:
sudo ufw allow 2222/tcp
Bu kuralı ekledikten sonra, UFW’yi güvenle etkinleştirebilirsiniz.
Gelen Bağlantılar İçin Kurallar Belirleme
Varsayılan politikaları ve SSH kuralını ayarladıktan sonra, sisteminize erişmesi gereken diğer hizmetler için kurallar eklemeye başlayabiliriz. UFW, port numaralarına, protokol türlerine, belirli IP adreslerine veya uygulama profillerine göre kurallar belirlemenizi sağlar.
SSH (Secure Shell)
Daha önce de belirttiğimiz gibi, SSH erişimi genellikle bir sunucu için en önemli kuraldır. Eğer varsayılan 22 numaralı portu kullanıyorsanız:
sudo ufw allow ssh
Veya port numarasını açıkça belirterek:
sudo ufw allow 22/tcp
Belirli bir IP adresinden veya IP aralığından SSH erişimine izin vermek isterseniz, bu daha güvenli bir yaklaşımdır:
sudo ufw allow from 192.168.1.100 to any port 22 # Sadece 192.168.1.100 IP'sinden SSH'e izin ver
sudo ufw allow from 192.168.1.0/24 to any port 22 # 192.168.1.x ağından SSH'e izin ver
HTTP ve HTTPS (Web Sunucuları)
Eğer sunucunuz bir web sunucusu (Apache, Nginx vb.) çalıştırıyorsa, web trafiğine (HTTP ve HTTPS) izin vermeniz gerekir.
* HTTP (Port 80):
sudo ufw allow http
# Veya
sudo ufw allow 80/tcp
* HTTPS (Port 443):
sudo ufw allow https
# Veya
sudo ufw allow 443/tcp
Her iki protokole de izin vermek için:
sudo ufw allow 'Apache Full' # Eğer Apache profili varsa
Veya
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Diğer Portlar ve Protokoller
Sisteminizde çalışan diğer hizmetler için de kurallar eklemeniz gerekebilir.
* MySQL/PostgreSQL Veritabanı (Varsayılan Port 3306/5432):
Eğer veritabanı sunucunuz dışarıdan erişilebilir olmalıysa (genellikle önerilmez, ancak bazı durumlarda gereklidir):
sudo ufw allow 3306/tcp # MySQL
sudo ufw allow 5432/tcp # PostgreSQL
Daha güvenli bir yaklaşım, yalnızca belirli bir IP’den erişime izin vermektir:
sudo ufw allow from 192.168.1.100 to any port 3306
* FTP (Varsayılan Port 21):
sudo ufw allow 21/tcp
* DNS (Varsayılan Port 53, Hem TCP hem UDP):
Eğer sunucunuz bir DNS sunucusu olarak çalışıyorsa:
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
* Port Aralıkları:
Belirli bir port aralığına izin vermek için:
sudo ufw allow 6000:6007/tcp # TCP için 6000'den 6007'ye kadar olan portlara izin ver
sudo ufw allow 6000:6007/udp # UDP için 6000'den 6007'ye kadar olan portlara izin ver
Belirli IP Adreslerinden Erişim Kısıtlama
Yukarıdaki örneklerde de görüldüğü gibi, belirli bir hizmete yalnızca belirli bir IP adresinden veya IP bloğundan erişime izin vermek, genel güvenliği önemli ölçüde artırır.
* Tek bir IP adresinden izin verme:
sudo ufw allow from 203.0.113.4 to any port 80
* Bir IP bloğundan izin verme (CIDR notasyonu ile):
sudo ufw allow from 203.0.113.0/24 to any port 443
* Belirli bir IP’den reddetme:
sudo ufw deny from 198.51.100.1 to any port 22
Bu kurallar, sisteminize kimlerin ve nasıl erişebileceği üzerinde tam kontrol sağlar.
Giden Bağlantılar İçin Kurallar Belirleme (İsteğe Bağlı)
Varsayılan UFW politikası sudo ufw default allow outgoing şeklindedir, yani sisteminizden dışarıya yapılan tüm bağlantılara varsayılan olarak izin verilir. Çoğu kullanım senaryosunda bu yeterlidir ve sisteminizin güncellemeleri çekmesi, e-posta göndermesi veya diğer harici hizmetlerle iletişim kurması için gereklidir.
Ancak, belirli güvenlik gereksinimleri olan veya sunucunun sadece belirli dış kaynaklarla iletişim kurmasına izin verilmesi gereken durumlarda, giden bağlantıları da kısıtlayabilirsiniz. Bu, “sistemim dışarıya sadece şunlarla konuşabilir” politikasını uygulamak anlamına gelir.
Öncelikle, giden bağlantılar için varsayılan politikayı reddet olarak ayarlamanız gerekir:
sudo ufw default deny outgoing
Bu komutu çalıştırdıktan sonra, sisteminiz dışarıya hiçbir bağlantı kuramayacaktır. Bu nedenle, izin vermeniz gereken tüm giden bağlantılar için açıkça kurallar eklemeniz gerekecektir.
Örnek giden bağlantı kuralları:
* DNS sorgularına izin ver (Giden): Sisteminizin alan adlarını çözümleyebilmesi için DNS sunucularına (genellikle 53/UDP portu) giden bağlantılara izin vermeniz gerekir.
sudo ufw allow out to any port 53
* HTTP/HTTPS (Giden): Sisteminizin web sitelerine erişebilmesi veya güncellemeleri indirebilmesi için giden HTTP (80) ve HTTPS (443) bağlantılarına izin verin.
sudo ufw allow out to any port 80
sudo ufw allow out to any port 443
* E-posta gönderme (SMTP – Port 25, 587): Eğer sunucunuz e-posta gönderecekse (örneğin, sistem bildirimleri için):
sudo ufw allow out to any port 25
sudo ufw allow out to any port 587
* Belirli bir hedefe giden bağlantıya izin verme:
Sadece belirli bir IP adresine veya ağa giden bağlantıya izin vermek için:
sudo ufw allow out to 192.168.1.100 port 80
Giden bağlantıları kısıtlamak, daha karmaşık bir güvenlik duvarı yönetimi gerektirir ve sisteminizin tüm bağımlılıklarını ve iletişim ihtiyaçlarını iyi anlamanızı gerektirir. Yanlış yapılandırma, sistemin düzgün çalışmasını engelleyebilir. Çoğu kullanıcı için sudo ufw default allow outgoing politikası yeterlidir.
UFW’yi Etkinleştirme ve Devre Dışı Bırakma
Kurallarınızı belirledikten sonra, UFW’yi etkinleştirme zamanı gelmiştir. UFW’yi etkinleştirmek, tanımladığınız tüm güvenlik duvarı kurallarının yürürlüğe girmesini sağlar.
UFW’yi Etkinleştirme
UFW’yi etkinleştirmek için aşağıdaki komutu kullanın:
sudo ufw enable
Bu komutu çalıştırdığınızda, UFW size bir uyarı mesajı gösterecektir: “Command may disrupt existing ssh connections.” (Komut, mevcut SSH bağlantılarını kesebilir.) Bu, daha önce bahsettiğimiz SSH kuralının önemini bir kez daha vurgular. Eğer SSH kuralını eklemediyseniz ve uzaktan bağlanıyorsanız, bu komut bağlantınızı kesecektir. Eğer SSH kuralını eklediyseniz, bu uyarıya rağmen güvenle “y” yazıp Enter tuşuna basarak devam edebilirsiniz.
UFW etkinleştirildikten sonra, sistem yeniden başlatıldığında otomatik olarak çalışmaya başlayacaktır.
UFW’yi Devre Dışı Bırakma
Herhangi bir nedenle UFW’yi tamamen devre dışı bırakmanız gerekirse (örneğin, sorun giderme sırasında), aşağıdaki komutu kullanabilirsiniz:
sudo ufw disable
Bu komut, güvenlik duvarını durdurur ve tüm kuralların uygulanmasını engeller. Ancak, UFW devre dışı bırakıldığında sisteminiz tamamen savunmasız kalacaktır.
UFW’yi Sıfırlama
Eğer kurallarınızı baştan sona yeniden yapılandırmak isterseniz veya yanlışlıkla bir sürü kural eklediyseniz ve temiz bir başlangıç yapmak istiyorsanız, UFW’yi sıfırlayabilirsiniz.
sudo ufw reset
Bu komut, UFW’yi devre dışı bırakır, tüm kuralları siler ve varsayılan politikaları (genellikle deny incoming, allow outgoing) geri yükler. Sıfırlama işleminden sonra UFW tekrar etkinleştirilmelidir (sudo ufw enable) ve gerekli tüm kurallar yeniden eklenmelidir. Bu komut kalıcıdır ve geri alınamaz, bu yüzden dikkatli kullanın.
UFW Durumunu Kontrol Etme
UFW kurallarınızı belirledikten ve etkinleştirdikten sonra, güvenlik duvarınızın mevcut durumunu ve uygulanan kuralları düzenli olarak kontrol etmek önemlidir. Bu, kuralların doğru bir şekilde uygulandığından emin olmanızı ve olası yapılandırma hatalarını tespit etmenizi sağlar.
Basit Durum Kontrolü
UFW’nin genel durumunu (etkin mi, devre dışı mı) ve temel kurallarını görmek için aşağıdaki komutu kullanın:
sudo ufw status
Bu komut, UFW’nin etkin olup olmadığını ve eklediğiniz kuralları özet bir şekilde listeler. Örneğin:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
Bu çıktı, UFW’nin etkin olduğunu ve SSH, HTTP ve HTTPS portlarına gelen bağlantılara izin verildiğini gösterir.
Detaylı Durum Kontrolü
Daha detaylı bilgi almak isterseniz, verbose bayrağını kullanabilirsiniz:
sudo ufw status verbose
Bu komut, varsayılan politikalar (gelen, giden, yönlendirme), günlükleme durumu ve her kural için daha fazla ayrıntı (örneğin, arayüz bilgisi) dahil olmak üzere daha kapsamlı bir çıktı sağlar.
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
Numaralandırılmış Durum Kontrolü
Kuralları silmek için özellikle kullanışlı olan, kuralları numaralandırılmış bir liste olarak gösteren numbered bayrağıdır:
sudo ufw status numbered
Bu çıktı, her kuralın başında bir sayı ile birlikte gelir:
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
Bu numaralar, belirli bir kuralı silmek istediğinizde çok işe yarar.
Bu status komutları, güvenlik duvarınızın mevcut durumunu anlamanıza ve gerektiğinde ayarlamalar yapmanıza yardımcı olur. Düzenli olarak kontrol etmek, sistem güvenliğinizin doğru şekilde yapılandırıldığından emin olmanın önemli bir parçasıdır.
Kuralları Silme
Zaman zaman, artık ihtiyaç duymadığınız veya yanlışlıkla eklediğiniz güvenlik duvarı kurallarını silmeniz gerekebilir. UFW, kuralları silmek için iki ana yöntem sunar: kuralın numarasını kullanarak silme veya kuralın kendisini belirterek silme.
Kural Numarasına Göre Silme
Bu yöntem, özellikle birden fazla benzer kuralınız olduğunda veya hangi kuralı sileceğinizden emin olduğunuzda kullanışlıdır. Öncelikle, silmek istediğiniz kuralın numarasını öğrenmek için numaralandırılmış durumu kontrol etmelisiniz:
sudo ufw status numbered
Çıktıdan silmek istediğiniz kuralın numarasını belirledikten sonra, delete komutunu bu numara ile kullanabilirsiniz. Örneğin, 3 numaralı kuralı silmek için:
sudo ufw delete 3
UFW, kuralın silinip silinmeyeceğini onaylamanızı isteyecektir. “y” yazıp Enter tuşuna basarak işlemi onaylayın.
Kuralın Kendisini Kullanarak Silme
Diğer bir yöntem ise, eklediğiniz kuralı tam olarak belirterek silmektir. Bu, kuralın numarasını hatırlamanıza gerek kalmadan doğrudan kuralı hedeflemenizi sağlar. Örneğin, HTTP portuna (80/tcp) gelen bağlantılara izin veren kuralı silmek için:
sudo ufw delete allow 80/tcp
Veya belirli bir IP’den SSH erişimine izin veren kuralı silmek için:
sudo ufw delete allow from 192.168.1.100 to any port 22
Bu yöntemde de UFW, işlemi onaylamanızı isteyecektir.
Hangi yöntemi kullanırsanız kullanın, bir kuralı sildikten sonra sudo ufw status komutuyla güvenlik duvarınızın durumunu tekrar kontrol ederek kuralın başarıyla kaldırıldığından emin olun. Kuralları dikkatli bir şekilde silmek, istenmeyen güvenlik açıklarını veya bağlantı sorunlarını önlemek için önemlidir.
Gelişmiş UFW Özellikleri
UFW, basit kullanımının yanı sıra, daha karmaşık güvenlik ihtiyaçlarını karşılamak için bazı gelişmiş özellikler de sunar. Bu özellikler, güvenlik duvarınızı daha sağlam ve esnek hale getirmenize yardımcı olabilir.
Rate Limiting (Oran Sınırlama)
Oran sınırlama, belirli bir porta yapılan bağlantı denemelerinin sayısını sınırlayarak brute-force saldırılarına karşı koruma sağlamak için kullanılır. Özellikle SSH gibi hassas hizmetler için bu özellik oldukça değerlidir.
limit kuralı, belirli bir süre içinde (varsayılan olarak 30 saniye) 6’dan fazla bağlantı denemesi yapan bir IP adresini otomatik olarak engeller.
SSH portu için oran sınırlama uygulamak:
sudo ufw limit ssh
Veya port numarasıyla
sudo ufw limit 22/tcp
Bu kural, 22 numaralı porta yapılan bağlantı denemelerini izler ve bir IP adresinden gelen aşırı denemeleri geçici olarak engeller. Bu, SSH servisinize yönelik parola deneme saldırılarını büyük ölçüde azaltabilir.
Uygulama Profilleri
UFW, bazı yaygın uygulamalar için önceden tanımlanmış profillerle birlikte gelir. Bu profiller, uygulamanın düzgün çalışması için gerekli olan portları ve protokolleri otomatik olarak tanımlar. Bu özellik, kural ekleme sürecini daha da basitleştirir.
Mevcut uygulama profillerini listelemek için:
sudo ufw app list
Bu komut, sisteminizde kurulu olan ve UFW’nin tanıdığı uygulamaları (örneğin ‘Apache’, ‘OpenSSH’, ‘Nginx HTTP’ vb.) listeleyecektir.
Bir uygulama profilini kullanarak kural eklemek:
sudo ufw allow 'Apache Full'
Bu komut, ‘Apache Full’ profili tarafından tanımlanan tüm portlara (genellikle 80/tcp ve 443/tcp) izin verir. Bir profilin detaylarını görmek için:
sudo ufw app info 'OpenSSH'
Bu, ‘OpenSSH’ profilinin hangi portları ve protokolleri içerdiğini gösterir. Uygulama profilleri, özellikle sık kullanılan hizmetler için güvenlik duvarı yapılandırmasını hızlandırır ve basitleştirir.
IPv6 Desteği
Modern ağ ortamlarında IPv6 kullanımı giderek yaygınlaşmaktadır. UFW, hem IPv4 hem de IPv6 için güvenlik duvarı kuralları belirleme yeteneğine sahiptir. Varsayılan olarak, UFW kuralları hem IPv4 hem de IPv6 için geçerlidir.
Eğer sisteminizde IPv6’nın devre dışı bırakıldığından veya UFW’nin sadece IPv4 kurallarını uygulamasını istediğinizden emin olmak isterseniz, /etc/default/ufw dosyasını düzenleyebilirsiniz.
sudo nano /etc/default/ufw
Bu dosya içinde IPV6 satırını bulun:
IPV6=yes
Eğer IPv6 desteğini kapatmak isterseniz, bu değeri no olarak değiştirebilirsiniz:
IPV6=no
Değişikliği kaydettikten ve çıktıktan sonra, UFW’yi yeniden başlatmanız gerekir:
sudo systemctl restart ufw
Ancak, genel olarak IPv6’nın etkin bırakılması ve UFW’nin her iki protokol için de koruma sağlaması önerilir.
Bu gelişmiş özellikler, UFW’nin basit bir arayüz olmanın ötesine geçerek, çeşitli güvenlik senaryoları için güçlü ve esnek bir araç olduğunu göstermektedir.
UFW Günlükleme (Logging)
Güvenlik duvarınızın ne yaptığını anlamak ve potansiyel güvenlik olaylarını izlemek için günlükleme (logging) özelliği çok önemlidir. UFW, güvenlik duvarı etkinliklerini sistem günlüklerine kaydetme yeteneğine sahiptir. Bu günlükler, engellenen bağlantı girişimlerini, izin verilen bağlantıları ve diğer güvenlik duvarı olaylarını gösterir.
Günlüklemeyi Etkinleştirme
UFW’nin günlükleme seviyesini ayarlayabilirsiniz. Dört farklı seviye bulunur: off, low, medium, high.
* Günlüklemeyi etkinleştirme (düşük seviye): Bu, çoğu kullanıcı için yeterli olan varsayılan günlükleme seviyesidir.
sudo ufw logging on
Veya açıkça düşük seviyeyi belirtmek için:
sudo ufw logging low
* Orta seviye günlükleme: Bu, daha fazla ayrıntı sağlar, ancak disk alanı ve performans üzerinde biraz daha fazla etki yaratabilir.
sudo ufw logging medium
* Yüksek seviye günlükleme: En ayrıntılı günlüklemeyi sağlar, ancak büyük günlük dosyalarına ve potansiyel performans sorunlarına yol açabilir. Genellikle sadece sorun giderme veya derinlemesine analiz için kullanılır.
sudo ufw logging high
* Günlüklemeyi devre dışı bırakma:
sudo ufw logging off
Günlükleme seviyesini değiştirdikten sonra, UFW’yi yeniden başlatmanıza gerek yoktur, değişiklikler anında uygulanır.
UFW Günlük Dosyalarını Kontrol Etme
UFW günlükleri, genellikle /var/log/ufw.log dosyasında bulunur. Ayrıca, sistemin genel günlük dosyaları olan /var/log/syslog veya /var/log/messages içinde de UFW ile ilgili girdileri bulabilirsiniz.
Günlük dosyalarını görüntülemek için tail veya less gibi komutları kullanabilirsiniz:
sudo tail -f /var/log/ufw.log # Günlük dosyasını gerçek zamanlı olarak izle
sudo less /var/log/ufw.log # Günlük dosyasını sayfa sayfa görüntüle
Günlük girdileri genellikle aşağıdaki gibi görünür:
[UFW BLOCK] IN=eth0 OUT= MAC=... SRC=192.168.1.100 DST=192.168.1.1 PROTO=TCP SPT=54321 DPT=22
Bu örnek, 192.168.1.100 IP adresinden gelen ve 22 numaralı SSH portuna yöneltilen bir TCP bağlantısının UFW tarafından engellendiğini gösterir. Bu bilgiler, sisteminize yönelik saldırı girişimlerini, yetkisiz erişim denemelerini veya yanlış yapılandırılmış ağ trafiğini tespit etmenize yardımcı olabilir.
Düzenli olarak günlükleri kontrol etmek, sisteminizin güvenlik durumunu proaktif bir şekilde izlemenin ve potansiyel tehditlere karşı erken önlem almanın önemli bir parçasıdır.
UFW Sorun Giderme ve Yaygın Hatalar
UFW, basit bir araç olmasına rağmen, yanlış yapılandırma veya beklenmedik durumlar nedeniyle sorunlar yaşanabilir. İşte karşılaşabileceğiniz bazı yaygın sorunlar ve bunların nasıl giderileceği:
SSH Bağlantısının Kesilmesi
Bu, UFW kullanıcılarının en sık karşılaştığı sorundur. Eğer uzaktan bir sunucuya SSH ile bağlıyken, SSH portuna izin veren bir kural eklemeden UFW’yi etkinleştirirseniz, bağlantınız anında kesilir ve sunucuya tekrar uzaktan erişemezsiniz.
Çözüm: Bu durumu önlemek için, UFW’yi etkinleştirmeden önce* her zaman sudo ufw allow ssh veya sudo ufw allow komutunu çalıştırın. Eğer bu hatayı yaptıysanız, sunucuya fiziksel erişim sağlamanız veya hosting sağlayıcınızın sağladığı bir sanal konsol (VNC, KVM vb.) aracılığıyla bağlanarak SSH kuralını eklemeniz ve UFW’yi yeniden başlatmanız gerekir.
Belirli Bir Hizmete Erişim Sorunları
Bir web sitesi açılmıyor, bir veritabanına bağlanılamıyor veya başka bir hizmet çalışmıyorsa, bunun nedeni büyük olasılıkla UFW’nin ilgili porta gelen bağlantıları engellemesidir.
* Çözüm:
1. sudo ufw status verbose komutuyla UFW’nin durumunu ve kurallarını kontrol edin.
2. İlgili hizmetin hangi portu kullandığını (örneğin, HTTP için 80, MySQL için 3306) ve hangi protokolü (TCP/UDP) kullandığını doğrulayın.
3. Bu port ve protokol için UFW’de bir ALLOW kuralının olup olmadığını kontrol edin. Eğer yoksa, sudo ufw allow komutuyla kuralı ekleyin.
4. Eğer belirli bir IP’den erişim kısıtlaması uyguladıysanız (allow from ...), erişmeye çalıştığınız IP adresinin bu kurala uyduğundan emin olun.
Yanlışlıkla Tüm Gelen Bağlantıları Engelleme
Eğer sudo ufw default deny incoming komutunu çalıştırdıktan sonra hiçbir allow kuralı eklemeden UFW’yi etkinleştirirseniz, sisteminize hiçbir şekilde erişilemez.
* Çözüm: Bu durumda da yukarıdaki SSH bağlantısının kesilmesi senaryosundaki gibi fiziksel veya sanal konsol erişimi gereklidir. Erişim sağladıktan sonra, sudo ufw reset komutuyla UFW’yi sıfırlayabilir ve kuralları baştan doğru bir şekilde ekleyebilirsiniz.
UFW Kuralları Uygulanmıyor Gibi Görünüyor
Bazen UFW’nin etkin olmasına rağmen kuralların çalışmadığını düşünebilirsiniz.
* Çözüm:
1. sudo ufw status verbose komutuyla UFW’nin gerçekten active (etkin) durumda olduğunu kontrol edin.
2. Eğer UFW etkinse, kurallarınızı ve varsayılan politikalarınızı tekrar gözden geçirin. Belki de bir kural, beklediğinizden farklı bir şekilde işliyor veya başka bir kural tarafından geçersiz kılınıyor olabilir. UFW kuralları yukarıdan aşağıya doğru işlenir, bu nedenle kuralların sırası önemlidir.
3. Sisteminizde başka bir güvenlik duvarı çözümü (örneğin, doğrudan iptables kuralları) çalışıyor olabilir ve bu, UFW kurallarını etkiliyor olabilir. Bu tür çakışmaları kontrol edin.
4. UFW’yi devre dışı bırakıp tekrar etkinleştirmeyi deneyin (sudo ufw disable ardından sudo ufw enable).
UFW Günlükleri Çok Fazla Yer Kaplıyor
high seviyede günlükleme etkinse, UFW günlük dosyaları hızla büyüyebilir ve disk alanınızı doldurabilir.
* Çözüm: Günlükleme seviyesini düşürün (sudo ufw logging low veya sudo ufw logging medium) veya günlüklemeyi tamamen devre dışı bırakın (sudo ufw logging off). Ayrıca, logrotate servisini kullanarak günlük dosyalarını otomatik olarak döndürmeyi ve sıkıştırmayı veya silmeyi yapılandırabilirsiniz.
Sorun giderme sürecinde, sabırlı olmak ve her adımı dikkatlice kontrol etmek önemlidir. UFW’nin status komutu ve sistem günlükleri, sorunların kök nedenini bulmak için en iyi arkadaşlarınızdır.
Sonuç
Debian 9 sisteminizde UFW (Uncomplicated Firewall) kurmak ve yapılandırmak, sunucunuzun veya kişisel bilgisayarınızın güvenliğini artırmak için atabileceğiniz en önemli adımlardan biridir. Bu kılavuz boyunca, UFW’nin ne olduğunu, neden bir güvenlik duvarına ihtiyaç duyduğumuzu, kurulum adımlarını, temel ve gelişmiş kural yapılandırmalarını, günlüklemeyi ve yaygın sorun giderme yöntemlerini detaylı bir şekilde ele aldık.
UFW, adının hakkını vererek, iptables gibi karmaşık araçların sunduğu gücü, herkesin kolayca anlayabileceği ve uygulayabileceği basit bir arayüzle sunar. Varsayılan olarak gelen tüm bağlantıları reddetme politikasıyla, sisteminizi internetin potansiyel tehditlerine karşı sağlam bir şekilde korur. SSH, HTTP, HTTPS gibi temel hizmetlere izin vermeyi öğrenerek, sunucunuzun işlevselliğini korurken güvenliğini artırabilirsiniz. Oran sınırlama ve uygulama profilleri gibi gelişmiş özellikler ise, daha spesifik güvenlik ihtiyaçlarınıza yanıt vermenizi sağlar.
Unutulmamalıdır ki, bir güvenlik duvarı kurmak, kapsamlı bir güvenlik stratejisinin yalnızca bir parçasıdır. Sisteminizin tam güvenliğini sağlamak için düzenli yazılım güncellemeleri, güçlü parola politikaları, yetkisiz erişim denemelerini izleme ve diğer güvenlik uygulamalarını da ihmal etmemelisiniz. UFW, bu stratejinin temel bir bileşeni olarak, ağ katmanında ilk savunma hattınızı oluşturur.
Bu kılavuzu takip ederek, Debian 9 sisteminizde UFW’yi başarıyla yapılandırmış ve dijital varlıklarınızı daha güvenli hale getirmiş olmalısınız. Güvenliğiniz için düzenli olarak UFW kurallarınızı gözden geçirmeyi ve sistem günlüklerinizi kontrol etmeyi alışkanlık haline getirin. Unutmayın, güvenlik dinamik bir süreçtir ve sürekli dikkat gerektirir.