Ubuntu'da UFW ile güvenlik duvarı nasıl kurulur?

0 Hisse senetleri
0
0
0
0

giriiş

UFW veya Karmaşık Olmayan Güvenlik Duvarı, bir güvenlik duvarı yapılandırma sürecini basitleştirmek için tasarlanmış bir iptables ön yüzüdür. Iptables güçlü ve esnek bir araç olmasına rağmen, yeni başlayanlar için bir güvenlik duvarını doğru şekilde yapılandırmayı öğrenmek zor olabilir. Ağınızı güvenli hale getirmeye başlamak istiyorsanız ve hangi aracı kullanacağınızdan emin değilseniz, UFW sizin için iyi bir seçim olabilir.

Ön koşullar

Ubuntu 16.04 veya daha eski bir sürüm kullanıyorsanız, Ubuntu artık bu sürümleri desteklemediğinden daha yeni bir sürüme yükseltmenizi öneririz. Bu talimatlar, Ubuntu sürümünüzü yükseltmenize yardımcı olacaktır.

 

Adım 1 — IPv6'nın etkinleştirildiğinden emin olun

Ubuntu'nun son sürümlerinde IPv6 varsayılan olarak etkindir. Pratikte bu, sunucuya eklenen çoğu güvenlik duvarı kuralının hem IPv4 hem de IPv6'yı içereceği anlamına gelir; ikincisi, UFW durum komutunun çıktısında v6 olarak tanımlanır. IPv6'nın etkin olduğundan emin olmak için UFW yapılandırma dosyanızı /etc/default/ufw adresinden kontrol edebilirsiniz. Bu dosyayı nano veya favori komut satırı düzenleyicinizi kullanarak açın:

sudo nano /etc/default/ufw

Ardından IPV6 değerinin Evet olarak ayarlandığından emin olun. Aşağıdaki gibi görünmelidir:

IPV6=yes

Dosyayı kaydedip kapatın. Nano kullanıyorsanız, bunu CTRL+X, ardından Y ve onaylamak için ENTER tuşlarına basarak yapabilirsiniz.

Bu kılavuzun bir sonraki adımında UFW etkinleştirildiğinde, hem IPv4 hem de IPv6 güvenlik duvarı kurallarını yazacak şekilde yapılandırılacaktır.

Adım 2 — Varsayılan Politikaları Ayarlayın

UFW'ye yeni başlıyorsanız, iyi bir ilk adım güvenlik duvarınızın varsayılan politikalarını gözden geçirmektir. Bu kurallar, diğer kurallarla açıkça eşleşmeyen trafiğin nasıl işlendiğini kontrol eder.

Varsayılan olarak, UFW tüm gelen bağlantıları reddedip tüm giden bağlantılara izin verecek şekilde yapılandırılmıştır. Bu, sunucunuza erişmeye çalışan hiç kimsenin bağlanamayacağı, ancak sunucu içindeki herhangi bir uygulamanın dış dünyaya erişebileceği anlamına gelir. Bu genel politikanın istisnaları olarak belirli hizmetlere ve bağlantı noktalarına izin vermek için ek kurallar eklenmiştir.

Bu eğitimin geri kalanını takip edebilmeniz için, şimdi gelen ve giden trafik için varsayılan UFW politikalarınızı ayarlayacaksınız.

Varsayılan UFW giriş politikasını reddetme olarak ayarlamak için aşağıdaki komutu çalıştırın:

sudo ufw default deny incoming
Output

Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Varsayılan UFW çıkış politikasını izin verici olarak ayarlamak için aşağıdaki komutu çalıştırın:

Bu komutlar, gelen bağlantıları reddedip giden bağlantılara izin verecek varsayılan ayarları belirler. Bu güvenlik duvarı varsayılan ayarları tek başına bir kişisel bilgisayar için yeterli olabilir, ancak sunucuların genellikle harici kullanıcılardan gelen isteklere yanıt vermesi gerekir. Bunu daha sonra ele alacağız.

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

UFW güvenlik duvarınızı şimdi etkinleştirirseniz, tüm gelen bağlantıları reddedecektir. Bu, sunucunuzun bu tür isteklere yanıt vermesini istiyorsanız, meşru gelen bağlantılara (örneğin SSH veya HTTP bağlantıları) açıkça izin veren kurallar oluşturmanız gerektiği anlamına gelir. Bir bulut sunucusu kullanıyorsanız, sunucunuza bağlanıp onu yönetebilmeniz için gelen SSH bağlantılarına izin vermek isteyebilirsiniz.

OpenSSH UFW uygulama profiline izin ver

Ağ bağlantılarına dayanan çoğu uygulama, kurulduktan sonra UFW'ye bir uygulama profili kaydeder. Bu profil, kullanıcıların bir hizmete dışarıdan erişime hızlıca izin vermesini veya vermemesini sağlar. Aşağıdaki komutu kullanarak UFW'ye hangi profillerin kayıtlı olduğunu kontrol edebilirsiniz:

sudo ufw app list
Output
Available applications:
OpenSSH
OpenSSH uygulama profilini etkinleştirmek için aşağıdaki komutu çalıştırın:
sudo ufw allow OpenSSH
Output

Rule added
Rule added (v6)
Bu komut, SSH servisinin varsayılan olarak dinlediği port olan 22'deki tüm bağlantılara izin vermek için güvenlik duvarı kuralları oluşturur.
Hizmet adına göre SSH'ye izin ver

UFW'yi gelen SSH bağlantılarına izin verecek şekilde yapılandırmanın bir başka yolu da hizmet adına başvurmaktır:

sudo ufw allow ssh
Output

Rule added
Rule added (v6)
UFW, /etc/services dosyasına dayanarak bir servisin hangi portları ve protokolleri kullandığını bilir.
Bağlantı noktası numarasına göre SSH'yi etkinleştirme

Alternatif olarak, uygulama veya hizmet profili adı yerine bağlantı noktasını belirterek eşdeğer kuralı yazabilirsiniz. Örneğin, bu komut önceki örnekler gibi çalışır:

sudo ufw allow 22
Output

Rule added
Rule added (v6)

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

sudo ufw allow 2222
Output

Rule added
Rule added (v6)

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

Adım 4 — UFW'yi Etkinleştirin

Güvenlik duvarınız artık SSH bağlantılarına izin verecek şekilde yapılandırılmış olmalı. Güvenlik duvarı devre dışıyken bile, hangi kuralların eklendiğini doğrulamak için aşağıdaki komutu kullanabilirsiniz:

sudo ufw show added
Output
Added user rules (see 'ufw status' for running firewall):
ufw allow OpenSSH
Gelen SSH bağlantılarına izin veren bir kuralınız olduğunu doğruladıktan sonra, aşağıdaki komutla güvenlik duvarını etkinleştirebilirsiniz:
sudo ufw enable
OutputCommand may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Bu komutun mevcut SSH bağlantılarını bozabileceğine dair bir uyarı alacaksınız. SSH bağlantılarına izin veren bir güvenlik duvarı kuralı zaten ayarladınız, bu nedenle devam edebilirsiniz. "y" ile yanıt verin ve ENTER tuşuna basın.

Güvenlik duvarı artık etkin. Ayarlanan kuralları görmek için sudo ufw status verbose komutunu çalıştırın. Bu eğitimin geri kalanında, farklı bağlantı türlerine izin verme veya reddetme gibi UFW'nin nasıl kullanılacağı daha ayrıntılı olarak ele alınacaktır.

Adım 5 — Diğer bağlantılara izin ver

Bu noktada, sunucunuzun işlemesi 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. Uygulama profiline, hizmet adına veya porta göre bağlantılara izin veren kuralları nasıl yazacağınızı zaten biliyorsunuz. Bunu 22 numaralı portta SSH için zaten yaptınız. Ayrıca şunu da yapabilirsiniz:

  • Şifrelenmemiş web sunucuları tarafından kullanılan port olan 80'deki HTTP'yi sudo ufw allow http veya sudo ufw allow 80 kullanarak
  • Şifrelenmiş web sunucularının kullandığı port olan 443'teki HTTPS, sudo ufw allow https veya sudo ufw allow 443 kullanılarak
  • HTTP ve HTTPS ile Apache, sudo ufw allow 'Apache Full' kullanarak‘
  • HTTP ve HTTPS ile Nginx, sudo ufw allow 'Nginx Full' kullanılarak‘

Sunucunuz için hangi uygulama profillerinin kullanılabilir olduğunu sudo ufw app list komutunu kullanarak kontrol etmeyi unutmayın.

Bir port veya bilinen bir hizmet adı belirtmenin yanı sıra, bağlantılara izin vermenin başka yolları da vardır. Bu yöntemlerden bazılarını aşağıda ele alacağız.

Belirli port aralıkları

UFW ile bir port aralığı belirleyebilirsiniz. Bazı uygulamalar tek bir port yerine birden fazla port kullanır.

Örneğin, 6000-6007 portlarını kullanarak X11 bağlantılarına izin vermek için şu komutları kullanın:

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

UFW ile bağlantı noktası aralıklarını belirtirken, kuralların uygulanacağı protokolü (TCP veya UDP) belirtmeniz gerekir. Bunu daha önce belirtmedik çünkü bir protokol belirtmemek otomatik olarak her iki protokole de izin verir ve çoğu durumda bu sorun teşkil etmez.

Belirli IP adresleri

UFW ile çalışırken, kurallarınızda IP adreslerini de belirtebilirsiniz. Örneğin, iş veya ev IP adresiniz 203.0.113.4 gibi belirli bir IP adresinden gelen bağlantılara izin vermek istiyorsanız, from parametresini kullanıp istediğiniz IP adresini girmeniz gerekir:

sudo ufw allow from 203.0.113.4
Output

Rule added

Ayrıca, her bir bağlantı noktasına bağlantı noktası numarasını ekleyerek bir IP adresinin bağlanmasına izin verilen bağlantı noktasını da belirtebilirsiniz. Örneğin, 203.0.113.4 adresinin 22 numaralı bağlantı noktasına (SSH) bağlanmasına izin vermek istiyorsanız, şu komutu kullanın:

sudo ufw allow from 203.0.113.4 to any port 22
OutputRule added

Alt ağlar

Bir IP adresi alt ağına erişime izin vermek istiyorsanız, bir ağ maskesi belirtmek için CIDR gösterimini kullanabilirsiniz. Örneğin, 203.0.113.1 ile 203.0.113.254 arasındaki tüm IP adreslerine erişime izin vermek istiyorsanız, şu komutu kullanabilirsiniz:

sudo ufw allow from 203.0.113.0/24
Output
Rule added

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

sudo ufw allow from 203.0.113.0/24 to any port 22
Output

Rule added
Belirli bir ağ arayüzüne bağlanma

Yalnızca belirli bir ağ arayüzüne uygulanan bir güvenlik duvarı kuralı oluşturmak istiyorsanız, bunu "Günlüğe Kaydetmeye İzin Ver" seçeneğini ve ardından ağ arayüzünün adını belirterek yapabilirsiniz.

Devam etmeden önce ağ arayüzlerinizi arayabilirsiniz. Bunun için şu komutu kullanın:

ip addr
Output Excerpt
2: 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ğ arayüzlerinin adlarını gösterir. Bunlar genellikle eth0 veya enp3s2 gibi bir adla anılır.

Yani, sunucunuzda eth0 adında bir genel ağ arayüzü varsa, şu komutla ona HTTP trafiğine (port 80) izin verebilirsiniz:

sudo ufw allow in on eth0 to any port 80
Output
Rule added
Rule added (v6)

Bunu yapmak sunucunuzun genel internetten HTTP isteklerini almasına olanak tanır.

Veya MySQL veritabanı sunucunuzun (port 3306) örneğin eth1 özel ağ arayüzündeki bağlantıları dinlemesini istiyorsanız, şu komutu kullanabilirsiniz:

sudo ufw allow in on eth1 to any port 3306
Output

Rule added

Rule added (v6)

Bu, özel ağınızdaki diğer sunucuların MySQL veritabanınıza bağlanmasına olanak tanır.

Adım 6 – Bağlantıları atın

Gelen bağlantılar için varsayılan politikayı değiştirmediyseniz, UFW tüm gelen bağlantıları reddedecek şekilde yapılandırılmıştır. Bu, belirli bağlantı noktalarının ve IP adreslerinin geçmesine açıkça izin veren kurallar oluşturmanızı gerektirerek güvenli bir güvenlik duvarı politikası oluşturma sürecini genel olarak basitleştirir.

Ancak bazen, sunucunuzun oradan saldırıya uğradığını bildiğiniz için, kaynak IP adresine veya alt ağa bağlı olarak belirli bağlantıları reddetmek isteyebilirsiniz. Ayrıca, varsayılan gelen bağlantı politikanızı "izin ver" olarak değiştirmek istiyorsanız (ki bu önerilmez), bağlantılarına izin vermek istemediğiniz her hizmet veya IP adresi için reddetme kuralları oluşturmanız gerekir.

Reddetme kurallarını yazmak için daha önce anlatılan komutları kullanabilirsiniz; allow komutunu deny ile değiştirebilirsiniz.

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

sudo ufw deny http
Output
Rule added (v6)

Veya 203.0.113.4'ten gelen tüm bağlantıları engellemek istiyorsanız şu komutu kullanabilirsiniz:

sudo ufw deny from 203.0.113.4
Output
Rule added

Bazı durumlarda, sunucudan giden bağlantıları da engellemek isteyebilirsiniz. Tüm kullanıcıların sunucudaki bir bağlantı noktasını (örneğin, SMTP trafiği için 25 numaralı bağlantı noktası) kullanmasını engellemek için, "deny out" komutunu ve ardından bağlantı noktası numarasını kullanabilirsiniz:

sudo ufw deny out 25
Output
Rule added
Rule added (v6)

Bu, sunucudaki tüm giden SMTP trafiğini engelleyecektir.

Adım 7 – Kuralları silin

Güvenlik duvarı kurallarının nasıl silineceğini bilmek, nasıl oluşturulacağını bilmek kadar önemlidir. Hangi kuralların silineceğini belirtmenin iki farklı yolu vardır: kural numarası veya okunabilir ad (kuralların oluşturulurken nasıl belirtildiğine benzer şekilde).

Bir UFW kuralını numarasına göre sil

Bir UFW kuralını numarasına göre silmek için, öncelikle tüm güvenlik duvarı kurallarınızın numaralandırılmış bir listesini almanız gerekir. UFW status komutu, burada gösterildiği gibi, her kuralın yanındaki numaraları görüntüleme seçeneğine sahiptir:

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

#2 kuralını, yani 80 numaralı bağlantı noktasına (HTTP) izin veren kuralı kaldırmaya karar verirseniz, bunu UFW kaldırma komutunda şu şekilde belirtebilirsiniz:

sudo ufw delete 2
Output

Deleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted

Bu işlem sizden onay isteyecek ve ardından HTTP bağlantısına izin veren 2. kuralı silecektir. IPv6'yı etkinleştirdiyseniz, ilgili IPv6 kuralını da silmeniz gerekeceğini unutmayın.

Bir UFW kuralını adına göre sil

Kural numaraları kullanmak yerine, kural türüne (genellikle izin ver veya reddet) ve kuralın hedeflediği hizmet adına veya bağlantı noktası numarasına ya da varsa uygulama profili adına göre belirlenen, insanlar tarafından okunabilir bir adla da kurala başvurabilirsiniz. Örneğin, daha önce etkinleştirilmiş olan Apache Full adlı bir uygulama profili için izin verme kuralını kaldırmak istiyorsanız, aşağıdaki komutu kullanabilirsiniz:

sudo ufw delete allow "Apache Full"
Output
Rule deleted
Rule deleted (v6)  

Silme komutu, bir hizmete ad veya bağlantı noktasıyla başvurularak oluşturulan kurallar için de aynı şekilde çalışır. Örneğin, daha önce HTTP bağlantılarına izin veren bir kural oluşturduysanız, sudo ufw http'ye izin ver Kuralı aşağıdaki şekilde silebilirsiniz:

sudo ufw delete allow http
Output
Rule deleted
Rule deleted (v6)

Kuralları belirtirken servis adları port numaralarıyla değiştirilebilir olduğundan, allow http yerine allow 80 kuralına da başvurabilirsiniz:

sudo ufw delete allow http

Output
Rule deleted Rule deleted (v6)

Kuralları belirtirken servis adları port numaralarıyla değiştirilebilir olduğundan, allow http yerine allow 80 kuralına da başvurabilirsiniz:

sudo ufw delete allow 80
Output
Rule deleted
Rule deleted (v6)

UFW kurallarını adına göre sildiğinizde, varsa hem IPv4 hem de IPv6 kuralları silinir.

Adım 8 — UFW durumunu ve kurallarını kontrol edin

İstediğiniz zaman UFW'nin durumunu şu komutla kontrol edebilirsiniz:

sudo ufw status verbose

UFW varsayılan olarak devre dışıysa, buna benzer bir şey göreceksiniz:

Output
Status: inactive

UFW etkinse (3. Adımı uyguladıysanız öyle olması gerekir), çıktıda etkin olduğu belirtilecek ve ayarlanan kurallar listelenecektir. Örneğin, güvenlik duvarı her yerden SSH bağlantılarına (22 numaralı port) izin verecek şekilde yapılandırılmışsa, çıktı aşağıdaki gibi görünebilir:

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

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

اگر می‌خواهید بررسی کنید که UFW چگونه فایروال را پیکربندی کرده است، از دستور status استفاده کنید.

مرحله ۹ – غیرفعال کردن یا تنظیم مجدد فایروال

اگر تصمیم دارید که از فایروال UFW استفاده نکنید، می‌توانید آن را با این دستور غیرفعال کنید:

sudo ufw disable
Output
Firewall stopped and disabled on system startup

UFW ile oluşturduğunuz kurallar artık etkin olmayacak. Bunları daha sonra etkinleştirmeniz gerekirse, istediğiniz zaman etkinleştirebilirsiniz. sudo ufw etkinleştir Koşmak.

UFW kurallarını zaten yapılandırdıysanız ancak baştan başlamaya karar verdiyseniz, reset komutunu kullanabilirsiniz:

sudo ufw reset
Output
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20210729_170353'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210729_170353'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210729_170353'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210729_170353'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210729_170353'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210729_170353'

Bu, UFW'yi devre dışı bırakacak ve önceden tanımlanmış tüm kuralları kaldıracaktır. Bu, UFW ile yeni bir başlangıç yapmanızı sağlayacaktır. Varsayılan politikaları herhangi bir zamanda değiştirirseniz, orijinal ayarlarına geri dönmeyeceğini unutmayın.


Çözüm

Güvenlik duvarınız artık (en azından) SSH bağlantılarına izin verecek şekilde yapılandırıldı. Sunucunuzun işlevsel ve güvenli kalması için, sunucunuzun ihtiyaç duyduğu diğer gelen bağlantılara izin verirken, gereksiz bağlantıları kısıtladığınızdan emin olun.


Yaygın UFW yapılandırmaları hakkında daha fazla bilgi için öğreticiye bakın

UFW Temelleri: Linux Güvenliği için Ortak Güvenlik Duvarı Kuralları ve Komutları

Buna bir bak.

 

 

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz

CentOS 6/7'ye IBSng nasıl kurulur

CentOS 6/7'de IBSng Kurulum Eğitimi Bu makalede, centOS 6/7'de IBSng kurulum eğitimi size yardımcı olmak için sağlanmıştır…