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.

UFW ve Nginx/Apache Güvenlik Başlıkları Entegrasyonu ile X-Frame-Options, CSP gibi Ek Koruma Katmanları Ekleme

webnix

Üye
Katılım
14 Mart 2026
Mesajlar
8
Merhaba arkadaşlar, bugün sizlere sunucu güvenliğini bir üst seviyeye taşıyacak, çok sık atlanan ama bir o kadar da kritik bir konudan bahsedeceğim. Bir sunucuyu sadece UFW gibi bir güvenlik duvarı ile kapatmak yetmez. Web uygulamanızı ziyaret eden tarayıcılara da "bu sayfayı nasıl koruyacağını" söylemeniz gerekir. İşte bu noktada Nginx veya Apache üzerinden ekleyeceğimiz güvenlik başlıkları (Security Headers) devreye giriyor. Bu rehberde, UFW'nin temel korumasını, X-Frame-Options, Content-Security-Policy (CSP) gibi başlıklarla nasıl güçlendireceğimizi adım adım anlatacağım.

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

UFW ile sunucunuzun kapılarını (portlarını) kontrol edersiniz. Ancak, 80 ve 443 portları açık kaldığı sürece, dünya ile iletişim halindesinizdir. Güvenlik başlıkları ise, bu açık kapıdan gelen ziyaretçinin tarayıcısına bir dizi talimat verir. Örneğin, "bu sayfayı bir başka sitenin içinde gösterme (clickjacking'e karşı)" veya "sadece şu adreslerden gelen scriptleri yükle" gibi. Bu, XSS (Cross-Site Scripting), clickjacking, veri enjeksiyonu gibi birçok web tabanlı saldırıya karşı ekstra ve pasif bir koruma katmanı oluşturur.

⚙️ Adım 1: Mevcut Güvenlik Başlıklarını Kontrol Edelim

İşe, mevcut durumumuzu analiz ederek başlayalım. Aşağıdaki komutla sunucunuzdaki bir sitenin (örneğin bingunluk.com) hangi güvenlik başlıklarını gönderdiğine bakabilirsiniz.

Bash:
curl -I https://www.bingunluk.com

Çıktıda `X-Frame-Options`, `Content-Security-Policy`, `X-Content-Type-Options` gibi başlıkları göremiyorsanız, bu rehber tam size göre.

🛡️ Adım 2: Nginx için Güvenlik Başlıklarını Ekleyelim

Eğer Nginx kullanıyorsanız, site konfigürasyon dosyanıza (`/etc/nginx/sites-available/bingunluk.com` gibi) aşağıdaki direktifleri ekleyin. Benim genelde tercih ettiğim ve güvenli bir başlangıç seti şudur:

NGINX:
server {
    ...
    # Güvenlik Başlıkları
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    # Content Security Policy (CSP) - DİKKAT: Sitene özel ayarlamalısın!
    # Bu örnek, sadece kendi kaynaklarından ve güvenilir CDN'lerden içerik yükler.
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;" always;
    ...
}

/etc/nginx/sites-available/bingunluk.com dosyasını düzenledikten sonra, mutlaka yapılandırmayı test edin ve Nginx'i yeniden başlatın.

Bash:
sudo nginx -t
sudo systemctl reload nginx

🛡️ Adım 3: Apache için Güvenlik Başlıklarını Ekleyelim

Apache kullanıcıları ise, `.htaccess` dosyasına veya sanal host konfigürasyonuna aşağıdaki satırları ekleyebilir. Apache'de mod_headers modülünün aktif olduğundan emin olun (`sudo a2enmod headers`).

Kod:
# .htaccess veya VirtualHost içine ekleyin
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"

# Content Security Policy (CSP)
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;"

Apache'yi yeniden başlatarak ayarlarınızı aktif hale getirin.

Bash:
sudo systemctl restart apache2

⚠️ En Kritik Uyarı: CSP (Content-Security-Policy)

Arkadaşlar, yukarıda verdiğim CSP kuralı örnektir ve büyük ihtimalle sitenizi bozacaktır! CSP, sitenizin hangi kaynaklardan ne tür içerik (script, stil, resim, font) yükleyebileceğini belirler. `'unsafe-inline'` gibi kuralları güvenli hale getirerek kademeli olarak eklemelisiniz. En iyi yöntem, önce sadece `default-src 'self'` ile başlayıp, tarayıcının konsolundaki (F12) hatalara bakarak politikayı yavaş yavaş genişletmektir. Bu konuda çok sabırlı olmalısınız.

✅ Adım 4: Kurulumu Doğrulayalım

Tekrar `curl -I` komutunu çalıştırarak veya tarayıcınızın Geliştirici Araçları (F12) -> Network sekmesinden bir sayfayı yenileyip başlıkları kontrol edin. Artık yeni güvenlik başlıklarınızı görmelisiniz. Ayrıca,
Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
gibi ücretsiz araçlarla sitenizi taratıp notunuzun A veya A+ seviyesine yükseldiğini görebilirsiniz.

🎯 Sonuç ve Öneriler

Gördüğünüz gibi, UFW ile başlattığımız katmanlı güvenlik modeline, birkaç satır konfigürasyonla çok güçlü bir katman daha ekledik. Bu başlıklar, modern tarayıcılar tarafından desteklenen ve saldırganın işini oldukça zorlaştıran önlemler.

Ben genelde yeni kurduğum her sunucuda bu başlıkları standart olarak ekliyorum. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Özellikle CSP politikasını oluştururken hangi yöntemleri izliyorsunuz? Ya da takıldığınız bir nokta oldu mu? Aşağıya yorumlarınızı bekliyorum. Hep birlikte daha güvenli bir ortam inşa edelim.
 

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