CentOS ve Ubuntu'da Firewalld Nasıl Kurulur, Yapılandırılır ve Kullanılır


Firewalld (güvenlik duvarı arka plan programı), ağ (veya güvenlik duvarı) bölgeleri desteğiyle bir sistemin güvenlik duvarını dinamik olarak yönetmek için iptables hizmetine bir alternatiftir ve yapılandırmaları yönetmek için bir D-Bus arayüzü sağlar. Kullanımı ve yapılandırması kolaydır ve artık RHEL/CentOS, Fedora ve diğer bazı Linux dağıtımlarında varsayılan güvenlik duvarı yönetim aracıdır.

Bu makalede, sistem güvenlik duvarının firewalld ile nasıl yapılandırılacağını ve CentOS/RHEL 7 ve Ubuntu'da temel paket filtrelemenin nasıl uygulanacağını tartışacağız.

Firewalld Hakkında Temel Bilgiler

Güvenlik Duvarı üç katmandan oluşur:

  • Çekirdek katman: yapılandırmanın ve arka uçların (aşağıda listelenmiştir) yönetilmesinden sorumludur.
  • D-Bus arayüzü: Güvenlik duvarı yapılandırmasını değiştirmenin ve oluşturmanın birincil yolu.
  • arka uçlar: netfilter (güvenlik duvarı için kullanılan yerel çekirdek modülü) ile etkileşim için. Bunlar iptables, ip6tables, ebtables, ipset, nft, linnftables'ı içerir; ağ yöneticisi; ve modüller.

Ağ bağlantılarının veya arayüzlerinin güven düzeyini tanımlayan ağ/güvenlik duvarı bölgelerini uygulayarak güvenlik duvarı kurallarını yönetir. Desteklenen diğer güvenlik duvarı özellikleri arasında hizmetler, doğrudan yapılandırma (ham iptables sözdizimini doğrudan iletmek için kullanılır), IPSet'ler ve ICMP türleri bulunur.

Firewalld tarafından iki tür yapılandırma ortamı desteklenir:

  • yalnızca makine yeniden başlatılana veya güvenlik duvarı hizmeti yeniden başlatılana kadar etkili olan çalışma zamanı yapılandırması
  • Kaydedilen ve sürekli çalışan kalıcı yapılandırma.

Firewall-cmd komut satırı aracı, çalışma zamanını ve kalıcı yapılandırmayı yönetmek için kullanılır. Alternatif olarak, arka plan programıyla etkileşimde bulunmak için güvenlik duvarı yapılandırması grafik kullanıcı arayüzü (GUI) yapılandırma aracını kullanabilirsiniz.

Ayrıca güvenlik duvarı, diğer yerel hizmetlerin veya uygulamaların, kök ayrıcalıklarıyla çalışıyorlarsa, doğrudan güvenlik duvarı kurallarında değişiklik talep etmeleri için iyi tanımlanmış bir arayüz sunar.

Güvenlik duvarı için genel yapılandırma dosyası /etc/firewalld/firewalld.conf adresinde bulunur ve güvenlik duvarı özellikleri XML biçiminde yapılandırılır.

Önemli Firewalld Özelliklerini Anlamak

Firewalld'un temel özelliği ağ/güvenlik duvarı bölgeleridir. Diğer tüm özellikler bir bölgeye sınırlıdır. Güvenlik duvarı bölgesi, bir bağlantı, arayüz veya kaynak adresi bağlamanın güven düzeyini tanımlar.

Varsayılan yapılandırma, güvenilmeyenden güvenilene kadar bölgelerin varsayılan güven düzeyine göre sıralanmış bir dizi önceden tanımlanmış bölgeyle birlikte gelir: bırakma, engelleme, genel, harici, dmz, iş, ev, dahili ve güvenilir. /usr/lib/firewalld/zones dizini altında saklanan dosyalarda tanımlanırlar.

CLI istemcisini kullanarak özel bölgelerinizi yapılandırabilir veya ekleyebilirsiniz ya da /etc/firewalld/zones içinde mevcut dosyalardan bir bölge dosyası oluşturabilir veya kopyalayabilir ve düzenleyebilirsiniz.

Firewalld kapsamındaki bir diğer önemli kavram da hizmetlerdir. Bir hizmet, bağlantı noktaları ve protokoller kullanılarak tanımlanır; bu tanımlar, bir web sunucusu veya uzaktan erişim hizmeti gibi belirli bir ağ hizmetini temsil eder. Hizmetler, /usr/lib/firewalld/services/ veya /etc/firewalld/services/ dizini altında depolanan dosyalarda tanımlanır.

Temel iptables/ip6tables/ebtables kavramlarını biliyorsanız, güvenlik duvarına doğrudan erişim sağlamak için doğrudan arayüzü (veya yapılandırmayı) da kullanabilirsiniz. Ancak iptables bilgisi olmayanlar için, IPv4 ve IPv6 için daha karmaşık güvenlik duvarı kuralları oluşturmak amacıyla zengin dili kullanabilirsiniz.

Linux'ta Firewalld Paketi Nasıl Kurulur

CentOS 7'de firewalld paketi önceden yüklenmiş olarak gelir ve aşağıdaki komutu kullanarak doğrulama yapabilirsiniz.

rpm -qa firewalld

Ubuntu 16.04 ve 18.04'te, gösterildiği gibi varsayılan paket yöneticisini kullanarak yükleyebilirsiniz.

sudo apt install firewalld

Linux'ta Firewalld Hizmeti Nasıl Yönetilir

Güvenlik Duvarı, systemctl komutu aracılığıyla yönetilebilen normal bir systemd hizmetidir.

 
sudo systemctl start firewalld	#start the service for the mean time
sudo systemctl enable firewalld	#enable the service to auto-start at boot time
sudo systemctl status firewalld	#view service status

firewalld hizmetini başlattıktan sonra, firewall-cmd aracını kullanarak arka plan programının çalışıp çalışmadığını da kontrol edebilirsiniz (aktif olmaması durumunda, bu komut "değil" çıktısını verecektir). koşma ").

sudo firewall-cmd --state

Herhangi bir değişikliği kalıcı olarak kaydederseniz, güvenlik duvarını yeniden yükleyebilirsiniz. Bu, güvenlik duvarı kurallarını yeniden yükleyecek ve durum bilgilerini koruyacaktır. Geçerli kalıcı yapılandırma, yeni çalışma zamanı yapılandırması haline gelecektir.

sudo firewall-cmd --reload

Firewalld'da Güvenlik Duvarı Bölgeleriyle Nasıl Çalışılır

Mevcut tüm güvenlik duvarı bölgelerinin ve hizmetlerinin bir listesini almak için bu komutları çalıştırın.

sudo firewall-cmd --get-zones
sudo firewall-cmd --get-services

Varsayılan bölge, başka bir bölgeye açıkça sınırlanmayan her güvenlik duvarı özelliği için kullanılan bölgedir. Ağ bağlantıları ve arayüzler için varsayılan bölge setini çalıştırarak alabilirsiniz.

sudo firewall-cmd --get-default-zone

Varsayılan bölgeyi örneğin harici olarak ayarlamak için aşağıdaki komutu kullanın. --permanent seçeneğinin eklenmesinin yapılandırmayı kalıcı olarak ayarladığını (veya kalıcı yapılandırma ortamından bilgilerin sorgulanmasını mümkün kıldığını) unutmayın.

sudo firewall-cmd --set-default-zone=external
OR
sudo firewall-cmd --set-default-zone=external --permanent
sudo firewall-cmd --reload 

Şimdi bir bölgeye nasıl arayüz ekleyeceğimize bakalım. Bu örnek, kablosuz ağ bağdaştırıcınızı (wlp1s0) ev alanlarında kullanılan Zone Home'a nasıl ekleyeceğinizi gösterir.

sudo firewall-cmd --zone=home --add-interface=wlp1s0

Bir arayüz yalnızca tek bir bölgeye eklenebilir. Başka bir bölgeye taşımak için gösterildiği gibi --change-interface anahtarını kullanın veya –remove-interface anahtarını kullanarak önceki bölgeden kaldırın ve ardından ekleyin yeni bölgeye.

Genel bir WI-FI ağına bağlanmak istediğinizi varsayarsak, kablosuz arayüzünüzü şu şekilde tekrar genel alana taşımalısınız:

sudo firewall-cmd --zone=public --add-interface=wlp1s0
sudo firewall-cmd --zone=public --change-interface=wlp1s0

Aynı anda birçok bölgeyi kullanabilirsiniz. Arayüzler, hizmetler, bağlantı noktaları, protokoller gibi etkinleştirilmiş özelliklere sahip tüm aktif bölgelerin bir listesini almak için şunu çalıştırın:

sudo firewall-cmd --get-active-zones

Önceki noktaya ilişkin olarak, Belirli bir bölge hakkında, yani burada eklenen veya etkinleştirilen her şey hakkında daha fazla bilgi bulmak istiyorsanız, şu komutlardan birini kullanın:

sudo firewall-cmd --zone=home --list-all
OR
sudo firewall-cmd --info-zone public

Bir başka yararlı seçenek de size kalıcı bölgenin hedefini gösteren --get-target'tır. Hedef aşağıdakilerden biridir: varsayılan, KABUL, BIRAK, REJECT. Çeşitli bölgelerin hedefini kontrol edebilirsiniz:

sudo firewall-cmd --permanent --zone=public --get-target  
sudo firewall-cmd --permanent --zone=block --get-target  
sudo firewall-cmd --permanent --zone=dmz --get-target  
sudo firewall-cmd --permanent --zone=external --get-target
sudo firewall-cmd --permanent --zone=drop --get-target

Firewalld'da Bağlantı Noktaları Nasıl Açılır ve Engellenir

Güvenlik duvarında bir bağlantı noktası (veya bağlantı noktası/protokol kombinasyonu) açmak için onu --add-port seçeneğiyle bir bölgeye eklemeniz yeterlidir. Bölgeyi açıkça belirtmezseniz varsayılan bölgede etkinleştirilecektir.

Aşağıdaki örnek, HTTP ve HTTPSüzerinden gelen web trafiğine izin vermek için 80 ve 443 bağlantı noktasının nasıl ekleneceğini gösterir. > sırasıyla protokoller:

sudo firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=443/tcp

Ardından, güvenlik duvarını yeniden yükleyin ve ortak bölgedeki etkin özellikleri bir kez daha kontrol edin, yeni eklenen bağlantı noktalarını görebilmeniz gerekir.

sudo firewall-cmd --reload
sudo firewall-cmd --info-zone public

Güvenlik duvarındaki bir bağlantı noktasını engellemek veya kapatmak da aynı derecede kolaydır; --remove-port seçeneğiyle bağlantı noktasını bir bölgeden kaldırmanız yeterlidir. Örneğin, genel bölgedeki 80 ve 443 bağlantı noktalarını kapatmak için.

sudo firewall-cmd --zone=public --permanent --remove-port=80/tcp --remove-port=443/tcp

Port veya port/protokol kombinasyonunu kullanmak yerine bir sonraki bölümde açıklandığı gibi portun atandığı servis adını kullanabilirsiniz.

Firewalld'da Hizmetler Nasıl Açılır ve Engellenir

Güvenlik duvarında bir hizmeti açmak için --add-service seçeneğini kullanarak hizmeti etkinleştirin. Bölge atlanırsa varsayılan bölge kullanılacaktır.

Aşağıdaki komut, genel alanda http hizmetini kalıcı olarak etkinleştirecektir.

sudo firewall-cmd --zone=public --permanent --add-service=http 
sudo firewall-cmd --reload 

--remove-service seçeneği bir hizmeti devre dışı bırakmak için kullanılabilir.

sudo firewall-cmd --zone=public --permanent --remove-service=http 
sudo firewall-cmd --reload 

Firewalld Kullanarak IP Maskelemeyi Etkinleştirme ve Devre Dışı Bırakma

IP Maskeleme (IPMASQ veya MASQ olarak da bilinir) bir NAT'tır (Ağ Adresi Çevirisi) Linux ağında, özel IP adreslerine sahip ana bilgisayarlarınızın, Linux sunucunuzun (IPMASQ ağ geçidi) atanmış genel IP adresini kullanarak İnternet ile iletişim kurmasına olanak tanıyan Linux ağındaki mekanizma.

Bire-çok eşlemedir. Görünmez ana bilgisayarlarınızdan gelen trafik, internetteki diğer bilgisayarlara sanki Linux sunucunuzdan geliyormuş gibi görünecektir.

IP maskelemeyi istediğiniz bir bölgede (örneğin genel bölge) etkinleştirebilirsiniz. Ancak bunu yapmadan önce, öncelikle maskelemenin etkin olup olmadığını kontrol edin ("hayır" devre dışı olduğu anlamına gelir ve "evet " aksi anlamına gelir).

sudo firewall-cmd --zone=public --query-masquerade
sudo firewall-cmd --zone=public --add-masquerade

Maskelemenin tipik bir kullanım durumu, bağlantı noktası yönlendirmeyi gerçekleştirmektir. Uzak bir makineden dahili ağınızdaki 10.20.1.3 IP'sine sahip bir ana bilgisayara SSH yapmak istediğinizi varsayalım; bu IP'de sshd arka plan programı 5000 bağlantı noktasını dinliyor.

Linux sunucunuzdaki 22 numaralı bağlantı noktasına yapılan tüm bağlantıları, aşağıdakileri vererek hedef ana makinenizdeki amaçlanan bağlantı noktasına iletebilirsiniz:

sudo firewall-cmd --zone=public --add-forward-port=port=22=proto=tcp:toport=5000:toaddr=10.20.1.3

Bir bölgede maskelemeyi devre dışı bırakmak için --remove-masquerade anahtarını kullanın.

sudo firewall-cmd --zone=public --remove-masquerade

Firewalld'da IMCP Mesajını Etkinleştirme ve Devre Dışı Bırakma

ICMP (İnternet Kontrol Mesajı Protokolü) mesajları, bilgi istekleri veya bilgi isteklerine verilen yanıtlar veya hata durumlarıdır.

ICMP mesajlarını güvenlik duvarında etkinleştirebilir veya devre dışı bırakabilirsiniz, ancak bundan önce ilk olarak desteklenen tüm icmp türlerini listeleyin.

sudo firewall-cmd --get-icmptypes

İstediğiniz blok türünü eklemek veya kaldırmak için.

sudo firewall-cmd --zone=home --add-icmp-block=echo-reply
OR
sudo firewall-cmd --zone=home --remove-icmp-block=echo-reply

--list-icmp-blocks anahtarını kullanarak bir bölgeye eklenen tüm icmp türlerini görüntüleyebilirsiniz.

sudo firewall-cmd --zone=home --list-icmp-blocks

Ham iptables Komutlarını İletmek için Doğrudan Arayüz Nasıl Kullanılır

Firewall-cmd ayrıca güvenlik duvarına daha doğrudan erişmeniz için doğrudan seçenekler (--direct) sağlar. Bu, iptables hakkında temel bilgiye sahip olanlar için faydalıdır.

Önemli: Doğrudan seçenekleri yalnızca yukarıda açıklanan normal firewall-cmd seçeneklerini kullanmanın mümkün olmadığı durumlarda son çare olarak kullanmalısınız.

Burada --add-rules anahtarını kullanarak ham iptables kuralının nasıl aktarılacağına dair bir örnek verilmiştir. --add-rule öğesini --remove-rule ile değiştirerek bu kuralları kolayca kaldırabilirsiniz:

sudo firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 80 -j ACCEPT

iptables hakkında daha fazla bilgi için şu kılavuza bakın: Linux'taki Hizmetlere Uzaktan Erişimi Etkinleştirmek için Iptables Güvenlik Duvarı Nasıl Kurulur.

iptables sözdizimine aşina değilseniz, daha sonra açıklanacağı gibi anlaşılması kolay bir şekilde daha karmaşık güvenlik duvarı kuralları oluşturmak için güvenlik duvarıd'ın "zengin dilini" tercih edebilirsiniz.

Firewalld'da Zengin Dil Nasıl Kullanılır?

Zengin dil (zengin kurallar olarak da bilinir), IPv4 ve IPv6 için daha karmaşık güvenlik duvarı kuralları eklemek amacıyla kullanılır. iptables sözdizimi bilgisi olmadan.

Ele aldığımız bölge özelliklerini (hizmet, bağlantı noktası, icmp bloğu, maskeli balo ve ileri bağlantı noktası) genişletir. Kaynak ve hedef adreslerini, günlüğe kaydetmeyi, eylemleri ve günlükler ve eylemler için sınırlamaları destekler.

--add-rich-rule zengin kurallar eklemek için kullanılır. Bu örnek, denetim kullanılarak dakikada 1 hizmet http ve günlük için yeni IPv4 ve IPv6 bağlantılarına nasıl izin verileceğini gösterir:

sudo firewall-cmd --add-rich-rule='rule service name="http" audit limit value="1/m" accept'

Eklenen kuralı kaldırmak için --add-rich-rule seçeneğini --remove-rich-rule ile değiştirin.

sudo firewall-cmd --remove-rich-rule='rule service name="http" audit limit value="1/m" accept'

Bu özellik aynı zamanda belirli bir IP adresinden gelen trafiğin engellenmesine veya izin verilmesine de olanak tanır. Aşağıdaki örnek, 10.20.1.20 IP'sinden gelen bağlantıların nasıl reddedileceğini gösterir.

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.254" reject'

Firewalld'da Panik Modu Nasıl Etkinleştirilir ve Devre Dışı Bırakılır

Panik modu, güvenlik duvarı altında bulunan, tüm gelen ve giden paketlerin bırakıldığı ve etkin bağlantıların etkinleştirildikten sonra sona erdiği özel bir moddur.
Ağ ortamınıza yönelik bir tehdidin ortaya çıktığı acil durumlarda bu modu etkinleştirebilirsiniz.

Panik modunu sorgulamak için --query-panic seçeneğini kullanın.

sudo firewall-cmd --query-panic

Panik modunu etkinleştirmek için --panic-on seçeneğini kullanın. Gösterildiği gibi ping komutunu kullanarak çalışıp çalışmadığını test edebilirsiniz. Paket bırakıldığı için www.google.com adı çözümlenemiyor, dolayısıyla hata görüntüleniyor.

sudo firewall-cmd --panic-on
ping -c 2 www.google.com

Panik modunu devre dışı bırakmak için --panic-off seçeneğini kullanın.

sudo firewall-cmd --panic-off

Güvenlik Duvarı Nasıl Kilitlenir

Unutmayın, güvenlik duvarı ile ilgili temel bilgiler bölümünde, yerel uygulama veya hizmetlerin root ayrıcalıklarıyla çalışıyorlarsa güvenlik duvarı yapılandırmasını değiştirebileceklerinden bahsetmiştik. Hangi uygulamaların güvenlik duvarı değişiklikleri isteyebileceğini, kilitleme beyaz listesinde belirterek kontrol edebilirsiniz.

Bu özellik varsayılan olarak kapalıdır; --lockdown-on veya --lockdown anahtarıyla alıcı olarak etkinleştirebilir veya devre dışı bırakabilirsiniz.

sudo firewall-cmd --lockdown-on
OR
sudo firewall-cmd --lockdown-off

Kilitlemeyi etkinleştirdiğinizde, güvenlik duvarı-cmd'si kilitleme beyaz listesinde bulunmayabileceğinden, ana yapılandırma dosyasını düzenleyerek bu özelliği etkinleştirmenizin veya devre dışı bırakmanızın önerildiğini unutmayın.

sudo vim /etc/firewalld/firewalld.conf

Kilitleme parametresini bulun ve değerini hayır (kapalı anlamına gelir) yerine evet (açık anlamına gelir) olarak değiştirin.

Lockdown=yes

Bu ayarı kalıcı hale getirmek için güvenlik duvarını yeniden yükleyin.

sudo firewall-cmd --reload
Özet

Firewalld, iptables'ı arka uç olarak kullanan iptables hizmetinin yerine geçen, kullanımı kolay bir hizmettir. Bu yazımızda, güvenlik duvarı paketinin nasıl kurulacağını gösterdik, güvenlik duvarının önemli özelliklerini anlattık ve bunların çalışma zamanı ve kalıcı konfigürasyon ortamlarında nasıl yapılandırılacağını anlattık.

Herhangi bir sorunuz veya yorumunuz varsa aşağıdaki yorum formunu kullanarak bize ulaşmaktan çekinmeyin. Daha fazla bilgi için güvenlik duvarı kılavuz sayfasına (man güvenlik duvarı) veya proje web sitesindeki güvenlik duvarı belgelerine başvurabilirsiniz.