Ubuntu 18.04 Üzerinde UFW ile Güvenlik Duvarı Nasıl Kurulur

Giriş

UFW veya Karmaşık Güvenlik Duvarı, iptablesbir güvenlik duvarını yapılandırma işlemini basitleştirmeye yönelik bir arayüzdür . iptablesSağlam ve esnek bir araç olsa da , yeni başlayanların bir güvenlik duvarını düzgün bir şekilde yapılandırmak için nasıl kullanacaklarını öğrenmeleri zor olabilir. Ağınızı korumaya başlamak istiyorsanız ve hangi aracı kullanacağınızdan emin değilseniz, UFW sizin için doğru seçim olabilir.

Bu eğitici, Ubuntu 18.04’te UFW ile nasıl bir güvenlik duvarı ayarlayacağınızı gösterecektir.

Ön şartlar

Bu öğreticiyi takip etmek için ihtiyacınız olacak:

UFW, varsayılan olarak Ubuntu’ya yüklenir. Herhangi bir nedenle kaldırıldıysa, ile yükleyebilirsiniz sudo apt install ufw.

Adım 1 – IPv6’yı UFW ile kullanma (İsteğe bağlı)

Bu öğretici IPv4 göz önünde bulundurularak yazılmıştır, ancak IPv6 için etkinleştirdiğiniz sürece çalışacaktır. Ubuntu sunucunuzda IPv6 etkinleştirilmişse, UFW’nin IPv6’ya ek olarak IPv6 için güvenlik duvarı kurallarını yönetmesi için IPv6’yı destekleyecek şekilde yapılandırıldığından emin olun. Bunu yapmak için UFW yapılandırmasını nanoveya favori düzenleyicinizi açın.

sudo nano /etc/default/ufw

Sonra emin değerini yapmak IPV6DİR yes. Şöyle görünmelidir:/ etc / default / ufw alıntısı

IPV6=yes

Dosyayı kaydedip kapatın. Şimdi, UFW etkinleştirildiğinde, hem IPv4 hem de IPv6 güvenlik duvarı kurallarını yazacak şekilde yapılandırılacaktır. Ancak, UFW’yi etkinleştirmeden önce, güvenlik duvarınızın SSH aracılığıyla bağlanmanıza izin verecek şekilde yapılandırıldığından emin olmak isteyeceğiz. Varsayılan politikaları ayarlayarak başlayalım.

Adım 2 – Varsayılan Politikaları Ayarlama

Güvenlik duvarınıza yeni başlıyorsanız, tanımlanacak ilk kurallar varsayılan politikalarınızdır. Bu kurallar, diğer kurallarla açıkça eşleşmeyen trafiğin nasıl ele alınacağını kontrol eder. Varsayılan olarak, UFW tüm gelen bağlantıları reddedecek ve tüm giden bağlantılara izin verecek şekilde ayarlanmıştır. Bu, sunucunuza erişmeye çalışan herkesin bağlanamayacağı, sunucu içindeki herhangi bir uygulamanın dış dünyaya erişebileceği anlamına gelir.

UFW kurallarınızı varsayılanlara geri getirelim, böylece bu eğiticiyle birlikte takip edebileceğinizden emin olabiliriz. UFW tarafından kullanılan varsayılanları ayarlamak için şu komutları kullanın:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Bu komutlar, varsayılanları gelen reddedilecek ve giden bağlantılara izin verecek şekilde ayarlar. Bu güvenlik duvarı varsayılanları tek başına kişisel bir bilgisayar için yeterli olabilir, ancak sunucuların genellikle dış kullanıcılardan gelen isteklere yanıt vermesi gerekir. Bir sonraki konuya bakacağız.

Adım 3 – SSH Bağlantılarına İzin Verme

UFW güvenlik duvarımızı şimdi etkinleştirirsek, gelen tüm bağlantıları reddeder. Bu, sunucumuzun bu tür isteklere yanıt vermesini istiyorsak, yasal gelen gelen bağlantılara (örneğin SSH veya HTTP bağlantıları) açıkça izin veren kurallar oluşturmamız gerektiği anlamına gelir. Bir bulut sunucusu kullanıyorsanız, muhtemelen sunucunuza bağlanabilmeniz ve sunucunuzu yönetebilmeniz için gelen SSH bağlantılarına izin vermek isteyeceksiniz.

Sunucunuzu gelen SSH bağlantılarına izin verecek şekilde yapılandırmak için şu komutu kullanabilirsiniz:

sudo ufw allow ssh

Bu 22, SSH arka plan programının varsayılan olarak dinlediği bağlantı noktası olan bağlantı noktasındaki tüm bağlantılara izin veren güvenlik duvarı kuralları oluşturur . UFW allow ssh/etc/servicesdosyada bir hizmet olarak listelendiği için bağlantı noktasının ne anlama geldiğini bilir .

Ancak, hizmet adı yerine bağlantı noktasını belirterek eşdeğer kuralı yazabiliriz. Örneğin, bu komut yukarıdaki komutla aynı şekilde çalışır:

sudo ufw allow 22

SSH arka plan programınızı farklı bir bağlantı noktası kullanacak şekilde yapılandırdıysanız, uygun bağlantı noktasını belirtmeniz gerekir. Örneğin, SSH sunucunuz bağlantı noktasında dinliyorsa, 2222bu bağlantı noktasında bağlantılara izin vermek için bu komutu kullanabilirsiniz:

sudo ufw allow 2222

Güvenlik duvarınız artık gelen SSH bağlantılarına izin verecek şekilde yapılandırıldığına göre, etkinleştirebiliriz.

Adım 4 – UFW’yi etkinleştirme

UFW’yi etkinleştirmek için şu komutu kullanın:

sudo ufw enable

Komutun mevcut SSH bağlantılarını kesintiye uğratabileceğini söyleyen bir uyarı alırsınız. Zaten SSH bağlantılarına izin veren bir güvenlik duvarı kuralı oluşturduk, bu yüzden devam etmeliyiz. Komut istemine yanıt verin yve tuşuna basın ENTER.

Güvenlik duvarı şimdi etkindir. sudo ufw status verboseBelirlenen kuralları görmek için komutu çalıştırın . Bu öğreticinin geri kalanı, UFW’nin farklı bağlantılara izin verme veya reddetme gibi daha ayrıntılı nasıl kullanılacağını kapsar.

Adım 5 – Diğer Bağlantılara İzin Verme

Bu noktada, sunucunuzun yanıt vermesi gereken diğer tüm bağlantılara izin vermelisiniz. İzin vermeniz gereken bağlantılar özel ihtiyaçlarınıza bağlıdır. Neyse ki, bir hizmet adına veya bağlantı noktasına dayalı bağlantılara izin veren kuralları nasıl yazacağınızı zaten biliyorsunuz; bunu zaten limandaki SSH için yaptık 22. Bunu aşağıdakiler için de yapabilirsiniz:

  • 80 numaralı bağlantı noktasında HTTP, şifrelenmemiş web sunucularının kullandığı, sudo ufw allow httpveyasudo ufw allow 80
  • 443 numaralı bağlantı noktasında HTTPS, şifreli web sunucularının kullandığı, sudo ufw allow httpsveyasudo ufw allow 443

Bağlantı noktası veya bilinen bir hizmet belirtmenin yanı sıra diğer bağlantılara izin vermenin başka yolları da vardır.

Belirli Liman Aralıkları

UFW ile bağlantı noktası aralıklarını belirleyebilirsiniz. Bazı uygulamalar tek bir bağlantı noktası yerine birden çok bağlantı noktası kullanır.

Örneğin, bağlantı noktalarını kullanan X11 bağlantıları, izin vermek için 6000– 6007:, bu komutları

sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp

UFW ile bağlantı noktası aralıklarını belirtirken , kuralların uygulanması gereken protokolü ( tcpveya udp) belirtmeniz gerekir. Bunu daha önce belirtmedik çünkü protokolü belirtmemek her iki protokole de otomatik olarak izin veriyor;

Belirli IP Adresleri

UFW ile çalışırken IP adresleri de belirleyebilirsiniz. Örneğin, iş veya ev IP adresi gibi belirli bir IP adresinden bağlantılara izin vermek istiyorsanız, IP adresini 203.0.113.4belirtmeniz gerekir from:

sudo ufw allow from 203.0.113.4

to any portBağlantı noktası numarasını ekleyerek IP adresinin bağlanmasına izin verilen belirli bir bağlantı noktası da belirtebilirsiniz . Örneğin, 203.0.113.4bağlantı noktasına 22(SSH) bağlanmaya izin vermek istiyorsanız , şu komutu kullanın:

sudo ufw allow from 203.0.113.4 to any port 22

Alt ağlar

Bir IP adresi alt ağına izin vermek istiyorsanız, bir ağ maskesi belirtmek için CIDR gösterimini kullanarak bunu yapabilirsiniz. Örneğin, ile arasında değişen tüm IP adreslerine izin 203.0.113.1vermek 203.0.113.254istiyorsanız bu komutu kullanabilirsiniz:

sudo ufw allow from 203.0.113.0/24

Benzer şekilde, alt ağın 203.0.113.0/24bağlanmasına izin verilen hedef bağlantı noktasını da belirtebilirsiniz . Yine, 22örnek olarak port (SSH) kullanacağız :

sudo ufw allow from 203.0.113.0/24 to any port 22

Belirli Bir Ağ Arayüzüne Bağlantılar

Yalnızca belirli bir ağ arabirimi için geçerli olan bir güvenlik duvarı kuralı oluşturmak istiyorsanız, bunu “izin ver” ve ardından ağ arabiriminin adını belirterek yapabilirsiniz.

Devam etmeden önce ağ arayüzlerinizi aramak isteyebilirsiniz. Bunu yapmak için şu komutu kullanın:

ip addr
Output Excerpt2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .

Vurgulanan çıktı ağ arabirimi adlarını gösterir. Genellikle eth0veya gibi bir şey olarak adlandırılırlar enp3s2.

Dolayısıyla, sunucunuz adlı bir genel ağ arabirimine sahipse , bu komutla eth0HTTP trafiğine (bağlantı noktası 80) izin verebilirsiniz :

sudo ufw allow in on eth0 to any port 80

Bunu yapmak, sunucunuzun genel internetten HTTP istekleri almasına izin verecektir.

Veya, MySQL veritabanı sunucunuzun (port 3306) özel ağ arabirimindeki bağlantıları dinlemesini eth1istiyorsanız, bu komutu kullanabilirsiniz:

sudo ufw allow in on eth1 to any port 3306

Bu, özel ağınızdaki diğer sunucuların MySQL veritabanınıza bağlanmasına izin verir.

Adım 6 – Bağlantıları Reddetme

Gelen bağlantılar için varsayılan ilkeyi değiştirmediyseniz, UFW gelen tüm bağlantıları reddedecek şekilde yapılandırılmıştır. Genellikle bu, belirli bağlantı noktalarına ve IP adreslerine açıkça izin veren kurallar oluşturmanızı gerektirerek güvenli bir güvenlik duvarı ilkesi oluşturma işlemini basitleştirir.

Ancak, bazen sunucunuzun oradan saldırıya uğradığını bildiğiniz için, kaynak IP adresine veya alt ağa dayalı belirli bağlantıları reddetmek isteyebilirsiniz. Ayrıca, varsayılan gelen politikanızı izin vermek (bu önerilmez) için değiştirmek isterseniz, bağlantılara izin vermek istemediğiniz hizmetler veya IP adresleri için reddetme kuralları oluşturmanız gerekir .

Reddetme kuralları yazmak için , izin ver’i reddet ile değiştirerek yukarıda açıklanan komutları kullanabilirsiniz .

Örneğin, HTTP bağlantılarını reddetmek için şu komutu kullanabilirsiniz:

sudo ufw deny http

Veya tüm bağlantıları reddetmek 203.0.113.4isterseniz bu komutu kullanabilirsiniz:

sudo ufw deny from 203.0.113.4

Şimdi kuralları nasıl sileceğimize bakalım.

Adım 7 – Kuralları Silme

Güvenlik duvarı kurallarının nasıl silineceğini bilmek, bunları nasıl oluşturacağınızı bilmek kadar önemlidir. Hangi kuralların silineceğini belirtmenin iki farklı yolu vardır: kural numarasına veya asıl kurala göre (kurallar oluşturulduklarında nasıl belirtildiklerine benzer). Kural numarasıyla sil yöntemiyle başlayacağız çünkü daha kolay.

Kural Numarasına Göre

Güvenlik duvarı kurallarını silmek için kural numarasını kullanıyorsanız, yapmak istediğiniz ilk şey güvenlik duvarı kurallarınızın bir listesini almaktır. UFW durum komutunun, burada gösterildiği gibi, her kuralın yanındaki sayıları görüntüleme seçeneği vardır:

sudo ufw status numbered
Numbered Output:Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    15.15.15.0/24
[ 2] 80                         ALLOW IN    Anywhere

Bağlantı noktası 80 (HTTP) bağlantılarına izin veren kural 2’yi silmek istediğimize karar verirsek, bunu aşağıdaki gibi bir UFW silme komutunda belirtebiliriz:

sudo ufw delete 2

Bu, bir onay istemi gösterecek ve HTTP bağlantılarına izin veren kural 2’yi silecektir. IPv6’yı etkinleştirdiyseniz, karşılık gelen IPv6 kuralını da silmek istediğinizi unutmayın.

Gerçek Kurala Göre

Kural numaralarına alternatif, silinecek gerçek kuralı belirtmektir. Örneğin, allow httpkuralı kaldırmak istiyorsanız , şu şekilde yazabilirsiniz:

sudo ufw delete allow http

Kuralı allow 80, hizmet adı yerine yerine ile de belirtebilirsiniz :

sudo ufw delete allow 80

Bu yöntem, varsa, hem IPv4 hem de IPv6 kurallarını siler.

Adım 8 – UFW Durumunu ve Kurallarını Kontrol Etme

İstediğiniz zaman, bu komutla UFW’nin durumunu kontrol edebilirsiniz:

sudo ufw status verbose

Varsayılan olarak UFW devre dışı bırakılmışsa, şöyle bir şey görürsünüz:

OutputStatus: inactive

Eğer UFW aktifse, Adım 3’ü izlemiş olmanız gerekir, çıktı aktif olduğunu söyler ve ayarlanan kuralları listeler. Örneğin, güvenlik duvarı 22herhangi bir yerden SSH (bağlantı noktası ) bağlantılarına izin verecek şekilde ayarlanmışsa , çıktı aşağıdaki gibi görünebilir:

OutputStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere

statusUFW’nin güvenlik duvarını nasıl yapılandırdığını kontrol etmek istiyorsanız komutu kullanın .

Adım 9 – UFW’yi Devre Dışı Bırakma veya Sıfırlama (isteğe bağlı)

UFW kullanmak istemediğinize karar verirseniz, bu komutla devre dışı bırakabilirsiniz:

sudo ufw disable

UFW ile oluşturduğunuz kurallar artık etkin olmayacak. Daha sudo ufw enablesonra etkinleştirmeniz gerekirse her zaman çalıştırabilirsiniz .

Önceden yapılandırılmış UFW kurallarınız varsa, ancak baştan başlamak istediğinize karar verirseniz, reset komutunu kullanabilirsiniz:

sudo ufw reset

Bu, UFW’yi devre dışı bırakır ve önceden tanımlanan tüm kuralları siler. Herhangi bir noktada değiştirdiyseniz, varsayılan politikaların orijinal ayarlarına değişmeyeceğini unutmayın. Bu size UFW ile yeni bir başlangıç ​​yapmalıdır.

Sonuç

Güvenlik duvarınız şimdi (en azından) SSH bağlantılarına izin verecek şekilde yapılandırıldı. Gereksiz bağlantıları sınırlarken sunucunuzun gelen diğer bağlantılara izin verdiğinizden emin olun, böylece sunucunuz çalışır ve güvenli olur.

Daha yaygın UFW yapılandırmaları hakkında bilgi edinmek için UFW Essentials: Ortak Güvenlik Duvarı Kuralları ve Komutları öğreticisine göz atın.