Nginx ile Web Sunucunuzu Güçlendirin: Temel Güvenlik Başlıkları Rehberi 
Selam sistemciler!
Bugün terminalin başında, sadece bir web sunucusu değil, aynı zamanda sağlam bir kale inşa etmenin inceliklerinden bahsedeceğiz. Nginx, performansıyla öne çıksa da doğru yapılandırılmadığında güvenlik açıklarına davetiye çıkarabilir. Gelin, Nginx konfigürasyonumuza birkaç temel ama kritik güvenlik başlığı ekleyerek saldırı yüzeyimizi küçültelim.
Neden Bu Başlıklar Önemli?
Tarayıcılar, sunucunuzla iletişim kurarken güvenliği artırmak için çeşitli HTTP başlıklarını destekler. Bu başlıkları doğru şekilde ayarlamak, clickjacking, MIME tipi sızıntısı gibi saldırıları ve kötü amaçlı script'lerin yüklenmesini engellemeye yardımcı olur. Basit bir `add_header` direktifi ile büyük farklar yaratabiliriz.
Hazırlık: Nginx Yapılandırma Dosyanızı Bulun
Öncelikle, üzerinde çalışacağımız dosyayı bulalım. Bu genellikle sitenizin `server` bloğunun bulunduğu dosyadır. Örneğin:
Ya da tüm sitelerde global olarak uygulamak için:
ÖNEMLİ UYARI: Herhangi bir değişiklik yapmadan önce config dosyanızın sözdizimini mutlaka kontrol edin!
Koruma Kalkanlarını Ekleyelim: HTTP Başlıkları
Şimdi, `server` bloğunuzun içine (genellikle `location /` bloğundan önce veya içine) aşağıdaki başlıkları ekleyelim. Bu başlıklar, tarayıcıya nasıl daha güvenli davranması gerektiğini söyler.
Bu Başlıklar Ne Yapar?
Bir Sonraki Seviye: Content Security Policy (CSP)
Eğer daha fazla güvenlik istiyorsanız, Content Security Policy (CSP) başlığını eklemek altın standarttır. CSP, sitenizin hangi kaynaklardan (script, stil, resim, font vb.) yükleme yapabileceğini beyaz liste yöntemiyle tanımlar.
Ancak dikkatli kurulmalıdır, aksi takdirde siteniz bozulabilir.
Basit bir test CSP'si şöyle olabilir (kendi kaynaklarınızla değiştirin):
Not: CSP'yi canlı sisteme eklemeden önce, tarayıcı geliştirici konsolunda (`Content-Security-Policy-Report-Only` başlığı ile) hata almadan test etmenizi şiddetle tavsiye ederim.
Değişiklikleri Aktif Etme ve Test Etme
Tüm ayarları yaptıktan sonra:
1. Config'i test edin: `sudo nginx -t`
2. Nginx'i yeniden yükleyin: `sudo systemctl reload nginx` veya `sudo service nginx reload`
Başlıkların düzgün çalışıp çalışmadığını kontrol etmek için tarayıcınızın Geliştirici Araçları'nı (F12) açın, "Network" sekmesine gidin ve sitenizi yenileyin. İstek başlıklarında (Response Headers) yeni eklediğiniz başlıkları görmelisiniz.
Son Söz
Bu başlıklar, web sunucu güvenliğiniz için hızlı ve etkili bir ilk savunma hattıdır. Her biri belirli bir saldırı vektörünü kapatmaya yardımcı olur. Unutmayın, güvenlik bir kerelik bir işlem değil, sürekli bir süreçtir.
Peki ya siz? Sunucularınızda hangi favori Nginx güvenlik ipuçlarını veya püf noktalarını kullanıyorsunuz? Yorumlarda deneyimlerinizi paylaşın, birlikte öğrenelim!
Selam sistemciler!
Neden Bu Başlıklar Önemli?
Tarayıcılar, sunucunuzla iletişim kurarken güvenliği artırmak için çeşitli HTTP başlıklarını destekler. Bu başlıkları doğru şekilde ayarlamak, clickjacking, MIME tipi sızıntısı gibi saldırıları ve kötü amaçlı script'lerin yüklenmesini engellemeye yardımcı olur. Basit bir `add_header` direktifi ile büyük farklar yaratabiliriz.
Hazırlık: Nginx Yapılandırma Dosyanızı Bulun
Öncelikle, üzerinde çalışacağımız dosyayı bulalım. Bu genellikle sitenizin `server` bloğunun bulunduğu dosyadır. Örneğin:
Bash:
sudo nano /etc/nginx/sites-available/siteniz.com
Ya da tüm sitelerde global olarak uygulamak için:
Bash:
sudo nano /etc/nginx/nginx.conf
ÖNEMLİ UYARI: Herhangi bir değişiklik yapmadan önce config dosyanızın sözdizimini mutlaka kontrol edin!
Bash:
sudo nginx -t
Koruma Kalkanlarını Ekleyelim: HTTP Başlıkları
Şimdi, `server` bloğunuzun içine (genellikle `location /` bloğundan önce veya içine) aşağıdaki başlıkları ekleyelim. Bu başlıklar, tarayıcıya nasıl daha güvenli davranması gerektiğini söyler.
NGINX:
server {
listen 80;
server_name siteniz.com www.siteniz.com;
# ... diğer ayarlarınız ...
# Güvenlik Başlıkları
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
# Modern tarayıcılar için ekstra güvenlik (İsteğe bağlı, test edin)
add_header X-XSS-Protection "1; mode=block" always;
location / {
# ... root, index vb. ayarlarınız ...
}
}
Bu Başlıklar Ne Yapar?
- X-Frame-Options "SAMEORIGIN": Sitelerinizin başka bir web sitesi içinde `<frame>`, `<iframe>`, `<embed>` veya `<object>` ile yüklenmesini kontrol eder. `SAMEORIGIN` sadece aynı site içinde çerçevelenmeye izin vererek clickjacking saldırılarını engeller.
- X-Content-Type-Options "nosniff": Tarayıcının, sunucunun belirttiği `Content-Type` dışında dosya türlerini "koklayarak" (sniffing) tespit etmeye çalışmasını engeller. Bu, özellikle kullanıcı yüklemesi yapılan sitelerde kötü amaçlı script'lerin yürütülmesini önlemeye yardımcı olur.
- Referrer-Policy "strict-origin-when-cross-origin": Kullanıcı başka bir siteye tıkladığında veya bir kaynak istediğinde, tarayıcının "Referer" başlığında ne kadar bilgi göndereceğini kontrol eder. Bu politika, hassas URL yol bilgilerinin (path) sızdırılmasını engellerken, güvenli (HTTPS) kaynaklara referans bilgisini korur.
- Permissions-Policy: Tarayıcı özelliklerine (coğrafi konum, mikrofon, kamera, bildirimler vb.) erişimi sınırlar. Yukarıdaki örnek, bu özellikleri tamamen devre dışı bırakır. İhtiyacınıza göre özelleştirebilirsiniz (örn: `microphone=(self "
")`).Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
- X-XSS-Protection: Daha eski tarayıcılarda XSS saldırılarını engellemeye yönelik bir filtreyi etkinleştirir. Modern tarayıcılar bunun yerine Content Security Policy (CSP) kullanır, ancak geriye dönük uyumluluk için eklenebilir.
Bir Sonraki Seviye: Content Security Policy (CSP)
Eğer daha fazla güvenlik istiyorsanız, Content Security Policy (CSP) başlığını eklemek altın standarttır. CSP, sitenizin hangi kaynaklardan (script, stil, resim, font vb.) yükleme yapabileceğini beyaz liste yöntemiyle tanımlar.
Basit bir test CSP'si şöyle olabilir (kendi kaynaklarınızla değiştirin):
NGINX:
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://*.imgyukle.com;" always;
Not: CSP'yi canlı sisteme eklemeden önce, tarayıcı geliştirici konsolunda (`Content-Security-Policy-Report-Only` başlığı ile) hata almadan test etmenizi şiddetle tavsiye ederim.
Değişiklikleri Aktif Etme ve Test Etme
Tüm ayarları yaptıktan sonra:
1. Config'i test edin: `sudo nginx -t`
2. Nginx'i yeniden yükleyin: `sudo systemctl reload nginx` veya `sudo service nginx reload`
Başlıkların düzgün çalışıp çalışmadığını kontrol etmek için tarayıcınızın Geliştirici Araçları'nı (F12) açın, "Network" sekmesine gidin ve sitenizi yenileyin. İstek başlıklarında (Response Headers) yeni eklediğiniz başlıkları görmelisiniz.
Son Söz
Bu başlıklar, web sunucu güvenliğiniz için hızlı ve etkili bir ilk savunma hattıdır. Her biri belirli bir saldırı vektörünü kapatmaya yardımcı olur. Unutmayın, güvenlik bir kerelik bir işlem değil, sürekli bir süreçtir.
Peki ya siz? Sunucularınızda hangi favori Nginx güvenlik ipuçlarını veya püf noktalarını kullanıyorsunuz? Yorumlarda deneyimlerinizi paylaşın, birlikte öğrenelim!