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.