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/ufwArdından IPV6 değerinin Evet olarak ayarlandığından emin olun. Aşağıdaki gibi görünmelidir:
IPV6=yesDosyayı 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 incomingOutput
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 listOutput
Available applications:
OpenSSHOpenSSH uygulama profilini etkinleştirmek için aşağıdaki komutu çalıştırın:
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:
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 22Output
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 2222Output
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 OpenSSHGelen 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.4Output
Rule addedAyrı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 addedBenzer ş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 22Output
Rule addedBelirli 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 addrOutput 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 80Output
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 3306Output
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 httpOutput
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.4Output
Rule addedBazı 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 25Output
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 numberedNumbered 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 2Output
Deleting:
allow 80
Proceed with operation (y|n)? y
Rule deletedBu 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 httpOutput
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 80Output
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 verboseUFW varsayılan olarak devre dışıysa, buna benzer bir şey göreceksiniz:
Output
Status: inactiveUFW 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 disableOutput
Firewall stopped and disabled on system startupUFW 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 resetOutput
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.









