
Bilgi işlemde iyi bir Güvenlik Duvarı sistemi, ağ güvenlik sistemlerine yetkisiz erişimi engelleyebilir. İşletmeler ve kuruluşlar, işlerinin ne kadar önemli olduğuna bağlı olarak siber güvenlik altyapılarına önemli miktarda para yatırır.
Bu yazıda, CentOS 7’de mevcut FirewallD güvenlik duvarı hizmetinin temellerini göreceğiz. Sistemde dolaşan her paketi kontrol etmek için doğrudan çekirdek modülünün içine yerleştirilmiş olan Netfilter adlı son derece güçlü bir filtreleme sistemi ile birlikte geliyor. Bu, hedefe ulaşmadan önce programlı olarak gelen, giden veya iletilen ağ paketlerinden herhangi birini inceleyebilir, değiştirebilir, reddedebilir veya bırakabilir. Centos-7’den itibaren firewalld, ana bilgisayar tabanlı güvenlik duvarı hizmetini yönetmek için varsayılan bir araç haline geldi. firewalld’nin arka plan programı firewalld paketinden yüklenir ve işletim sisteminin tüm temel kurulumlarında kullanılabilir, ancak minimum kurulumda bulunmaz.
“iptables” Yerine FirewallD Kullanmanın Avantajları:
- Güvenlik duvarı hizmetini yeniden yüklemek veya yeniden başlatmak için çalışma zamanında yapılan herhangi bir yapılandırma değişikliği gerekli değildir.
- Tüm ağ trafiğini bölgelere ayırarak güvenlik duvarı yönetimini basitleştirir.
- Ağ ortamını değiştirmek için sistem başına birden fazla güvenlik duvarı yapılandırması ayarlanabilir. Dizüstü bilgisayar kullanıcıları gibi mobil cihazlar için çok faydalı olacaktır.
- Güvenlik duvarı ayarlarını etkileşime sokmak korumak için D-Bus mesajlaşma sistemini kullanır
CentOS 7 veya üzeri sürümlerde hala klasik iptables’ı kullanabiliriz. iptables kullanmak için firewalld hizmetini durdurmamız ve devre dışı bırakmamız gerekiyor. Her ikisini (güvenlik duvarı ve iptables) birlikte kullanmak, birbirleriyle uyumsuz oldukları için sistemi bozar. Klasik iptables’ı kullanmaya devam etmek için bazı özel nedenlerimiz olmadıkça, güvenlik duvarı hizmetinizi yönetmek için her zaman firewalld kullanmanız önerilir.
Bildiğimiz gibi, Firewalld güçlü bir filtreleme sistemi ile tasarlanmıştır ve ayrıca güvenlik duvarı yönetimini yönetmek için daha esnektir. Bu tasarımdan yararlanmak için güvenlik duvarı, gelen trafiği kaynak adres tarafından tanımlanan arabirimlerde bölgelere ayırır. Her bölge, trafiği belirtilen kriterlere göre yönetmek için tasarlanmıştır. Varsayılan bölge genel olarak ayarlanacak ve herhangi bir değişiklik yapılmadığı takdirde ilgili ağ arayüzleri halka eklenecektir. Önceden tanımlanmış tüm bölge kuralları iki konumda depolanır: Sistem tarafından belirlenen bölge kuralları ‘/usr/lib/firewalld/zones/‘ altında ve kullanıcı tarafından belirtilen bölge kuralları /etc/firewalld/zones/ altında. Sistem bölgesi yapılandırma dosyasında herhangi bir değişiklik yapılmışsa, otomatik olarak /etc/firewalld/zones/ dizinine kopyalanacaktır.
Bu kılavuz, güvenlik duvarı-cmd komutunun RHEL/CentOS 7’de nasıl kullanılacağına ilişkin temel güvenlik duvarı hizmeti bilginizi güçlendirmenize yardımcı olacaktır.
Önkoşullar:
İşletim Sistemi : CentOS 7 veya üzeri sürümler
paket : firewalld
Kullanıcı hesabı : kök kullanıcı veya sudo ayrıcalıklarına sahip kullanıcı hesabı
Tüm yönetim komutlarını root yerine sudo ayrıcalığı ile çalıştırmanız önerilir
Güvenlik duvarı ayarlarınızı üç şekilde yapılandırabilirsiniz:
a. ‘/etc/firewalld‘ yapılandırma dosyalarında doğrudan düzenleme
b. Grafik arayüz ‘güvenlik duvarı yapılandırma’ aracı
c. Terminal’de komut satırı ‘güvenlik duvarı-cmd’
Not: Bu demoda sadece ‘firewall-cmd’ komutuna odaklanacağız. Aşağıdaki örneklerin tümü RHEL/CentOS 7.6 üzerinde test edilmiştir:
Adım 1: firewallD Hizmetini kurun ve etkinleştirin
Öncelikle paketin en son güncel sürümünü güncelleyelim.
sudo yum update -yNot: Firewalld, CentOS 7’nin tüm temel kurulumlarında mevcut olacak ancak minimum kurulumda değil, bu durumda kurulum için aşağıdaki komutu kullanabiliriz:
sudo yum install firewalld -y
Hizmeti başlatmak ve etkinleştirmek için aşağıdaki komutları kullanın
sudo systemctl start firewalld.service
sudo systemctl enable firewalld.serviceAşağıdaki komutları kullanarak güvenlik duvarı hizmetinin durumunu doğrulayabilirsiniz:
sudo firewall-cmd --statesudo systemctl status firewalldAyrıntılı çıktı:
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running) since Sat 2020-04-18 22:39:56 IST; 2h 52min ago
Main PID: 759 (firewalld)
CGroup: /system.slice/firewalld.service
└─759 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Apr 18 22:39:56 localhost.localdomain systemd[1]: Started firewalld - dynamic...
Hint: Some lines were ellipsized, use -l to show in full.Adım2: Bölgeler
Firewalld farklı amaçlar için önceden tanımlanmış birkaç bölge ve hizmet sundu. Ana amaçlardan biri, güvenlik duvarı yönetimini daha kolay ele almaktır. Bu bölgelere ve hizmetlere dayanarak, bölgeye bazı özel kuralların kullanılmasına açıkça izin vermediği sürece, sisteme gelen her türlü trafiği engelleyebiliriz.
1. Firewalld’de mevcut tüm bölgeler nasıl kontrol edilir?
sudo firewall-cmd --get-zones
Not: Bunlar firewalld’deki varsayılan önceden tanımlanmış bölgelerdir. Tüm bu kurallar çeşitli amaçlar için kullanılabilir.
Lütfen güven düzeyine göre sıralanmış aşağıdaki önceden tanımlanmış bölgelere bakın:

Not: Mevcut tüm bölge kurallarını ve kullanım amaçlarını listeledik. firewalld.zone(5) ile ilgili daha fazla bilgi için kılavuz sayfasına bakın.
2. Varsayılan bölgenin hangisi olduğunu nasıl öğrenebilirim?
firewall-cmd --get-default-zoneNot: Yukarıdaki çıktıya dayanarak, genel bölgenin varsayılan bölge olarak işaretlendiğini görebilirsiniz. Gereksinimlerimize göre değiştirebiliriz. Bunu önümüzdeki örneklerde daha ayrıntılı tartışacağız.
3. Aktif bölgelerin ve ilgili ağ arayüzlerinin listesi nasıl bulunur?
firewall-cmd --get-active-zonesÇıktı:
public
interfaces: enp1s0Not: Yukarıdaki çıktıda, genel bölgenin aktif olduğunu ve “enp1s0” ağ arayüzü ile ilişkili olduğunu görebilirsiniz. Arayüzlerin hiçbiri belirli bir bölgeye belirtilmemişse, otomatik olarak varsayılan bölgeye eklenecektir.
4. Aktif açık alanda herhangi bir kural listelenip listelenmediğini nasıl öğrenebilirim?
sudo firewall-cmd --list-all --zone="public"
Not: Yukarıdaki çıktı, genel bölgenin aktif olduğunu ve varsayılan olarak ayarlandığını gösterir, ağ arayüzü “enp1so” aktif bölge ile ilişkilendirilir. Bu bölgede, güvenlik duvarı hizmeti aracılığıyla dhcpv6-client ve ssh’ye izin verilir.
5. Mevcut tüm bölgelerin listesi nasıl kontrol edilir?
sudo firewall-cmd --list-all-zonesNot: Önceki örneğe benzer şekilde, burada ayrıca mevcut her bölgenin ayrıntılı bir yapılandırma sayfası ayrı ayrı listelenecektir. Çıktı listesi oldukça uzun olacağından lütfen kendiniz kontrol edin.
6. Varsayılan bölge belirli bölgelere nasıl değiştirilir?
Yeni bölgeye geçmeden önce mevcut bölgeyi kontrol edelim.
sudo firewall-cmd --get-default-zoneÇıktı:
publicNot: Çıktıda, genel bölgenin varsayılan olarak ayarlandığını görebilirsiniz ve şimdi bölgeyi genelden işe değiştirmeye çalışalım.
sudo firewall-cmd --set-default-zone=workNot: Gördüğünüz gibi, yukarıdaki komutun çıktısı başarılı oldu. Aynı şeyi doğrulayalım.
sudo firewall-cmd --get-default-zoneÇıktı:
work <==7. Ağ arayüzünü bir bölgeden diğerine nasıl değiştirebilirim?
Not: Sisteminizde iki ağ arabirimi varsa “enp1s0 ve enp1s1” diyelim. Varsayılan olarak, tüm arayüzler varsayılan bölgeye atanacaktır, aşağıdaki komutu kullanarak arayüzü başka bir bölgeye değiştirebilirsiniz.
sudo firewall-cmd --zone=internal --change-interface=enp1s1Not: Aşağıdaki komutu kullanarak aynı şeyi doğrulayabilirsiniz:
sudo firewall-cmd --get-active-zones8. Özel bir güvenlik duvarı bölgesi nasıl oluşturulur?
Not: Bildiğimiz gibi, sistem tarafından belirlenen tüm yapılandırma dosyaları "/usr/lib/firewalld/zones" konumunda ve kullanıcı tarafından belirlenen dosyalar "/etc/firewalld/zones" konumunda. Özelleştirilmiş bir bölge dosyası oluşturmak için aşağıdaki komutu kullanın. 80 ve 22 numaralı bağlantı noktalarını kullanarak hem ssh hem de apache hizmetlerine izin vermek için. Yeni dosyanın kullanıcı tanımlı bir konum altında .xml biçiminde kaydedilmesi gerektiğinden emin olun. Şu anda, ad bölgesi dosyasının uzunluğu yalnızca 17 karakterle sınırlı olacaktır.
sudo vi /etc/firewalld/zones/murhassecure.xml<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>murhassecure</short>
<description>For use in Corporate areas.</description>
<service name="apache"/>
<service name="ssh"/>
<port protocol="tcp" port="80"/>
<port protocol="tcp" port="22"/>
</zone>kaydet ve çık.
Not: Güvenlik duvarı hizmetini yeniden yükleyin:
sudo firewall-cmd --reloadÇıktı:
successŞimdi, firewalld’deki mevcut bölgeleri tekrar kontrol edin.
sudo firewall-cmd --get-zonesÇıktı:
block dmz drop external home internal "murhassecure" public trusted work
Not: Yukarıdaki komutu kullanarak apache ve ssh hizmetini yalnızca varsayılan olarak etkinleştirmek için yeni bir (murhassecure) bölgesi oluşturabiliriz. Dosyayı oluşturduktan sonra, bölgeyi firewalld’de etkinleştirmek için firewalld hizmetini “yeniden yüklememiz” gerekir Unutmayın: Mevcut bölge dosyalarınızda herhangi bir değişiklik/güncelleme yaptıktan sonra her zaman firewalld hizmetinizi sırayla yeniden yükleyin. etkinleştirmek için aksi takdirde değişiklikler güvenlik duvarında etkilenmeyecektir.
3. Adım: Hizmetler
Benzer şekilde, bir güvenlik duvarının “Hizmetler” adında başka bir bileşeni vardır. Bu hizmetler, güvenlik duvarı ayarlarındaki trafik kurallarını yönetmek için bölge dosyasında kullanılabilir. Aşağıdaki listeden, bölge dosyalarının varsayılan yapılandırmasında kullanılan önceden tanımlanmış her “Hizmetler”.

9. Mevcut tüm hizmetler firewalld’de nasıl listelenir?
sudo firewall-cmd --get-servicesÇıktı:
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-serverNot: Firewalld, çeşitli amaçlar için bir dizi hizmetle birlikte gelir. Yukarıdaki çıktıda, mevcut tüm hizmetlerin tam listesini görebilirsiniz.
10. Belirli bir bölgedeki tüm mevcut hizmetler nasıl listelenir?
sudo firewall-cmd --zone=work --list-servicesÇıktı:
dhcpv6-client sshNot: Çıktı, “çalışma” bölgesinde yalnızca iki hizmetin etkinleştirildiğini gösterir.
11. Varolan bir hizmet varsayılan bölgeye nasıl eklenir?
sudo firewall-cmd --add-service=sambaÇıktı:
successNot: Bu örnekte, varsayılan bölgeye samba adlı mevcut bir hizmeti ekledim. Aşağıdaki komutu kullanarak aynı şeyi doğrulayabilirsiniz:
sudo firewall-cmd --zone=public --list-servicesÇıktı:
dhcpv6-client samba sshNot: Benzer şekilde, varsayılan olandan farklı bir bölgeye bir servis ekleyebiliriz. Aşağıdaki komutu kullanın:
sudo firewall-cmd --zone=internal --add-service=ftpAdım 4: Güvenlik Duvarı Çalışma Zamanı ve Kalıcı
Varsayılan olarak firewalld, kalıcı ve çalışma zamanı (anında) olmak üzere iki ayrı modu destekler. Güvenlik duvarını başlattığımızda, tüm kalıcı yapılandırma dosyalarını çalışma zamanına yükler. Ekleme veya güncelleme yapma şansınız, çalışma zamanı yapılandırmasına uygulanacaktır ve kalıcı yapılandırmada otomatik olarak etkinleştirilmeyecektir.
Bunu kalıcı bir kural haline getirmek için ‘--permanent‘ parametresini kullanmamız gerekiyor. Güvenlik duvarında bu değişiklikleri etkinleştirmek için güvenlik duvarı hizmetini yeniden yüklememiz veya yeniden başlatmamız gerekiyor.
12. Bir hizmet kalıcı olarak nasıl eklenir?
sudo firewall-cmd --permanent --add-service=ftpÇıktı:
successsudo firewall-cmd --reloadÇıktı:
successNot: Unutmayın ne zaman ‘–kalıcı’ bir bayrak kullanırsanız güvenlik duvarı hizmetini yeniden yüklemeyi unutmayın.
13. Çalışma zamanı ayarlarımı kalıcı hale nasıl geçiririm?
sudo firewall-cmd --runtime-to-permanentÇıktı:
successNot: Genellikle, tüm kuralları çalışma zamanı ortamında test ederiz, kurallar başarılı bir şekilde çalıştığında, onları kalıcı hale getirmek için ‘–kalıcı’ seçeneğini kullanırız. Burada, tüm çalışma zamanı ayarlarını tek seferde kalıcı bir moda geçirmek için yukarıdaki komutu kullanabiliriz. Güvenlik duvarı kurulumu etkili değilse, bu kuralların kalıcı yapılandırmada çalışmasını sağlamak için güvenlik duvarı hizmetini yeniden yükleyin/yeniden başlatın.
Adım 5: Bağlantı Noktası
Güvenlik duvarı, ağ bağlantı noktasını doğrudan kullanmamıza izin verir. İşin güzel yanı, sisteme belirli bir servis yüklemeden bile güvenlik duvarında ilgili portu açıp kapatabiliyoruz.
14. Kamusal alanda samba hizmeti için bir liman nasıl açılır?
sudo firewall-cmd --zone=public --add-port=137/udp
sudo firewall-cmd --zone=public --add-port=138/udp
sudo firewall-cmd --zone=public --add-port=139/tcp
sudo firewall-cmd --zone=public --add-port=445/tcpÇıktı:
successNot: Yukarıdaki komutu kullanarak samba servisleri için portu başarıyla açtık. Aynı doğrulamak için.
sudo firewall-cmd --list-portsÇıktı:
137/udp 138/udp 139/tcp 445/tcpNot: Başarılı bir şekilde test ettikten sonra, bu kurallarla güvenlik duvarı için kalıcı olarak devam etmek istiyorsanız, yukarıdaki komutla birlikte ‘–permanent’ bayrağını kullanın veya çalışma zamanını kalıcı bir komut olarak kullanın ve hizmeti yeniden yüklemeyi unutmayın.
6. Adım: Zaman Aşımı
Firewalld’ın Timeout adlı başka bir ilginç özelliği daha var. Bu işlev, birçok sistem yöneticisinin çalışma zamanı ayarlarına hızlı bir kural eklemesine yardımcı olacaktır. Örneğin, bir kullanıcı FTP hizmeti aracılığıyla sunucudan bir dosya indirmek isterse. Bu sadece bir kerelik bir işlem olduğundan, kalıcı kurallar gerekli değildir. Bir dosyanın indirilmesi 2-5 dakika kadar sürebilir (dosya boyutuna göre değişebilir). Bizim durumumuzda, FTP hizmetine 5 dakikalığına izin verebiliriz ve verilen sürenin ardından otomatik olarak bağlantı kesilir.
15. $ sudo firewall-cmd --zone=public --add-service=ftp --timeout=5mNot: Zaman aşımını saniye (s), dakika (m) veya saat (h) olarak belirtebiliriz.




