AlmaLinux ve CentOS gibi Red Hat tabanlı Linux dağıtımları, güçlü ve stabil yapıları sayesinde Sanal Özel Sunucular (VPS) için sıkça tercih edilir. Ancak bu sunucuların internete açık olması, onları çeşitli siber tehditlere karşı savunmasız bırakır. Sunucu güvenliğinin ilk ve en önemli katmanlarından biri, doğru yapılandırılmış bir güvenlik duvarıdır. Bu noktada, modern Linux dağıtımlarının standart bir parçası olan ve esnek yönetim yetenekleriyle öne çıkan Firewalld devreye girer. Firewalld, gelen ve giden ağ trafiğini kontrol ederek yetkisiz erişimleri engeller ve sunucunuzu potansiyel tehlikelerden korur. Bu rehber, Firewalld’nin temel kavramlarından başlayarak en gelişmiş yapılandırmalarına kadar her yönüyle nasıl kullanılacağını adım adım açıklayacak ve AlmaLinux/CentOS tabanlı VPS’inizin güvenliğini en üst düzeye çıkarmanıza yardımcı olacaktır.
İçerik Tablosu
Firewalld’e Giriş ve Temel Kavramlar
Sunucu güvenliğinin temellerini atmak için öncelikle kullanacağımız aracı, yani Firewalld’yi ve onun çalışma mantığını anlamamız gerekir. Bu bölümde Firewalld’nin ne olduğunu, geleneksel araçlardan farklarını ve mimarisini oluşturan temel bileşenleri inceleyeceğiz.
Firewalld Nedir ve VPS Güvenliği İçin Neden Önemlidir?
Firewalld, Linux sistemleri için dinamik bir güvenlik duvarı yöneticisidir. Sistem çekirdeğindeki Netfilter altyapısını kullanarak ağ trafiğini filtreler. Bir vps için Firewalld’nin önemi, internetten gelebilecek sayısız tehdide karşı bir kalkan görevi görmesinden kaynaklanır. Sunucunuzda çalışan web sunucusu, veritabanı, e-posta gibi servislerin portlarına yalnızca meşru isteklerin ulaşmasını sağlar, kötü niyetli taramaları ve yetkisiz erişim denemelerini ise daha sunucuya ulaşmadan engeller. Bu sayede hem sunucu kaynaklarının gereksiz yere tüketilmesinin önüne geçilir hem de hassas verilerin güvenliği sağlanmış olur.
Geleneksel `iptables` ile Firewalld Arasındaki Farklar
Firewalld’den önce Linux dünyasında standart olan `iptables`, oldukça güçlü ancak karmaşık bir yapıya sahipti. `iptables` ile yapılan her kural değişikliği, tüm kural zincirinin temizlenip yeniden yüklenmesini gerektiriyordu. Bu durum, aktif bağlantıların kesilmesine neden olabiliyordu. Firewalld ise bu süreci çok daha dinamik bir şekilde yönetir. Değişiklikler, mevcut bağlantıları kesintiye uğratmadan anlık olarak uygulanabilir. Ayrıca, servisler ve bölgeler gibi soyut katmanlar sunarak kural yönetimini basitleştirir. Aşağıdaki tablo, iki araç arasındaki temel farkları özetlemektedir.
| Özellik | iptables | Firewalld |
|---|---|---|
| Yönetim Aracı | iptables komutu | firewall-cmd ve GUI araçları |
| Yapılandırma Değişikliği | Tüm kuralları yeniden yükler, aktif bağlantıları kesebilir. | Dinamiktir, aktif bağlantıları kesmeden değişiklik yapar. |
| Kural Yönetimi | Karmaşık zincir ve kural yapısı. | Bölgeler (Zones) ve Servisler ile basitleştirilmiş yönetim. |
| Kullanım Kolaylığı | Öğrenmesi ve yönetmesi daha zordur. | Yeni başlayanlar için daha anlaşılır ve kolaydır. |
| Arka Uç | Doğrudan Netfilter ile konuşur. | Netfilter altyapısını kullanan bir servis olarak çalışır. |
Firewalld’nin Temel Mimarisi: Bölgeler (Zones), Servisler ve Portlar
Firewalld’nin anlaşılmasını kolaylaştıran temel mimarisi üç ana bileşene dayanır:
- Bölgeler (Zones): Sunucunun ağ arayüzlerinin (örneğin, ethernet kartı) dahil edildiği, önceden tanımlanmış güven seviyelerine sahip kural setleridir. Örneğin, “public” bölgesi dış dünyaya açık, güvensiz bir ağı temsil ederken, “home” bölgesi daha güvenilir bir iç ağı temsil eder. Bir ağ arayüzüne atanan bölge, o arayüzden gelen trafik için hangi kuralların geçerli olacağını belirler.
- Servisler: Belirli bir ağ hizmeti için gerekli olan port ve protokol tanımlarını içeren XML dosyalarıdır. Örneğin, “http” servisi, TCP 80 portunu ifade eder. Tek tek port numaralarıyla uğraşmak yerine `firewall-cmd –add-service=http` gibi bir komutla ilgili tüm ayarları kolayca yapabilirsiniz.
- Portlar: Servis tanımları dışında, belirli bir portu (örneğin 8080/tcp) doğrudan açmak veya kapatmak için kullanılır. Bu, standart dışı portlarda çalışan uygulamalar için esneklik sağlar.
Kalıcı (Permanent) ve Anlık (Runtime) Yapılandırma Kavramları
Firewalld’de yapılan değişiklikler iki farklı modda uygulanabilir: anlık (runtime) ve kalıcı (permanent).
- Anlık (Runtime) Yapılandırma: Yaptığınız değişikliklerin hemen aktif olmasını sağlar. Ancak sunucu yeniden başlatıldığında veya Firewalld servisi yeniden başlatıldığında bu değişiklikler kaybolur. Bu mod, kuralları test etmek için oldukça kullanışlıdır.
- Kalıcı (Permanent) Yapılandırma: Yaptığınız değişiklikler doğrudan yapılandırma dosyalarına yazılır. Bu değişikliklerin aktif olması için Firewalld’nin yeniden yüklenmesi (`firewall-cmd –reload`) gerekir. Sunucu yeniden başladığında bu kurallar otomatik olarak yüklenir. Bir kuralın kalıcı olmasını sağlamak için komutlara `–permanent` bayrağı eklenir.
Firewalld Kurulumu ve Temel Yönetim Komutları
AlmaLinux ve CentOS’un güncel sürümlerinde Firewalld genellikle önceden yüklenmiş ve aktif olarak gelir. Ancak durum böyle değilse veya servisin durumunu yönetmek istiyorsanız, bazı temel komutları bilmeniz gerekir. Bu bölüm, Firewalld servisini nasıl kontrol edeceğinizi ve yöneteceğinizi ele alacaktır.
Firewalld Servisinin Durumunu Kontrol Etme
Firewalld’nin sunucunuzda çalışıp çalışmadığını ve mevcut durumunu öğrenmek için `systemctl` komutunu kullanabilirsiniz. Bu komut, servisin aktif olup olmadığını, sistem başlangıcında otomatik olarak devreye girip girmeyeceğini ve son log mesajlarını gösterir.
sudo systemctl status firewalld
Eğer servis çalışıyorsa, çıktıda “active (running)” ifadesini yeşil renkte göreceksiniz.
Firewalld Servisini Başlatma, Durdurma ve Yeniden Başlatma
Güvenlik duvarı servisini yönetmek için aşağıdaki `systemctl` komutları kullanılır:
- Başlatma: Firewalld servisini başlatmak için:
sudo systemctl start firewalld - Durdurma: Servisi geçici olarak durdurmak için (Bu işlem sunucunuzu korumasız bırakacağı için dikkatli kullanılmalıdır):
sudo systemctl stop firewalld - Yeniden Başlatma: Serviste bir sorun olduğunda veya bazı köklü değişikliklerden sonra servisi yeniden başlatmak için:
sudo systemctl restart firewalld
Firewalld’nin Sistem Açılışında Otomatik Başlamasını Sağlama
Sunucunuz her yeniden başladığında güvenlik duvarının otomatik olarak devreye girmesi hayati önem taşır. Bu ayarın aktif olup olmadığını kontrol edebilir ve değilse aktif hale getirebilirsiniz.
- Otomatik Başlatmayı Aktif Etme (Enable):
sudo systemctl enable firewalld - Otomatik Başlatmayı Devre Dışı Bırakma (Disable):
sudo systemctl disable firewalld
Genellikle, bir sunucu kiralama hizmeti aldığınızda bu ayar varsayılan olarak aktif gelir, ancak kontrol etmekte her zaman fayda vardır.
Yapılandırmayı Yeniden Yükleme ve Değişiklikleri Uygulama
Kalıcı (permanent) modda bir kural eklediğinizde veya değiştirdiğinizde, bu kuralın anlık (runtime) yapılandırmaya uygulanarak aktif hale gelmesi için Firewalld’nin yapılandırmasını yeniden yüklemeniz gerekir. Bu işlem, servisi tamamen yeniden başlatmaktan daha hızlıdır ve mevcut aktif bağlantıları sonlandırmaz.
sudo firewall-cmd --reload
Bu komut, kalıcı yapılandırmayı okur ve mevcut çalışan yapılandırmayla senkronize eder.
Firewalld Bölgeleri (Zones) ile Çalışma
Firewalld’nin en güçlü özelliklerinden biri, kural yönetimini basitleştiren ve farklı güven senaryolarına uyum sağlayan bölge (zone) konseptidir. Bölgeler, sunucunuzun farklı ağ arayüzlerine farklı güvenlik politikaları uygulamanıza olanak tanır. Örneğin, genel internete açık bir arayüz için çok kısıtlayıcı kurallar uygularken, özel bir yönetim ağına bağlı başka bir arayüz için daha esnek kurallar belirleyebilirsiniz.
Bölgeler (Zones) Nedir ve Nasıl Çalışır?
Bölgeler, ağ arayüzlerinin (network interfaces) veya kaynak IP adreslerinin atandığı önceden tanımlanmış kural setleridir. Bir ağ paketinin sunucuya nereden geldiğine bağlı olarak, o paketin hangi bölgenin kurallarına tabi olacağı belirlenir. Firewalld, bir bağlantı için en spesifik eşleşen bölgeyi bulmaya çalışır. Önce paketin kaynak IP’sine atanmış bir bölge olup olmadığına bakar. Yoksa, paketin geldiği ağ arayüzüne atanmış bölgenin kurallarını uygular. Hiçbir arayüz veya kaynak bir bölgeye atanmamışsa, varsayılan bölgenin kuralları geçerli olur.
Sunucudaki Mevcut Bölgeleri ve Varsayılan Bölgeyi Listeleme
Sisteminizde hangi bölgelerin tanımlı olduğunu ve hangisinin varsayılan olarak kullanıldığını kolayca listeleyebilirsiniz.
- Tüm mevcut bölgeleri listelemek için:
firewall-cmd --get-zones
Bu komut size `block`, `dmz`, `drop`, `external`, `home`, `internal`, `public`, `trusted`, `work` gibi ön tanımlı bölgelerin listesini verecektir. - Varsayılan bölgeyi öğrenmek için:
firewall-cmd --get-default-zone
Genellikle bu komutun çıktısı `public` olacaktır.
Varsayılan Bölgeyi Değiştirme
Herhangi bir ağ arayüzüne özel bir bölge atanmadığında kullanılacak olan varsayılan bölgeyi değiştirebilirsiniz. Örneğin, daha kısıtlayıcı bir politika uygulamak isterseniz varsayılan bölgeyi `dmz` veya `work` olarak ayarlayabilirsiniz. Bu değişiklik kalıcı olacaktır.
sudo firewall-cmd --set-default-zone=work
Değişikliğin uygulanması için `–reload` komutunu çalıştırmanız gerekebilir.
Bir Ağ Arayüzünü Farklı Bir Bölgeye Atama
Sunucunuzda birden fazla ağ arayüzü varsa (örneğin `eth0` genel ağ için, `eth1` özel ağ için), her birine farklı bir bölge atayabilirsiniz. Örneğin, `eth1` arayüzünü daha güvenli olan `internal` bölgesine atamak için aşağıdaki komutu kullanabilirsiniz. Bu komut hem anlık hem de kalıcı değişiklik yapar.
sudo firewall-cmd --zone=internal --change-interface=eth1 --permanent
Ardından yapılandırmayı yeniden yükleyin: sudo firewall-cmd --reload
Ön Tanımlı Bölgelerin İncelenmesi (public, home, work, dmz vb.)
Firewalld, yaygın kullanım senaryoları için bir dizi ön tanımlı bölge ile birlikte gelir. Her bölgenin kendine özgü bir güven seviyesi ve varsayılan politikası vardır.
| Bölge Adı | Güven Seviyesi | Varsayılan Davranış ve Kullanım Amacı |
|---|---|---|
| drop | En Düşük | Gelen tüm paketleri hiçbir yanıt vermeden sessizce düşürür. Engellenen taraf, sunucunun var olup olmadığını anlayamaz. |
| block | Düşük | Gelen tüm paketleri reddeder ve karşı tarafa “icmp-host-prohibited” mesajı gönderir. Engellenen taraf, bir güvenlik duvarı tarafından engellendiğini anlar. |
| public | Güvensiz | Genel ve güvenilmeyen ağlar için kullanılır. Varsayılan olarak yalnızca seçili servislere (genellikle SSH) izin verilir. Çoğu sunucunun varsayılan bölgesidir. |
| external | Orta | Özellikle NAT (Masquerading) etkinleştirilmiş dış ağlar için kullanılır. Güven seviyesi public’e benzer. |
| dmz | Orta | “Demilitarized Zone” (Askerden Arındırılmış Bölge) için tasarlanmıştır. Dışarıdan erişilebilen ancak iç ağdan izole edilmiş sunucular (örn. web sunucuları) için kullanılır. |
| work | Güvenilir | İş ortamındaki bilgisayarlar için tasarlanmıştır. Çoğu temel servise güvenir. |
| home | Güvenilir | Ev ortamındaki cihazlar için tasarlanmıştır. ‘work’ bölgesine benzer ancak daha fazla servise güvenir. |
| internal | Çok Güvenilir | Yalnızca iç ağdaki diğer sunucular için kullanılır. Daha fazla servise varsayılan olarak izin verilir. |
| trusted | En Yüksek | Ağdaki tüm cihazlara tamamen güvenir. Gelen tüm bağlantılara izin verilir. Çok dikkatli kullanılmalıdır. |
Servis ve Port Yönetimi: Güvenlik Duvarı Kurallarını Yapılandırma
Bölgelerin mantığını anladıktan sonra, bu bölgeler içinde hangi trafiğe izin verip hangisini engelleyeceğimizi belirlememiz gerekir. Firewalld bu işlemi servis tanımları ve doğrudan port numaraları aracılığıyla oldukça kolay bir hale getirir. Bu bölümde, sunucunuzdaki uygulamaların ihtiyaç duyduğu bağlantıları güvenli bir şekilde nasıl açacağınızı ve gereksiz portları nasıl kapatacağınızı öğreneceksiniz.
Ön Tanımlı Servisleri Listeleme
Firewalld, HTTP, FTP, SMTP gibi yaygın ağ servisleri için önceden yapılandırılmış tanımlar içerir. Bu tanımlar, ilgili servisin hangi portları ve protokolleri kullandığını belirtir. Mevcut tüm servis tanımlarını listelemek için şu komutu kullanabilirsiniz:
firewall-cmd --get-services
Bu liste, kural eklerken kullanabileceğiniz servis adlarını gösterir.
Bir Bölgeye Servis Ekleme (Örnek: HTTP, HTTPS, SSH)
Web sunucunuzun dışarıdan erişilebilir olmasını sağlamak için `public` bölgesine HTTP (80) ve HTTPS (443) servislerini eklemeniz gerekir. Bu kuralı kalıcı olarak eklemek için `–permanent` bayrağını kullanırız.
sudo firewall-cmd --zone=public --add-service=http --permanentsudo firewall-cmd --zone=public --add-service=https --permanent
Benzer şekilde, SSH erişimine izin vermek için (genellikle varsayılan olarak açıktır):
sudo firewall-cmd --zone=public --add-service=ssh --permanent
Bu komutlardan sonra değişikliklerin aktif olması için yapılandırmayı yeniden yüklemeyi unutmayın: sudo firewall-cmd --reload
Bir Bölgeden Servis Kaldırma
Artık kullanmadığınız bir servise ait kuralları güvenlik nedeniyle kaldırmak iyi bir pratiktir. Örneğin, artık FTP servisi kullanmıyorsanız, bu servisi `public` bölgesinden kaldırabilirsiniz:
sudo firewall-cmd --zone=public --remove-service=ftp --permanentsudo firewall-cmd --reload
Belirli Port Numaralarına İzin Verme (TCP/UDP)
Bazen kullandığınız bir uygulama, Firewalld’nin ön tanımlı servis listesinde bulunmayan özel bir port kullanabilir. Örneğin, 8080 portunda çalışan bir web uygulamasına izin vermek için doğrudan port numarasını ve protokolünü (tcp veya udp) belirterek kural ekleyebilirsiniz.
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
Değişikliği uygulamak için: sudo firewall-cmd --reload
Belirli Port Numaralarını Kapatma
Daha önce açtığınız ancak artık ihtiyaç duymadığınız bir portu kapatmak için `–add-port` yerine `–remove-port` komutunu kullanırsınız.
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanentsudo firewall-cmd --reload
Port Aralığına İzin Verme veya Kapatma
Bazı uygulamalar, belirli bir port aralığını kullanabilir (örneğin pasif FTP bağlantıları veya bazı oyun sunucuları). Firewalld, port aralıklarını kolayca yönetmenize olanak tanır. Örneğin, 20000 ile 21000 arasındaki tüm TCP portlarına izin vermek için:
sudo firewall-cmd --zone=public --add-port=20000-21000/tcp --permanent
Bu aralığı kapatmak için ise aynı komutu `–remove-port` ile kullanabilirsiniz:
sudo firewall-cmd --zone=public --remove-port=20000-21000/tcp --permanent
Her iki işlemden sonra da yapılandırmayı yeniden yüklemeyi unutmayın.
Gelişmiş Firewalld Yapılandırmaları ve Kuralları
Temel port ve servis yönetiminin ötesinde, Firewalld çok daha karmaşık ve spesifik güvenlik senaryolarını yönetmek için güçlü araçlar sunar. Bu araçlar arasında en dikkat çekeni “Zengin Kurallar” (Rich Rules) olarak bilinen esnek kural yazım dilidir. Ayrıca port yönlendirme ve NAT gibi gelişmiş ağ görevleri de Firewalld ile kolayca yapılandırılabilir. Bu bölüm, güvenlik duvarı yeteneklerinizi bir üst seviyeye taşıyacak gelişmiş özellikleri ele almaktadır.
Zengin Kurallar (Rich Rules) Nedir ve Nasıl Kullanılır?
Zengin Kurallar, standart `–add-service` veya `–add-port` komutlarının yetersiz kaldığı durumlarda, belirli kaynak/hedef IP adresleri, protokoller, portlar ve eylemler (accept, reject, drop) içeren çok daha ayrıntılı kurallar oluşturmanıza olanak tanır. Zengin kural sözdizimi oldukça anlaşılırdır ve “eğer şu koşullar sağlanırsa, bu eylemi gerçekleştir” mantığına dayanır.
Örnek bir zengin kural yapısı: rule family="ipv4" source address="192.168.1.10" port port="22" protocol="tcp" accept
Belirli Bir IP Adresinden Gelen Bağlantılara İzin Verme veya Engelleme
Zengin kuralların en yaygın kullanım alanlarından biri, belirli bir IP adresine özel izinler tanımak veya o adresten gelen tüm trafiği engellemektir.
- Belirli bir IP’den SSH erişimine izin verme:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.5" service name="ssh" accept' --permanent - Belirli bir IP adresini tamamen engelleme:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="198.51.100.10" reject' --permanent
Bu kuralların ardından --reload komutu çalıştırılmalıdır.
Belirli Bir IP Bloğunu (Subnet) Engelleme
Tek bir IP adresi yerine, kötü niyetli aktivitenin geldiği bütün bir IP bloğunu (subnet) engellemek isteyebilirsiniz. Bu, CIDR (Classless Inter-Domain Routing) notasyonu kullanılarak kolayca yapılabilir.
Örneğin, `198.51.100.0/24` ağından gelen tüm trafiği engellemek için:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="198.51.100.0/24" reject' --permanentsudo firewall-cmd --reload
ICMP (Ping) İsteklerini Yönetme ve Engelleme
ICMP protokolü, genellikle ağ sorunlarını teşhis etmek için `ping` komutuyla kullanılır. Ancak bazı durumlarda, keşif taramalarını zorlaştırmak için ping isteklerini engellemek isteyebilirsiniz. Firewalld, ICMP istek türlerini ayrı ayrı yönetme imkanı sunar.
--get-icmptypes komutu ile yönetebileceğiniz tüm ICMP türlerini görebilirsiniz. Örneğin, en yaygın olan `echo-reply` ve `echo-request` (ping) isteklerini engellemek için:
sudo firewall-cmd --zone=public --add-icmp-block=echo-request --permanentsudo firewall-cmd --zone=public --add-icmp-block=echo-reply --permanentsudo firewall-cmd --reload
Bu, sunucunuzun ping isteklerine yanıt vermesini engeller.
Port Yönlendirme (Port Forwarding) Yapılandırması
Port yönlendirme, sunucunuza belirli bir porttan gelen trafiği, aynı sunucudaki veya iç ağdaki başka bir porta veya IP adresine yönlendirmenizi sağlar. Örneğin, dışarıdan 80 portuna gelen istekleri, içeride 8080 portunda çalışan bir uygulamaya yönlendirebilirsiniz.
Öncelikle `masquerade` özelliğinin ilgili bölgede aktif olması gerekir.
sudo firewall-cmd --zone=public --add-masquerade --permanent
Ardından yönlendirme kuralını ekleyin (80 portunu 8080’e yönlendirme):
sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanentsudo firewall-cmd --reload
Ağ Adresi Çevirisi (Masquerading / NAT) Ayarları
Masquerading (bir tür NAT – Network Address Translation), özel (private) bir ağdaki birden fazla cihazın, sunucunuzun genel (public) IP adresini kullanarak internete çıkmasını sağlar. Sunucunuz bir ağ geçidi (gateway) olarak işlev gördüğünde bu özellik kullanılır. Örneğin, `external` bölgeden gelen trafiğin iç ağa yönlendirilmesini sağlamak için:
sudo firewall-cmd --zone=external --add-masquerade --permanentsudo firewall-cmd --reload
Bu komut, sunucunuzu bir güvenlik duvarı ve yönlendirici gibi davranacak şekilde yapılandırır.
Firewalld İzleme, Günlükleme ve Sorun Giderme
Etkili bir güvenlik duvarı yönetimi, sadece kuralları ayarlamakla bitmez; aynı zamanda bu kuralların doğru çalışıp çalışmadığını izlemeyi, olası sorunları teşhis etmeyi ve güvenlik olaylarını tespit etmek için günlük kayıtlarını (logları) incelemeyi de içerir. Firewalld, bu süreçler için yerleşik komutlar ve entegrasyonlar sunar. Ayrıca, acil durumlarda tüm trafiği kesmek için bir “panik modu” gibi kullanışlı özelliklere de sahiptir.
Mevcut Firewall Kurallarını Listeleme
Belirli bir bölge için veya tüm bölgeler için geçerli olan aktif kuralları listelemek, yapılandırmanızı gözden geçirmek için önemlidir.
- Varsayılan bölge için tüm kuralları listeleme:
sudo firewall-cmd --list-all - Belirli bir bölge (örneğin `work`) için kuralları listeleme:
sudo firewall-cmd --zone=work --list-all - Kalıcı (permanent) yapılandırmadaki kuralları görmek için:
sudo firewall-cmd --permanent --list-all
Bu komutlar size hangi servislerin, portların, zengin kuralların ve diğer ayarların aktif olduğunu net bir şekilde gösterir.
Engellenen Paketlerin Günlüğe Kaydedilmesini (Logging) Aktif Etme
Varsayılan olarak Firewalld, engellediği (dropped veya rejected) paketler hakkında detaylı bir günlük tutmaz. Ancak sorun giderme veya güvenlik analizi için bu günlükleri etkinleştirebilirsiniz. Bu ayar, reddedilen her paketin neden reddedildiği hakkında bilgi içeren bir günlük girdisi oluşturur.
sudo firewall-cmd --set-log-denied=all
Bu ayarı kapatmak için ise `off` parametresini kullanabilirsiniz:
sudo firewall-cmd --set-log-denied=off
Bu ayarın kalıcı olması için `–permanent` bayrağı eklenmelidir, ancak genellikle sadece sorun giderme sırasında geçici olarak açılır.
`journalctl` ile Firewalld Günlüklerini İnceleme
Günlükleme aktif edildikten sonra, Firewalld tarafından oluşturulan logları sistem günlüğü yöneticisi olan `journalctl` ile inceleyebilirsiniz. Bu komut, engellenen paketler hakkında kaynak IP, hedef port gibi değerli bilgiler sunar.
sudo journalctl -u firewalld -f
-f (follow) parametresi, günlükleri gerçek zamanlı olarak takip etmenizi sağlar, bu da bir sorunu canlı olarak teşhis etmeye çalışırken çok kullanışlıdır.
Panik Modu (Panic Mode) Nedir ve Acil Durumlarda Nasıl Kullanılır?
Panik Modu, sunucunuzun aktif bir saldırı altında olduğundan şüphelendiğiniz acil durumlar için tasarlanmış bir özelliktir. Panik modu etkinleştirildiğinde, Firewalld gelen ve giden tüm ağ trafiğini derhal engeller. Bu, saldırganın sunucuya erişimini tamamen keserek size durumu analiz etmek ve karşı önlemler almak için zaman kazandırır.
- Panik modunu aktif etme:
sudo firewall-cmd --panic-on - Panik modunun durumunu kontrol etme:
sudo firewall-cmd --query-panic - Panik modunu devre dışı bırakma:
sudo firewall-cmd --panic-off
Panik modu kapatıldığında, önceki güvenlik duvarı kurallarınız tekrar devreye girer. Bu modun sunucuya tüm meşru erişimi de engelleyeceğini unutmamak önemlidir.
Güvenlik İçin En İyi Uygulamalar ve Senaryolar
Firewalld’nin komutlarını ve kavramlarını öğrenmek işin bir yarısıdır. Diğer yarısı ise bu bilgiyi gerçek dünya senaryolarında, en iyi güvenlik uygulamalarını takip ederek doğru bir şekilde uygulamaktır. Bu bölümde, web sunucusu ve veritabanı gibi yaygın hizmetler için temel güvenlik duvarı yapılandırmalarının nasıl yapılacağını ve brute-force gibi saldırılara karşı nasıl önlemler alınabileceğini inceleyeceğiz.
Web Sunucusu (Apache/Nginx) İçin Temel Güvenlik Duvarı Yapılandırması
Bir web sunucusunu güvence altına alırken temel amaç, sadece web trafiğine (HTTP ve HTTPS) ve yönetim için SSH’a izin vermek, diğer tüm portları kapalı tutmaktır. Bu, “en az ayrıcalık” prensibine dayanır.
- Varsayılan olarak her şeye izin veren kuralları kaldırın (eğer varsa).
- Yalnızca gerekli servislere kalıcı olarak izin verin:
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent - Değişiklikleri uygulayın:
sudo firewall-cmd --reload
Bu basit yapılandırma, Nginx veya Apache sunucunuzun yalnızca gerekli portlardan erişilebilir olmasını sağlar.
Standart SSH Portunu Değiştirme ve Firewalld Kuralını Güncelleme
SSH servisinin varsayılan 22 numaralı portu, otomatik botlar tarafından sürekli olarak taranır. Güvenliği artırmak için SSH portunu standart dışı bir porta (örneğin 2222) değiştirmek yaygın bir yöntemdir. Bu işlemi yaptıktan sonra Firewalld kuralını da güncellemeniz gerekir.
/etc/ssh/sshd_configdosyasında `Port 22` satırını `Port 2222` olarak değiştirin.- Yeni porta Firewalld’de izin verin:
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent - Yeni kuralı ekledikten ve SSH servisini yeniden başlattıktan sonra, eski SSH kuralını kaldırın:
sudo firewall-cmd --zone=public --remove-service=ssh --permanent - Yapılandırmayı yeniden yükleyin:
sudo firewall-cmd --reload
Veritabanı Sunucusuna (MySQL/PostgreSQL) Sadece Belirli IP’lerden Erişime İzin Verme
Veritabanı sunucuları genellikle sadece uygulama sunucuları gibi belirli ve güvenilir kaynaklardan erişim gerektirir. Veritabanı portunu (MySQL için 3306, PostgreSQL için 5432) tüm internete açmak büyük bir güvenlik riskidir. Bunun yerine, zengin kurallar kullanarak yalnızca belirli IP adreslerine izin verilmelidir.
Örneğin, MySQL veritabanına sadece `192.168.1.100` IP adresindeki uygulama sunucusunun erişmesine izin vermek için:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="3306" protocol="tcp" accept' --permanentsudo firewall-cmd --reload
Bu kural, 3306 portuna diğer tüm IP’lerden gelen istekleri engellerken, sadece belirtilen IP’ye izin verir.
Brute-Force Saldırılarına Karşı Kural Oluşturma (Rate Limiting)
Brute-force saldırıları, parola tahminleri yaparak servislere (özellikle SSH) yetkisiz erişim sağlamaya çalışır. Firewalld’nin zengin kuralları, belirli bir zaman diliminde belirli bir sayıda bağlantı denemesine izin vererek bu tür saldırıları yavaşlatabilir (rate limiting).
Örneğin, bir IP adresinin 1 dakika içinde 5’ten fazla yeni SSH bağlantısı kurmasını engellemek için:
sudo firewall-cmd --zone=public --add-rich-rule='rule service name="ssh" accept limit value="5/m"' --permanentsudo firewall-cmd --reload
Bu kural, belirtilen limiti aşan bağlantı denemelerini otomatik olarak reddederek sunucunuzu kaba kuvvet saldırılarına karşı daha dirençli hale getirir.
Güvenli AlmaLinux/CentOS VPS Hizmetleri İçin Neden İHS Telekom’u Tercih Etmelisiniz?
AlmaLinux veya CentOS tabanlı bir VPS’nin güvenliğini sağlamak, doğru araçları bilmek ve en iyi uygulamaları takip etmekle mümkündür. Ancak tüm bu teknik adımların üzerinde, sunucunuzun barındırıldığı altyapının kalitesi ve güvenilirliği yatar. İşte bu noktada İHS Telekom, Türkiye’nin önde gelen hosting ve sunucu sağlayıcısı olarak fark yaratır. Güçlü altyapısı, yüksek performansı ve müşteri odaklı hizmet anlayışıyla İHS Telekom, projeleriniz için en sağlam temeli sunar.
İHS Telekom’u tercih etmeniz için birkaç önemli neden:
- Yüksek Performanslı Altyapı: Sunucularımız, en güncel donanımlar ve NVMe SSD depolama çözümleri ile donatılmıştır. Bu sayede web siteleriniz ve uygulamalarınız en yüksek hızda çalışır, bu da hem kullanıcı deneyimini hem de SEO performansınızı olumlu etkiler.
- Güvenlik Odaklı Yaklaşım: Altyapımız, DDoS saldırılarına karşı gelişmiş koruma katmanları ile donatılmıştır. Firewalld gibi yazılımsal güvenlik önlemlerinin yanı sıra, ağ seviyesinde proaktif güvenlik tedbirleri alarak sunucunuzun sürekliliğini ve verilerinizin güvenliğini sağlıyoruz.
- Esnek ve Ölçeklenebilir Çözümler: Projenizin ihtiyaçları büyüdükçe, VPS kaynaklarınızı (CPU, RAM, Disk Alanı) kolayca ve kesintisiz bir şekilde artırabilirsiniz. Farklı ihtiyaçlara yönelik sunduğumuz çeşitli VDS ve VPS paketleri ile her zaman doğru çözüme ulaşırsınız.
- Uzman Teknik Destek: Alanında uzman ve tecrübeli teknik destek ekibimiz, sunucunuzla ilgili yaşayabileceğiniz her türlü sorunda 7/24 yanınızdadır. Firewalld yapılandırmasından sunucu optimizasyonuna kadar geniş bir yelpazede profesyonel destek alabilirsiniz.
- Türkiye Lokasyon Avantajı: Sunucularımızın Türkiye’de barındırılması, yerel ziyaretçileriniz için daha düşük gecikme süreleri (ping) ve daha hızlı erişim anlamına gelir. Aynı zamanda, verilerinizin KVKK (Kişisel Verilerin Korunması Kanunu) uyumlu bir şekilde yurt içinde saklanmasını sağlar.
Projenizi güvenli, hızlı ve kesintisiz bir altyapıda barındırmak için İHS Telekom’un sunduğu AlmaLinux/CentOS VPS çözümlerini tercih edin. Böylece siz kodlarınıza ve işinize odaklanırken, sunucu yönetimi ve güvenliği bizim uzmanlığımızda olsun.

