UFW firewall kurulumu ve VPS yapılandırma
VPS sunucularda UFW kullanımı ile güvenlik artırılır. SSH bağlantısını kesmeden varsayılan engelleme politikası ve port izinleri nasıl ayarlanır öğrenin.
UFW nedir ve neden gereklidir
UFW, Uncomplicated Firewall ifadesinin kısaltmasıdır ve ismi gerçeği yansıtmaktadır. Linux çekirdeğinde halihazırda bulunan firewall için kullanıcı dostu bir arayüz sağlar; bu sayede ham kurallar yazmak yerine ufw allow 22/tcp gibi kısa komutlar kullanılır. Yeni kurulmuş bir VPS üzerinde, dinleme modundaki her servis varsayılan olarak internetten erişilebilir durumdadır. Bir firewall bu durumu tersine çevirir: her şeye izin verilmeyen kuralı uygulanır, ardından sadece kullanılan belirli portlara izin verilir. Bu değişiklik, yaklaşık dört komutla maruziyetin büyük kısmını ortadan kaldırır.
Yapılandırmaya başlamadan önce hangi servislerin dinlemede olduğunu bilin, çünkü firewall bu servislerin erişilebilirliğine karar verir. ss -tlnp kullanarak dinleme yapan servisleri okumak doğru ilk adımdır.
Sisteme erişiminizi kaybetmenizi engelleyen tek kural
Firewall yapılandırmalarından çekinilmesine neden olan hata şudur: UFW'yi varsayılan olarak engelleme (default-deny) politikasıyla etkinleştirirsiniz ancak SSH erişimine izin vermezsiniz. Firewall devreye girdiği anda mevcut bağlantınız kesilir ve sisteme tekrar giriş yapamazsınız. Bu durumdan kaçınmak için UFW'yi etkinleştirmeden önce her zaman SSH erişimine izin verilmelidir. Güvenli yöntem, aşağıdaki adımların sırasıyla uygulanmasıdır.
Eğer bu durum gerçekleşirse sistem kilitlenmiş sayılmaz: Sağlayıcınızın VNC veya seri bağlantı üzerinden sunduğu web konsolu SSH üzerinden çalışmaz. Bu yöntemle giriş yapabilir ve ufw disable komutunu çalıştırabilir veya eksik kuralı ekleyebilirsiniz.
Step 1: Varsayılan politikaları ayarlayın
UFW'ye gelen tüm trafiği reddetmesini ve giden tüm trafiğe izin vermesini söyleyerek başlayın:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming kısmı önemlidir. Bu, açık bir izin kuralı olmayan tüm portların, bir servis o portu dinliyor olsa bile dış dünyaya kapalı olduğu anlamına gelir. allow outgoing sunucunuzun güncellemeler ve benzeri işlemler için internete normal şekilde erişmesini sağlar. Bu iki komut yalnızca politikayı değiştirir; 3. adımdaki UFW etkinleştirilene kadar hiçbir kural uygulanmaz.
Adım 2: Sadece ihtiyaç duyulan portlara izin verin
Bağlantının kesilmemesi için etkinleştirmeden önce SSH portunu açın:
sudo ufw allow 22/tcpUFW, SSH için hız sınırlaması da yapabilir: sudo ufw limit 22/tcp porta izin verir ancak otuz saniye içinde altı veya daha fazla bağlantı kuran tüm adresleri engeller. Bu özellik, ek yazılım gerektirmeden brute-force betiklerini etkisiz hale getirir.
Bir web sunucusu çalıştırıyorsanız, HTTP ve HTTPS protokollerine de izin verin:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpYalnızca halka açık olarak sunduğunuz hizmetlere izin verin. 5432 portundaki Postgres gibi bir veritabanına neredeyse hiçbir zaman izin kuralı eklenmemelidir. Bunun yerine veritabanını 127.0.0.1 adresine bağlayın (bind), böylece yalnızca makine üzerinden erişilebilir olur. Açılan her port savunulması gereken bir kapıdır, bu nedenle listeyi kısa tutun.
Sunucunuz için tüm ufw komut dizisini buradan oluşturabilir ve ardından sırasıyla çalıştırabilirsiniz:
Step 3: Etkinleştirin ve açık olduğunu doğrulayın
sudo ufw enableKomutun mevcut SSH bağlantılarını kesebileceğine dair bir uyarı verilir. 2. adımda 22/tcp izni verildiği için oturumunuz kesilmez. Sonucu doğrulayın:
sudo ufw status verboseStatus: active
Default: deny (incoming), allow (outgoing)
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp ALLOW IN AnywhereBurada iki noktaya dikkat edilmelidir. Status: active, güvenlik duvarının çalıştığını gösterir. Her kural iki kez listelenir: bir kez düz metin olarak, bir kez de (v6) ile. Bu, UFW'nin hem IPv4 hem de IPv6 için çalıştığını gösterir. Eğer (v6) satırları eksikse, IPv6 tarafı yönetilmiyor demektir; bu durum IPv6 firewall post içeriğinde açıklanan ayrı bir sorundur.
Kuralları daha sonra yönetme
Bir kuralı kaldırmak için numaralarıyla birlikte görmek için:
sudo ufw status numbered
sudo ufw delete 3Bir portu yalnızca tek bir adrese izin verecek şekilde ayarlamak, bir yönetim servisini sadece kendi IP adresinize açmak için iyi bir yöntemdir:
sudo ufw allow from 10.0.0.24 to any port 5432 proto tcpGüvenlik duvarı tek bir katmandır. Bir porta nelerin ulaşabileceğini kontrol eder, ancak SSH gibi açık bırakılan bir porta yapılan yoğun saldırıları yavaşlatmaz. Tekrarlayan ihlalcileri engellemek için SSH önünde Fail2ban kullanın. Derinlemesine savunma, her katmanın diğerlerinin kapsayamadığı alanları kapsaması anlamına gelir.
Güvenlik duvarı, yalnızca portların ne olduğunu ve servislerin nasıl dinleme yaptığını bildiğinizde anlamlıdır; bir güvenlik duvarı yapılandırmak, yeni bir VPS üzerindeki ilk 10 dakikanın bir adımıdır.
FAQ
UFW'yi etkinleştirmek SSH oturumumu keser mi?
Önce SSH'a izin verilirse kesilmez. sudo ufw enable komutundan önce sudo ufw allow 22/tcp komutunu çalıştırın; bağlantı korunur çünkü güvenlik duvarı artık 22 numaralı porta izin verir. Tehlike, SSH izin kuralı olmadan varsayılan olarak engelleme (default-deny) modundaki bir güvenlik duvarını etkinleştirmektir; bu durum erişimin kesilmesine neden olur. Eğer bu gerçekleşirse, sağlayıcınızın VNC veya seri konsolu üzerinden giriş yapın ve ufw disable komutunu çalıştırın.
Bir VPS üzerinde hangi portlar açılmalıdır?
Yalnızca halka açık olarak sunduğunuz portlar açılmalıdır. Sunucuyu yönetebilmek için SSH (22/tcp) ve bir web sitesi çalıştırıyorsanız HTTP ve HTTPS (80/tcp, 443/tcp) açılmalıdır. Diğer her şey engelli bırakılmalıdır. Veritabanları gibi dahili servisler 127.0.0.1 adresine bağlanmalı ve hiçbir güvenlik duvarı kuralı almamalıdır; böylece ağ üzerinden asla erişilemez olurlar.
UFW, IPv6 destekliyor mu?
Modern Ubuntu sürümlerinde evet: /etc/default/ufw içerisinde IPV6=yes ayarlanmıştır, bu nedenle her kural her iki protokol için de geçerlidir ve ufw status komutu IPv6 kurallarını (v6) soneki ile gösterir. Olası hatalar IPv6 güvenlik duvarı tuzağı içeriğinde ele alınmıştır.
Bir UFW kuralı nasıl kaldırılır?
Kuralları indeks numaralarıyla listelemek için sudo ufw status numbered komutunu, ardından silmek istediğiniz kuralın numarası olan N için sudo ufw delete N komutunu çalıştırın. Belirterek de silme işlemi yapılabilir, örneğin sudo ufw delete allow 80/tcp.
Bir porta sadece tek bir IP adresinden nasıl izin verilir?
Düz bir allow kuralı yerine from kuralı kullanın. Sadece ofis adresinizin PostgreSQL'e erişmesine izin vermek için sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp komutunu çalıştırın. Varsayılan engelleme politikasıyla port, bir kural onu açana kadar herkese kapalıdır; bu nedenle bu from kuralı tek giriş yoludur: tüm internet engelli kalır ve yalnızca belirttiğiniz adrese izin verilir. Portu herkese açacak olan düz bir allow 5432/tcp kuralı da eklemeyin. Bir veritabanını veya yönetim panelini dış dünyaya açmanın en güvenli yolu budur. Portun yanındaki kaynak adresini görmek için sudo ufw status verbose ile kontrol edin.