Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Apache'de Mod_Headers ile Güvenlik Başlıklarını Yönetmek: Web Güvenliğinizi Bir Üst Seviyeye Taşıyın 🛡️

webnix

Üye
Katılım
14 Mart 2026
Mesajlar
9
Apache'de Mod_Headers ile Güvenlik Başlıklarını Yönetmek: Web Güvenliğinizi Bir Üst Seviyeye Taşıyın 🛡️

Selam sistemciler! 🖥️ Bugün, web sunucularımızın güvenlik zırhını biraz daha kalınlaştıracağız. Çoğumuz güvenlik duvarı, DDoS koruması gibi büyük önlemlerden bahsediyoruz ama bazen küçük, basit ayarlar da büyük fark yaratabiliyor. İşte tam da bu noktada, Apache'nin çok güçlü ama bazen gözden kaçan modülü mod_headers devreye giriyor. Bu modülle, tarayıcılara gönderdiğimiz HTTP yanıt başlıklarını (headers) tam kontrolümüz altına alabiliyoruz. Hazırsanız, bu gizli silahı nasıl etkin kullanacağımızı konuşalım.

Neden HTTP Güvenlik Başlıkları Bu Kadar Önemli?

Basitçe söylemek gerekirse, bu başlıklar tarayıcılara "Bu web sitesi nasıl davranmalı?" talimatlarını verir. Kötü niyetli kod enjeksiyonlarını (XSS), veri sızıntılarını, clickjacking saldırılarını ve daha birçok modern web tehdidini önlemek için kritik bir rol oynarlar. Bir sunucu yöneticisi olarak, bu başlıkları doğru şekilde yapılandırmak, temel sorumluluklarımızdan biridir. ⚙️

Adım 1: Mod_headers'ın Aktif Olduğundan Emin Olalım

Öncelikle, bu modülün sistemimizde yüklü ve aktif olduğunu kontrol edelim. Genellikle varsayılan kurulumlarda gelir.

Bash:
sudo apache2ctl -M | grep headers

Eğer çıktıda `headers_module` görüyorsanız, harika! Eğer görmüyorsanız, dağıtımınıza göre etkinleştirmeniz gerekebilir (Örn: Ubuntu'da `sudo a2enmod headers`).

Adım 2: Temel Güvenlik Başlıklarını Ekleyelim

Şimdi, en yaygın ve etkili birkaç güvenlik başlığını Apache yapılandırmamıza ekleyelim. Bu işlem için genellikle sanal sunucu (virtual host) dosyanızı (`/etc/apache2/sites-available/000-default.conf` gibi) veya genel bir güvenlik konfigürasyon dosyasını düzenleyeceğiz.

Ana yapılandırma dosyanıza veya `.htaccess` dosyasına aşağıdaki direktifleri ekleyebilirsiniz. Ben sanal sunucu dosyasının `<VirtualHost>` bloğu içine eklemeyi tercih ediyorum.

Kod:
# 1. X-Frame-Options: Clickjacking'e karşı koruma.
#    Sitenizin başka bir site içinde (iframe) yüklenmesini engeller.
Header always set X-Frame-Options "SAMEORIGIN"

# 2. X-Content-Type-Options: MIME tipi tespitini zorunlu kılar.
#    Tarayıcının dosya türünü "sniffing" yaparak değiştirmesini engeller.
Header always set X-Content-Type-Options "nosniff"

# 3. X-XSS-Protection: Tarayıcının XSS filtresini etkinleştirir (Eski tarayıcılar için).
#    Modern tarayıcılarda Content-Security-Policy önerilir.
Header always set X-XSS-Protection "1; mode=block"

# 4. Referrer-Policy: Hangi bilgilerin referer başlığında gönderileceğini kontrol eder.
#    Gizliliği artırmak için "strict-origin-when-cross-origin" iyi bir başlangıçtır.
Header always set Referrer-Policy "strict-origin-when-cross-origin"

# 5. Permissions-Policy (Eski adıyla Feature-Policy): Tarayıcı özelliklerine erişimi kısıtlar.
#    Örneğin, mikrofon, kamera, geolocation gibi hassas API'lerin kullanımını kontrol eder.
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"

Adım 3: Content Security Policy (CSP) ile Korumanızı Güçlendirin

CSP, en güçlü güvenlik başlıklarından biridir. Sitenizin hangi kaynaklardan (script, stil, resim, font vb.) yükleme yapabileceğini beyaz liste (allowlist) yöntemiyle tanımlar. Doğru yapılandırmak biraz deneme yanılma gerektirebilir, çünkü sitenizin tüm kaynaklarını bilmeniz gerekir. Basit bir CSP politikası ile başlayalım:

Kod:
# Content-Security-Policy: Güvenli bir başlangıç politikası.
# 'self' sadece aynı kaynaktan (kendi domain'iniz) yükleme yapılmasına izin verir.
# İnline script ve stilleri devre dışı bırakır (güvenlik için iyidir, ancak uygulamanızı test etmelisiniz).
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self';"

⚠️ **Önemli Uyarı:** CSP'yi canlı sisteme uygulamadan önce, `Content-Security-Policy-Report-Only` başlığını kullanarak sadece raporlama modunda test edin. Bu, politikayı uygulamadan hangi ihlallerin olacağını görmenizi sağlar.

Adım 4: Değişiklikleri Test Edip Sunucuyu Yeniden Başlatalım

Yapılandırma dosyamızı kaydettikten sonra, sözdizimi hataları olmadığından emin olalım:

Bash:
sudo apache2ctl configtest

Eğer "Syntax OK" mesajını alırsanız, Apache'yi yeniden başlatalım:

Bash:
sudo systemctl reload apache2  # veya restart

Başlıklarımız Çalışıyor Mu? Kontrol Edelim

Kurulumun başarılı olup olmadığını kontrol etmenin en kolay yolu, tarayıcı geliştirici araçlarını (F12) açıp "Network" sekmesine gitmektir. Sayfayı yenileyin ve herhangi bir isteğe (genellikle dokümanın kendisine) tıklayın. Sağ tarafta "Response Headers" bölümünde eklediğimiz başlıkları görmelisiniz.

Ayrıca terminalden de hızlıca kontrol edebilirsiniz:

Bash:
curl -I https://sitenizinadresi.com

Çıktıda `X-Frame-Options`, `X-Content-Type-Options` gibi başlıkları göreceksiniz. 🌐

Özet ve Son Tavsiyeler

Bugün, Apache sunucularımızın güvenlik duruşunu önemli ölçüde iyileştirebilecek basit ama etkili bir yöntem öğrendik. mod_headers ile güvenlik başlıklarını yönetmek, proaktif bir güvenlik yaklaşımının temel taşıdır.

  • Başlangıç için X-Frame-Options, X-Content-Type-Options ve Referrer-Policy başlıklarını eklemek harika bir ilk adımdır.
  • Content-Security-Policy (CSP) güçlüdür ama dikkatle uygulanmalıdır. Önce raporlama modunda (`Report-Only`) test edin.
  • Tüm başlıklar her uygulama için aynı şekilde çalışmayabilir. Özellikle üçüncü parti widget'lar, CDN'ler veya analiz kodları kullanıyorsanız, CSP'nizi buna göre ayarlamanız gerekir.
  • Bu başlıklar, güvenlik açıklarını *önlemeye* yardımcı olur, ancak tek başına yeterli değildir. Düzenli güncellemeler ve diğer güvenlik önlemleriyle birlikte kullanılmalıdır.

Umarım bu rehber, web sunucularınızı biraz daha güvenli hale getirmenize yardımcı olur. Siz hangi güvenlik başlıklarını kullanıyorsunuz? Ya da CSP konfigürasyonunuzda karşılaştığınız ilginç zorluklar oldu mu? Deneyimlerinizi yorumlarda paylaşın, birlikte öğrenelim! 💬
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri