Giriş
Firewalld birçok Linux dağıtımı için mevcut olan bir güvenlik duvarı yönetim çözümüdür. Linux çekirdeği tarafından sağlanan iptables paket filtreleme sistemine bir arayüz görevi görür. Bu kılavuzda, sunucunuz için bir güvenlik duvarını nasıl yapılandıracağınızı öğreneceksiniz. Ayrıca size firewall-cmd yönetim aracıyla güvenlik duvarını yönetmenin temellerini de göstereceğiz.
Firewalld Temelleri
FirewallD, iptables'ın zincir ve kuralları yerine bölgeler (zones) ve hizmetler (services) kavramlarını kullanır. Yapılandırdığınız bölgelere ve hizmetlere bağlı olarak, sisteme gelen ve sistemden giden hangi trafiğe izin verilip verilmeyeceğini kontrol edebilirsiniz. FirewallD, firewall-cmd komut satırı aracı kullanılarak yapılandırılabilir ve yönetilebilir.
Güvenlik Duvarınızı Kurun ve Başlangıçta Çalışacak Şekilde Etkinleştirin
Çoğu Linux dağıtımında firewallD zaten kuruludur. Ancak, kendiniz kurmanız gerekiyorsa aşağıdaki sözdizimini yazın:
|
1 |
sudo yum install firewalld |
firewalld kurulduktan sonra hizmeti etkinleştirebilir ve sunucunuzu yeniden başlatabilirsiniz:
|
1 2 |
sudo systemctl enable firewalld sudo reboot |
Ardından, sunucunuzu yeniden başlatın. Sunucuyu başarıyla yeniden başlattığınızda güvenlik duvarınız etkinleştirilecektir. Bundan sonra, hizmetin etkinleştirildiğini doğrulamak için aşağıdaki komutu kullanın:
|
1 |
sudo firewall-cmd --state |

Çıktı, varsayılan güvenlik duvarı ayarının çalıştığını gösterir.
Varsayılanları Kontrol Etme
Bu komutu kullanarak sunucu tarafından seçilen bölgeyi kontrol edebilirsiniz:
|
1 |
firewall-cmd --get-default-zone |

Şunu yazarak aktif bölgeyi doğrulayın:
|
1 |
firewall-cmd --get-active-zones |

Bu sözdizimini kullanarak genel (public) alana bağlı kuralları öğrenmek için varsayılan bölgenin yapılandırmasını yazdırın:
|
1 |
sudo firewall-cmd --list-all |

Çıktı, bu bölgenin hem varsayılan hem de aktif bölge olduğunu gösterir. Ayrıca eth0 ve eth1 arayüzlerinin bu bölgeye atandığını gösterir.
Alternatif Bölgeleri Kontrol Etme
Varsayılan ve aktif bölgelere ek olarak, keşfedebileceğiniz başka bölgeler de vardır. Mevcut tüm bölgeleri görmek için bu komutu girin:
|
1 |
firewall-cmd --get-zones |

Check the particular configuration assigned to a zone by adding –zone= parameter in the –list-all command:
|
1 |
sudo firewall-cmd --zone=home --list-all |

Arayüz Bölgesini Değiştirme
–change-interface seçeneğini kullanarak arayüz bölgesini kolayca değiştirebilirsiniz. Aşağıdaki komut eth1 arayüzünü çalışma alanına atayacaktır:
|
1 |
sudo firewall-cmd --zone=work --change-interface=eth1 |
Şunu yazarak değişiklikleri doğrulayabilirsiniz:
|
1 |
sudo firewall-cmd --get-active-zones |
Varsayılan Bölgeyi Değiştirme
Varsayılan bölgeyi değiştirmek için, –set-default-zone seçeneğini ve ardından varsayılan olarak ayarlamak istediğiniz bölgenin adını kullanın. Örneğin, varsayılan bölgeyi değiştirmek için aşağıdaki komutu çalıştırmalısınız:
|
1 |
sudo firewall-cmd --set-default-zone=home |
Ardından, değişiklikleri şununla doğrulayabilirsiniz:
|
1 |
sudo firewall-cmd --get-default-zone |
Uygulamalarınız için Kurallar Ayarlama
Hizmetler için güvenlik duvarı istisnaları tanımlamak için gereken temel bilgileri gözden geçirelim:
Bölgelerinize Hizmet Ekleme
En basit yol, ihtiyacınız olan bağlantı noktalarını veya hizmetleri kullandığınız bölgelere eklemektir. Aynı şekilde, mevcut tüm hizmetleri görmek için –get-services seçeneğini kullanabilirsiniz:
|
1 |
firewall-cmd --get-services |

Bir bölge için servisi –add-service = parametresi ile etkinleştirebilirsiniz. Bu işlem varsayılan bölgeyi veya –zone = parametresi ile tanımlanan herhangi bir bölgeyi hedef alır. Varsayılan olarak, yalnızca mevcut güvenlik duvarı oturumu yapılandırılır. –permanent bayrağını etkinleştirerek kalıcı bir güvenlik duvarı yapılandırması oluşturabilirsiniz. Örneğin, normal HTTP trafiği sağlayan bir web sunucusu çalıştırıyorsanız, aşağıdaki komutu girerek bu oturum için “public” bölgemizdeki arayüzler için bu trafiğe izin verebilirsiniz:
|
1 |
sudo firewall-cmd --zone=public --add-service=http |
Varsayılan bölgeyi değiştirmek istiyorsanız –zone = parametresini atlayabilirsiniz. İşlemin başarısını –list-all or –list-services işlemleriyle kontrol edebilirsiniz:
|
1 |
sudo firewall-cmd --zone=public --list-services |

Her şeyin beklendiği gibi çalıştığını doğruladıktan sonra, büyük olasılıkla yeniden başlatmanın ardından servisinizin hala kullanılabilir olmasını sağlamak için kalıcı güvenlik duvarı kurallarını değiştirmek isteyeceksiniz. Aşağıdaki sözdizimini girerek “public” bölgemizde kalıcı olarak değişiklik yapabiliriz:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --add-service=http çıktı: success |
–list-services işlemine –permanent bayrağını ekleyerek bunun başarılı olup olmadığını kontrol edebilirsiniz. Tüm kalıcı işlemler için sudo kullanmalısınız:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --list-services çıktı: dhcpv6-client http ssh |
–public” bölgeniz artık 80 numaralı bağlantı noktasında HTTP trafiğine izin veriyor. Aşağıdaki komutu kullanarak bunu mevcut oturuma ve kalıcı kural kümesine ekleyebilirsiniz:
|
1 2 3 |
sudo firewall-cmd --zone=public --add-service=https sudo firewall-cmd --zone=public --permanent --add-service=https |
Gereksinimlerinize uyan hiçbir servis yoksa, bu durumu ele almak için iki harika seçeneğiniz vardır:
- Bölgeleriniz için bir Port Açma
Özel uygulamanız için destek eklemenin en kolay yolu, her bölgede kullanılan portları açmaktır. Bu, açmanız gereken portlar için bir port veya port aralığı ve ilgili protokolü belirlemek kadar basittir. Örneğin, uygulamanız 5000 numaralı portta çalışıyorsa ve TCP kullanıyorsa, –add-port = parametresi ile bu oturum için “public” bölgesine ekleyebilirsiniz. Protokoller TCP veya UDP olabilir:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --add-port=5000/tcp çıktı: success |
İşlemin başarılı olduğunu kontrol etmek için –list-ports işlemini kullanın:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --list-ports Çıktı: 5000/tcp |
Ayrıca, aralıktaki başlangıç ve bitiş portlarını bir tire işaretiyle ayırarak seri arayüz için bir aralık belirtebilirsiniz. Örneğin, uygulamanız 4990 ila 4999 arasındaki UDP portlarını kullanıyorsa, aşağıdakini yazarak bunları “public” içinde açabilirsiniz:
|
1 |
sudo firewall-cmd --zone=public --add-port=4990-4999/udp |
Test ettikten sonra, muhtemelen bunları kalıcı güvenlik duvarına eklemek isteyeceğiz. Bunu aşağıdakileri yazarak yapabilirsiniz:
|
1 2 3 |
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd --zone=public --permanent --list-ports |

- Bir Servis Tanımlama
Bir servis, ilişkili bir ad ve açıklamaya sahip bağlantı noktaları (portlar) topluluğudur. Servisleri yönetmek bağlantı noktalarını yönetmekten daha kolaydır, ancak başlangıçta biraz çalışma gerektirir. Başlamanın en kolay yolu, mevcut bir betiği (/ usr / lib / firewalld / services içindeki) /etc/firewalld/services dizinine kopyalamaktır. Örneğin, SSH servis tanımını “example” servis tanımında kullanmak üzere aşağıdaki gibi kopyalayabilirsiniz. XML uzantısı hariç dosya adı, güvenlik duvarı servisleri listesindeki servis adını belirler:
|
1 |
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml |
Bu noktada, kopyalanan dosyadaki tanımı düzenleyebilirsiniz:
|
1 |
sudo vi /etc/firewalld/services/example.xml |
İlk olarak, dosya kopyaladığınız SSH tanımını içerir:
|
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Güvenli Kabuk (SSH) dir bir protokol için oturum açma giriş ve çalıştırma komutları üzerinde uzak makineler. Bu sağlar güvenli şifreli iletişim. Eğer siz planlıyorsanız üzerinde erişme sizin makine uzaktan aracılığıyla SSH üzerinden bir güvenlik duvarlı arayüz, etkinleştirin bu seçenek. Sizin ihtiyacınız var gerekli openssh-sunucu paketi kurulu için bu seçeneğin olması yararlı faydalı.</description> <port protocol="tcp" port="22"/> </service> |
Bu tanımın çoğu meta verilerden oluşur. <short> etiketlerindeki kısa servis adını değiştirmelisiniz. Bu, okunabilir bir servis adıdır. “example” servisimiz için TCP için 7777 ve UDP için 8888 numaralı bağlantı noktasını açmamız gerektiğini varsayalım. i tuşuna basarak INSERT moduna girip mevcut tanımı değiştirebilirsiniz:
|
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>Örnek Servis</short> <description>Bu dir sadece bir örnek servis. Bu muhtemelen olmamalı'dır olmak kullanılan üzerinde bir gerçek sistem.</description> <port protocol="tcp" port="7777"/> <port protocol="udp" port="8888"/> </service> |
Ardından, ESC tuşuna basın ve dosyayı kaydedip kapatmak için :x yazın. Sonrasında, yeni servisinize erişebilmek amacıyla güvenlik duvarınızı yeniden başlatmak için aşağıdaki komutu yazın;
|
1 |
sudo firewall-cmd --reload |
Bundan sonra, kullanılabilir servislerin listesini görmek için aşağıdaki komutu kullanın:
|
1 |
firewall-cmd --get-services |

Bu servis artık bölgenizde (zone) kullanılabilir.
Bölgelerinizi Oluşturma
Önceden tanımlanmış bölgeler çoğu kullanıcı için muhtemelen yeterli olsa da, işlevlerini daha tam olarak açıklayan kendi bölgelerinizi tanımlamak yararlı olabilir.
Bir bölge eklerken, bunu kalıcı güvenlik duvarı ayarlarınıza ekleyin. Ardından, ayarları oturumunuza getirmek için yeniden yükleyebilirsiniz. Örneğin, daha önce tartışılan iki bölgeyi şunu yazarak oluşturabilirsiniz:
|
1 2 |
sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS |
Bu komutu kullanarak kalıcı yapılandırmanızda mevcut olduklarını doğrulayabilirsiniz:
|
1 |
sudo firewall-cmd --permanent --get-zones |

Bu yeni bölgeleri aktif yapılandırmaya getirmek için güvenlik duvarını yeniden yükleyin:
|
1 2 3 4 5 |
sudo firewall-cmd --reload firewall-cmd --get-zones çıktı: block dmz drop external home internal privateDNS public publicweb trusted work |
Artık bölgelerinize uygun servisleri ve portları atayabilirsiniz. Örneğin, “publicweb” bölgesi için SSH, HTTP ve HTTPS servislerini eklemek isteyebilirsiniz:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https |

Ayrıca, bu komutu kullanarak “privateDNS” bölgenize DNS servisini ekleyebilirsiniz:
|
1 2 |
sudo firewall-cmd --zone=privateDNS --add-service=dns sudo firewall-cmd --zone=privateDNS --list-all |

Ardından, test etmek için arayüzlerinizi bu yeni bölgelerle değiştirebilirsiniz:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1 |
Çalışıp çalışmadığını görmek için yapılandırmayı test edin. Eğer bu değerler sizin için uygunsa, aynı kuralları kalıcı yapılandırmaya eklemelisiniz. Bunu, kuralları —permanent göstergesiyle yeniden uygulayarak yapabilirsiniz:
|
1 2 3 4 5 6 7 |
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns |
Bu kuralları kalıcı olarak uyguladıktan sonra, ağınızı yeniden başlatabilir ve güvenlik duvarı servisinizi yeniden yükleyebilirsiniz:
|
1 2 3 |
sudo systemctl restart network sudo systemctl reload firewalld |
Bölgelerin doğru şekilde atandığını kontrol edin:
|
1 |
firewall-cmd --get-active-zones |

Ayrıca, her iki bölgenin de doğru servise sahip olduğundan emin olun:
|
1 2 3 4 |
sudo firewall-cmd --zone=publicweb --list-services çıktı: http https ssh |
|
1 2 3 4 5 |
sudo firewall-cmd --zone=privateDNS --list-services çıktı: dns |
Bölgelerinizden birini diğer arayüzler için varsayılan olarak ayarlamak istiyorsanız, bu davranışı şu komutu kullanarak –set-default-zone= parametresiyle yapılandırmalısınız:
|
1 |
sudo firewall-cmd --set-default-zone=publicweb |
Sonuç
Bu noktada, kendi bölgelerinizi başarıyla oluşturdunuz. Günlük kullanım için CentOS sisteminizde firewalld servisini yönetme konusunda temel bir anlayışa sahip olmalısınız. firewalld servisini iyi kavramak, onun gücünden ve esnekliğinden tam olarak yararlanmanızı sağlar.
Keyifli çalışmalar!


Yorumlar
Henüz yorum yapılmamış. İlk siz olun.