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.

Nginx Kurulumundan Sonra Yapılması Gereken 10 Temel Güvenlik ve Performans Kontrolü

asternix

Üye
Katılım
14 Mart 2026
Mesajlar
15
Merhaba arkadaşlar, bugün sizlere yeni bir sunucuya Nginx kurduktan sonra, hemen uygulamanızı tavsiye ettiğim 10 temel güvenlik ve performans kontrolünü anlatacağım. Bu adımlar, sunucunuzu temel saldırı vektörlerine karşı korumanıza ve trafiği daha verimli yönetmenize yardımcı olacak. Benim de yeni kurulumlarımda ilk yaptığım işlemler bunlar.

🔍 1. Gereksiz Modülleri Devre Dışı Bırakın

Nginx, varsayılan olarak birçok modülle derlenir. Eğer kendi Nginx'inizi kaynaktan derlediyseniz, ihtiyacınız olmayan modülleri (örneğin autoindex, gzip vs.) derleme aşamasında atlayabilirsiniz. Ancak paket yöneticisiyle kurduysanız, kullanmadığınız modülleri yapılandırma dosyalarında etkisiz hale getirebilirsiniz. Bu, hafif bir güvenlik avantajı ve küçük de olsa bir kaynak tasarrufu sağlar.

🛡️ 2. Sunucu Token'ını (Server Tokens) Gizleyin

Varsayılan olarak Nginx, hata sayfalarında ve sunucu başlığında (header) kendi sürüm numarasını gösterir. Bu, bir saldırganın bilinen açıklardan yararlanmasını kolaylaştırır. Bu bilgiyi gizlemek için ana yapılandırma dosyasında şu ayarı yapın.

NGINX:
server_tokens off;

Bu ayarı genellikle /etc/nginx/nginx.conf dosyasının `http` bloğuna eklerim.

🚫 3. Tehlikeli HTTP Metotlarını Kısıtlayın

Sunucunuz sadece GET, POST, HEAD gibi standart metotlara ihtiyaç duyuyorsa, DELETE, TRACE, TRACK gibi potansiyel olarak tehlikeli metotları engelleyin. Bunun için ilgili `server` bloğuna bir `location` ekleyebilirsiniz.

NGINX:
location / {
    limit_except GET POST HEAD {
        deny all;
    }
    # ... diğer kurallarınız
}

⚠️ 4. Kök Dizin İçin Otomatik Dizin Listelemesini Kapatın

Eğer bir web sitesi sunuyorsanız, kök dizinde (`/`) veya herhangi bir alt dizinde otomatik dizin listelemesinin açık olmamasına dikkat edin. Bu, yanlışlıkla hassas dosyaların görüntülenmesini önler. Kontrol etmek için `autoindex` direktifinin `off` olduğundan emin olun.

NGINX:
autoindex off;

📁 5. Hassas Dosyalara Erişimi Engelleme

`.git`, `.env`, `.sql`, `backup.tar.gz` gibi hassas yapılandırma veya yedek dosyalarınızın web üzerinden erişilebilir olmaması çok önemli. Bunun için yaygın bir pattern kullanabilirsiniz.

NGINX:
location ~ /\.(?!well-known) {
    deny all;
    access_log off;
    log_not_found off;
}

location ~ \.(sql|tar|gz|log|env|bak)$ {
    deny all;
    access_log off;
    log_not_found off;
}

⚙️ 6. Worker Süreçlerini ve Bağlantılarını Optimize Edin

Sunucunuzun donanım kaynaklarına göre `worker_processes` ve `worker_connections` değerlerini ayarlamak performansı doğrudan etkiler. `worker_processes` için genelde otomatik (`auto`) bırakırım, ancak `worker_connections` değerini yükseltmek faydalı olur.

NGINX:
# /etc/nginx/nginx.conf dosyasının başında
worker_processes auto;
events {
    worker_connections 4096; # Bu değeri sisteminizin limitlerine göre ayarlayın (ulimit -n ile kontrol edebilirsiniz)
    multi_accept on;
}

🔒 7. SSL/TLS Yapılandırmasını Sıkılaştırın (Eğer SSL Kullanıyorsanız)

Modern, güvenli şifreleme paketlerini kullanın ve eski, güvensiz protokolleri (SSLv2, SSLv3, TLS 1.0, TLS 1.1) devre dışı bırakın. Benim genelde kullandığım temel bir yapı şöyle:

NGINX:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;

🚀 8. Gzip/Brotli Sıkıştırmasını Etkinleştirin

Bant genişliğinizden tasarruf etmek ve sayfa yükleme sürelerini kısaltmak için metin tabanlı içerikleri (html, css, js, xml) sıkıştırın. Brotli daha iyi bir sıkıştırma oranı sağlar, ancak Nginx'i özel modülle derlemeniz gerekebilir. Gzip ise hazırdır.

NGINX:
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss application/atom+xml image/svg+xml;

📊 9. Temel Önbellekleme (Caching) Kurallarını Ekleyin

Statik dosyalar (resimler, css, js) için tarayıcı önbellekleme sürelerini belirleyin. Bu, sunucu yükünü azaltır ve kullanıcı deneyimini iyileştirir.

NGINX:
location ~ \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2)$ {
    expires 365d;
    add_header Cache-Control "public, immutable";
    access_log off;
}

✅ 10. Yapılandırma Dosyalarını Test Edip Nginx'i Yeniden Başlatın

Her değişiklikten sonra mutlaka yapılandırma dosyalarının sözdizimini kontrol edin ve hatasızsa servisi yeniden başlatın.

Bash:
sudo nginx -t

Eğer "syntax is ok" ve "test is successful" mesajlarını görürseniz, güvenle yeniden başlatabilirsiniz.

Bash:
sudo systemctl reload nginx  # veya restart

Benim yeni kurulumlarda ilk baktığım ve uyguladığım kontroller genel olarak bunlar. Tabii ki her sunucunun ihtiyacı farklı olabilir, bu ayarlar temel ve güvenli bir başlangıç noktası sağlar.

Siz bu kontrollerden sonra kendi sunucularınızda hangi ek ayarları yapıyorsunuz? Ya da bu adımlarla ilgili sorusu olan arkadaşlar aşağıya yazsın, elimden geldiğince yardımcı olmaya çalışırım.
 

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