UFW ile VPS güvenlik duvarı nasıl kurulur?
UFW ile VPS üzerinde varsayılan reddetme politikası uygulayın, yalnızca gereken portlara izin verin ve SSH bağlantısını kesmeden güvenlik duvarını etkinleştirin.
UFW nedir ve neden kullanılması gerekir
UFW, Uncomplicated Firewall ifadesinin kısaltmasıdır ve adı yaptığı işi doğru şekilde tanımlar. Linux çekirdeğinde zaten bulunan güvenlik duvarı için kullanımı kolay bir arayüzdür. Bu nedenle ham kurallar yazmak yerine ufw allow 22/tcp gibi kısa komutlar yazılır. Yeni bir VPS üzerinde dinleyen her hizmete varsayılan olarak internet üzerinden erişilebilir. Güvenlik duvarı bu durumu tersine çevirir: Önce tüm trafiği reddeder, ardından gerçekten kullanılan birkaç bağlantı noktasına izin verilir. Bu tek değişiklik, yaklaşık dört komutla saldırı yüzeyinin büyük bölümünü ortadan kaldırır.
Güvenlik duvarını yapılandırmadan önce hangi hizmetlerin dinlediği bilinmelidir. Çünkü güvenlik duvarı bu hizmetlerin erişilebilir olup olmayacağını belirler. ss -tlnp kullanarak dinleyen hizmetleri incelemek doğru ilk adımdır.
Bağlantınızın kesilmesini önleyen tek kural
Güvenlik duvarları konusunda kullanıcıları en çok korkutan hata şudur. Varsayılan olarak tüm trafiği reddeden bir ilkeyle UFW etkinleştirilir, ancak SSH için hiçbir izin tanımlanmaz. Bu durumda güvenlik duvarı devreye girer girmez mevcut bağlantı kesilir ve yeniden erişim sağlanamaz. Bunu önlemek için UFW'yi etkinleştirmeden önce SSH'ye her zaman izin verilmelidir. Temel kural budur. Aşağıdaki adımlar işlemleri güvenli sırayla gerçekleştirir.
Bu durum yine de yaşanırsa erişim tamamen kaybedilmez. Sağlayıcının VNC veya seri bağlantı üzerinden sunduğu web konsolu SSH üzerinden çalışmaz. Bu konsolda oturum açılarak ufw disable çalıştırılabilir veya eksik kural eklenebilir.
Adım 1: Varsayılan ilkeleri ayarlayın
Önce UFW'ye gelen tüm bağlantıları reddetmesini ve giden tüm bağlantılara izin vermesini söyleyin:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming önemli kısımdır. Açık bir izin kuralı bulunmayan tüm portların, üzerlerinde bir servis dinliyor olsa bile dışarıya kapatılması anlamına gelir. allow outgoing sunucunun güncellemeler ve benzeri işlemler için internete normal şekilde erişmesini sağlar. Bu iki komut yalnızca ilkeyi değiştirir; UFW'yi 3. adımda etkinleştirene kadar herhangi bir kural uygulanmaz.
2. Adım: Gerçekten gereken portlara izin verin
Etkinleştirmeden önce SSH bağlantısını açık tutmak için SSH portunu açın:
sudo ufw allow 22/tcpUFW, SSH bağlantılarını sizin için hız sınırlamasına da tabi tutabilir: sudo ufw limit 22/tcp portu açar, ancak otuz saniye içinde altı veya daha fazla bağlantı yapan adresleri engeller. Bu yöntem, ek yazılım gerektirmeden kaba kuvvet komut dosyalarının etkisini azaltır.
Bir web sunucusu çalıştırıyorsanız HTTP ve HTTPS için de izin verin:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpYalnızca herkese sunduğunuz hizmetlere izin verin. Postgres gibi bir veritabanı için port 5432 üzerinde neredeyse hiçbir zaman izin kuralı eklenmemelidir. Veritabanını 127.0.0.1 adresine bağlayın. Böylece yalnızca makineden erişilebilir olur. Açtığınız her portu korumanız gerekir. Bu nedenle listeyi kısa tutun.
Sunucunuz için ufw komutlarının tamamını burada da oluşturabilir ve ardından bunları sırasıyla çalıştırabilirsiniz:
3. Adım: Etkinleştirme ve etkin olduğunu doğrulama
sudo ufw enableMevcut SSH bağlantılarının bu komut nedeniyle kesilebileceği konusunda uyarı verilir. 2. adımda 22/tcp izni verildiği için oturumunuz açık kalır. 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ığı anlamına gelir. Ayrıca her kural iki kez görünür: biri düz biçimde, diğeri ise UFW'nin IPv6'nın yanı sıra IPv4'ü de kapsadığını gösteren (v6) ile. (v6) satırları eksikse IPv6 tarafınız yönetilmiyor demektir. Bu, IPv6 güvenlik duvarı yazısında ele alınan ayrı bir sorundur.
Kuralları daha sonra yönetme
Kaldırabilmek için kuralları numaralarıyla görüntülemek üzere:
sudo ufw status numbered
sudo ufw delete 3Bir porta yalnızca tek bir adresten izin vermek için. Bu, bir yönetim hizmetini yalnızca kendi IP adresinize açmanın iyi bir yoludur:
sudo ufw allow from 10.0.0.24 to any port 5432 proto tcpBu yaklaşım, kendi adresiniz değiştiğinde veya birden fazla makinenin erişmesi gerektiğinde yetersiz kalır. Genel çözüm, portu herkese açık biçimde açmayı tamamen bırakmak ve bunun yerine servise özel bir ağ üzerinden erişmektir. sunucunun özel alt ağını tailnet'inize duyurmak bu amaçla kullanılır.
Güvenlik duvarı katmanlardan yalnızca biridir. Bir porta hangi bağlantıların ulaşabileceğini denetler, ancak SSH gibi açık bıraktığınız bir porta sürekli istek gönderen birini yavaşlatmaz. Bunun için tekrarlanan saldırıları engellemek üzere SSH'nin önüne Fail2ban ekleyin. Savunma derinliği, her katmanın diğerlerinin karşılayamadığı riskleri ele alması anlamına gelir.
Güvenlik duvarı, ancak portların ne olduğunu ve hizmetlerin nasıl dinlediğini öğrendikten sonra anlamlıdır. Güvenlik duvarını yapılandırmak, yeni bir VPS üzerindeki ilk 10 dakikanın bir adımıdır.
FAQ
UFW etkinleştirildiğinde SSH oturumum kesilir mi?
Önce SSH erişimine izin verilirse kesilmez. sudo ufw allow 22/tcp komutunu sudo ufw enable komutundan önce çalıştırın. Güvenlik duvarı artık 22 numaralı porta izin verdiği için bağlantınız devam eder. Tehlike, SSH izin kuralı olmadan varsayılan olarak tüm bağlantıları reddeden bir güvenlik duvarını etkinleştirmektir. Bu durumda bağlantınız kesilir. Böyle bir durum yaşanırsa sağlayıcınızın VNC veya seri konsolu üzerinden oturum açın ve ufw disable komutunu çalıştırın.
VPS üzerinde hangi portları açmalıyım?
Yalnızca genel kullanıma sunduğunuz portları açın. Sistemi yönetebilmek için SSH (22/tcp) portunu açın. Bir web sitesi çalıştırıyorsanız HTTP ve HTTPS (80/tcp, 443/tcp) portlarını da açın. Diğer tüm portları reddedilmiş durumda bırakın. Veritabanları gibi dahili hizmetler 127.0.0.1 adresine bağlanmalı ve hiçbir güvenlik duvarı kuralına sahip olmamalıdır. Böylece bu hizmetlere ağ üzerinden hiçbir zaman erişilemez.
UFW IPv6'yı destekler mi?
Modern Ubuntu sürümlerinde evet. IPV6=yes ayarı /etc/default/ufw içinde etkin olduğundan her kural her iki protokol yığınına da uygulanır. ufw status komutu, IPv6 kurallarını (v6) son ekiyle gösterir. Bunun yine de hatalı çalışabileceği durumlar IPv6 güvenlik duvarı tuzağı bölümünde açıklanmıştır.
Bir UFW kuralını nasıl kaldırırım?
Kuralları sıra numaralarıyla listelemek için sudo ufw status numbered komutunu çalıştırın. Ardından kaldırmak istediğiniz kuralın numarasını N yerine yazarak sudo ufw delete N komutunu çalıştırın. Kural belirtimiyle de silebilirsiniz. Örneğin sudo ufw delete allow 80/tcp.
Bir porta yalnızca tek bir IP adresinden nasıl izin verebilirim?
Basit bir allow kuralı yerine from kuralı kullanın. Yalnızca ofisinizin adresinin 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 olarak tüm bağlantıları reddeden bir politikada, bir kural portu açana kadar port herkese kapalıdır. Bu nedenle from kuralı tek giriş yoludur: tüm internet engellenir ve yalnızca belirttiğiniz adresin bağlantısına izin verilir. Ayrıca basit bir allow 5432/tcp kuralı eklemeyin. Bu, portu herkese açar. Bu yöntem, bir veritabanını veya yönetim panelini erişime açmanın en güvenli yoludur. Sonucu sudo ufw status verbose komutuyla doğrulayın. Bu komut, kaynak adresi portun yanında gösterir.