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 ile Web Uygulama Güvenlik Duvarı (WAF) Kurulumu: ModSecurity ve OWASP Core Rule Set

asteron

Üye
Katılım
14 Mart 2026
Mesajlar
7
Merhaba arkadaşlar, bugün sizlere Nginx sunucularınızın güvenliğini bir üst seviyeye taşıyacak, özellikle de web uygulamalarınızı hedef alan SQL Injection, XSS gibi yaygın saldırılara karşı kalkan görevi görecek bir Web Uygulama Güvenlik Duvarı (WAF) kurulumunu adım adım anlatacağım. ModSecurity modülü ve ücretsiz, güçlü OWASP Core Rule Set (CRS) kurallarını kullanacağız. Benim sunucularda kritik öneme sahip uygulamaların önünde mutlaka çalıştırdığım bir yöntem.

🔍 Neden ModSecurity ve OWASP CRS?

Nginx varsayılan olarak temel güvenlik sağlar ancak Layer 7 (uygulama katmanı) saldırılarını tespit etmek ve engellemek için özelleşmiş bir çözüme ihtiyaç duyabilirsiniz. ModSecurity, bir WAF motorudur. OWASP CRS ise bu motora takabileceğiniz, dünyanın dört bir yanındaki güvenlik uzmanları tarafından geliştirilen, sürekli güncellenen bir dizi saldırı imzası (kural) paketidir. İkisini bir araya getirdiğinizde oldukça etkili ve ücretsiz bir koruma elde edersiniz.

⚙️ Hazırlık ve Bağımlılıkların Kurulumu

İlk olarak sistemimizi güncelleyelim ve gerekli paketleri kuralım. Ben genelde Ubuntu/Debian tabanlı sistemlerde çalıştığım için komutlar ona göre olacak. CentOS/RHEL kullanıyorsanız `yum` veya `dnf` ile adapte edebilirsiniz.

Bash:
sudo apt-get update
sudo apt-get install -y git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-dev libxml2-dev libyajl-dev libcurl4-openssl-dev

Bu paketler, ModSecurity'i derlemek ve Nginx ile entegre etmek için gerekli temel araçlar ve kütüphaneler.

📦 ModSecurity'i Kaynaktan Derleme

Nginx, Apache'nin aksine ModSecurity'yi dinamik olarak yükleyebileceğiniz bir modül olarak sunmuyor. Bu yüzden Nginx'i, ModSecurity modülünü içerecek şekilde yeniden derlememiz gerekiyor. Öncelikle ModSecurity'nin kendisini indirip derleyelim.

Bash:
cd /usr/src
sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
sudo git submodule init
sudo git submodule update
sudo ./build.sh
sudo ./configure
sudo make
sudo make install

Şimdi sıra, ModSecurity-nginx bağlayıcısını (connector) indirmekte.

Bash:
cd /usr/src
sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git

⚠️ Nginx'i ModSecurity ile Yeniden Derleme

Bu en kritik adım. Mevcut Nginx'inizin hangi modüllerle derlendiğini öğrenmek için `nginx -V` komutunu çalıştırın. Çıkan `configure arguments:` satırının tamamını kopyalayın. Şimdi Nginx kaynağını indirelim (mevcut sürümünüzle aynı sürümü indirmeniz şiddetle tavsiye edilir).

Bash:
cd /usr/src
# Örnek olarak 1.24.0 sürümü. 'nginx -V' komutunun ilk satırından sürümünüzü öğrenin.
sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz
sudo tar -xzvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

Şimdi, önceki adımda kopyaladığınız `configure arguments:` satırını kullanarak, sonuna ModSecurity bağlayıcısının yolunu ekleyerek yapılandırmayı çalıştırın.

Bash:
sudo ./configure [PASTE_YOUR_NGINX_CONFIGURE_ARGUMENTS_HERE] --add-module=/usr/src/ModSecurity-nginx
sudo make
sudo make install

Derleme başarılı olduysa, `nginx -V` komutunu tekrar çalıştırdığınızda çıktının sonunda `--add-module=/usr/src/ModSecurity-nginx` ifadesini görmelisiniz.

📁 OWASP Core Rule Set (CRS) Kurallarını Yapılandırma

ModSecurity motorumuz hazır, şimdi ona "akıl" verecek kuralları yükleyelim.

Bash:
cd /etc
sudo git clone --depth 1 https://github.com/coreruleset/coreruleset.git /etc/nginx/owasp-crs
cd /etc/nginx/owasp-crs
sudo cp crs-setup.conf.example crs-setup.conf

Temel yapılandırma dosyamızı oluşturalım: /etc/nginx/modsecurity.conf

NGINX:
SecRuleEngine On
SecAuditEngine RelevantOnly
SecAuditLog /var/log/nginx/modsec_audit.log
SecAuditLogType Serial
SecAuditLogParts ABCFHZ
SecAuditLogStorageDir /var/log/nginx/modsec/

# OWASP CRS'yi dahil et
Include /etc/nginx/owasp-crs/crs-setup.conf
Include /etc/nginx/owasp-crs/rules/.conf

OWASP CRS kurallarını etkinleştirmeden önce, /etc/nginx/owasp-crs/crs-setup.conf dosyasını inceleyip `SecDefaultAction` gibi temel ayarları kendi ortamınıza göre (örneğin, sadece loglamak `phase:1,log,auditlog,pass` veya loglayıp engellemek `phase:1,log,auditlog,deny,status:403`) düzenleyebilirsiniz. İlk kurulumda sadece loglama (DetectionOnly) modunda çalıştırmanızı öneririm.

🔧 Nginx Site Konfigürasyonuna Entegrasyon

Artık her şey hazır. Koruma altına almak istediğiniz bir `server` bloğunun içine aşağıdaki direktifleri ekleyin.

NGINX:
server {
    listen 80;
    server_name example.com;

    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsecurity.conf;

    location / {
        # ... diğer ayarlarınız
    }
}

Son adım olarak Nginx'i yeniden başlatalım ve logları kontrol edelim.

Bash:
sudo nginx -t  # Yapılandırmayı test et
sudo systemctl restart nginx  # veya sudo service nginx restart
sudo tail -f /var/log/nginx/modsec_audit.log  # Canlı logları izle

Log dosyasında, sitenize gelen isteklerin analiz edildiğini göreceksiniz. Birkaç gün boyunca logları inceleyip yanlış pozitif (false positive) alarm olup olmadığını gözlemledikten sonra, crs-setup.conf dosyasında `SecRuleEngine` değerini `DetectionOnly`'dan `On`'a çevirerek tam korumayı aktif edebilirsiniz.

💡 Son Tavsiyeler ve Performans

ModSecurity, özellikle yoğun kurallarla çalışırken CPU kullanımını artırabilir. `worker_processes` ve `worker_connections` değerlerinizi gözden geçirin. Ayrıca OWASP CRS içindeki gereksiz bulduğunuz veya uygulamanızı etkileyen kuralların ID'lerini tespit edip, `modsecurity.conf` dosyanıza `SecRuleRemoveById 123456` şeklinde ekleyerek devre dışı bırakabilirsiniz. Bu ince ayar çok önemlidir.

Umarım bu rehber faydalı olmuştur. WAF kurulumu ilk bakışta karmaşık görünebilir, ancak adımları takip ederseniz sağlam bir koruma elde edersiniz. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Özellikle performans optimizasyonu için önerileriniz var mı? Ya da kurulum sırasında takıldığınız bir yer oldu mu? Sorularınızı aşağıya yazmaktan çekinmeyin, 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