Nginx ile Web Sunucunuzu Güçlendirin: Temel Güvenlik Başlıkları Rehberi 🛡️

webnix

Üye
Katılım
14 Mart 2026
Mesajlar
4
Nginx ile Web Sunucunuzu Güçlendirin: Temel Güvenlik Başlıkları Rehberi 🛡️

Selam sistemciler! 🐧 Bugün terminalin tozunu alıp, Nginx'in arka kapılarını kapatacağız. Bir web sunucusunu sadece hızlı değil, aynı zamanda sağlam bir kale gibi güvenli hale getirmek hepimizin ortak hedefi. Bu rehberde, "Nginx ile Web Sunucunuzu Güçlendirin: Temel Güvenlik Başlıkları Rehberi 🛡️" başlığı altında, uygulayabileceğiniz pratik ve etkili güvenlik önlemlerini adım adım ele alacağız. Hadi başlayalım!

1. Sunucu Bilgilerini ve Versiyonu Gizlemek

Varsayılan olarak Nginx, hata sayfalarında ve bazen yanıt başlıklarında kendi versiyon numarasını gösterir. Bu, bir saldırgan için değerli bir bilgidir. Bu bilgiyi gizlemek için:

NGINX:
http {
    server_tokens off;
    # ... diğer ayarlar
}

Bu basit ama etkili ayar, `Server:` başlığında sadece "nginx" yazmasını sağlar, versiyon numarasını gizler.

2. Gereksiz HTTP Metotlarını Engellemek

Web sunucunuzun sadece ihtiyaç duyduğu HTTP metotlarına (GET, POST) izin vermesi güvenliği artırır. Özellikle `TRACE` veya `DELETE` gibi potansiyel riskli metotları engelleyebilirsiniz. Bunun için `limit_except` bloğunu kullanabilirsiniz:

NGINX:
location / {
    limit_except GET POST {
        deny all;
    }
    # ... diğer location ayarları
}

3. Güvenli HTTP Başlıkları Eklemek

Modern tarayıcıların anlayacağı ve sitenizi daha güvenli hale getirecek bazı başlıklar vardır. 🛡️ Bunları Nginx konfigürasyonunuza ekleyelim:

NGINX:
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;

* X-Frame-Options: Sitenizin başka bir site içinde iframe olarak gösterilmesini (clickjacking saldırılarına karşı) engeller.
* X-Content-Type-Options: Tarayıcının dosya türlerini "sniff" etmesini (tahmin etmesini) engelleyerek MIME tipi atlama saldırılarını önler.
* Referrer-Policy: Ziyaretçilerinizin hangi siteden geldiği bilgisinin (referrer) ne kadar paylaşılacağını kontrol eder.
* Permissions-Policy: Tarayıcı özelliklerine (konum, mikrofon, kamera gibi) erişimi kısıtlar.

4. İçerik Güvenlik Politikası (CSP) ile XSS'e Karşı Koruma

CSP, sitenizin hangi kaynaklardan (script, stil, resim vb.) içerik yükleyebileceğini tanımlar ve Cross-Site Scripting (XSS) saldırılarını engellemede çok güçlüdür. ⚙️ Basit bir başlangıç politikası:

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:;" always;

**Önemli:** CSP kurallarınızı sitenizin ihtiyaçlarına göre çok dikkatli yapılandırın, aksi takdirde siteniz düzgün çalışmayabilir.

5. SSL/TLS Yapılandırmasını Sertleştirmek

SSL sertifikanız varsa, güvenliği artırmak için protokolleri ve şifreleme yöntemlerini (cipher suites) güncelleyin.

NGINX:
ssl_protocols TLSv1.2 TLSv1.3; # TLSv1.0 ve TLSv1.1'i devre dışı bırak
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_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;

Bu ayarlar, daha güçlü şifreleme ve daha güvenli el sıkışma (handshake) süreçleri sağlar.

6. Kötü Niyetli User-Agent ve IP Adreslerini Engellemek

Bilinen tarama araçlarının (nikto, sqlmap vb.) veya belirli IP adreslerinin erişimini engelleyebilirsiniz. Bunun için `map` bloğu ve `if` koşulu kullanabilirsiniz (if kullanımında dikkatli olun):

NGINX:
http {
    map $http_user_agent $bad_bot {
        default 0;
        ~*(nikto|sqlmap|wget|curl|libwww-perl) 1;
    }

    server {
        if ($bad_bot) {
            return 403;
        }
        # ... diğer server ayarları
    }
}

IP engelleme için ise `deny` direktifini kullanabilirsiniz:

NGINX:
location /admin {
    deny 123.123.123.123;
    deny 10.0.0.0/8;
    allow all;
    # ... admin paneli ayarları
}

7. Dosya Yükleme Limitlerini ve Zaman Aşımlarını Ayarlamak

Sunucunuzu aşırı büyük dosya yüklemelerine veya uzun süren bağlantılara karşı koruyun. 🌐

NGINX:
client_max_body_size 10M; # Maksimum yükleme boyutunu 10MB ile sınırla
client_body_timeout 10s;
client_header_timeout 10s;
send_timeout 10s;

**Son Kontroller ve Yeniden Başlatma**

Tüm bu değişiklikleri yaptıktan sonra, Nginx konfigürasyonunuzun sözdizimini kontrol etmeyi unutmayın:

Bash:
sudo nginx -t

Eğer her şey yolundaysa, Nginx'i yeniden yükleyin:

Bash:
sudo systemctl reload nginx  # veya sudo service nginx reload

Bu adımlar, Nginx tabanlı web sunucunuz için sağlam bir güvenlik temeli oluşturacaktır. Unutmayın, güvenlik tek seferlik bir iş değil, sürekli bir süreçtir. Loglarınızı düzenli takip etmek ve güncellemeleri asla ertelememek en önemli kurallardır.

Peki ya siz? Sunucularınızı güvence altına alırken en çok hangi yöntemlere güveniyorsunuz? Paylaşmak istediğiniz ek ipuçlarınız var mı? Yorumlarda buluşalı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
Sol Reklam Alanı
Sağ Reklam Alanı