OWASP CRS ModSecurity Yapılandırma ve Yanlış Pozitif Azaltma

OWASP CRS (OWASP Core Rule Set) kurallarını ModSecurity ile yapılandırmak ve en sık karşılaşılan sorun olan yanlış pozitifleri azaltmak için öncelikle CRS paketini kurup ModSecurity’ye tanıtmanız, ardından anomali skorlama eşiği ile paranoya seviyesini uygulamanıza göre ayarlamanız gerekir. OWASP CRS, web uygulamalarına yönelik saldırıları tespit etmek için kullanılan açık kaynaklı bir kural setidir; ancak doğru yapılandırılmadığında meşru kullanıcıları da engelleyebilir.

Amacınız temiz ve güvenli bir WAF (Web Application Firewall) kurulumu elde etmek. Yanlış pozitifler, yani normal kullanıcı hareketlerinin saldırı sanılması, e-ticaret sitelerinde sipariş kaybına, web uygulamalarında ise kullanıcı şikayetlerine yol açar. Aşağıda kurulumdan kural dışlama tekniklerine kadar her adımı uygulamalı olarak bulacaksınız.

Önemli Noktalar

  • OWASP CRS, ModSecurity üzerinde çalışan kural tabanlı bir web uygulama güvenlik katmanıdır.
  • Anomali skorlama modeli sayesinde her istek bir risk puanı alır ve eşik değeri aşanlar engellenir.
  • Paranoya seviyesini 1 ile 4 arasında seçerek koruma gücünü ve yanlış pozitif oranını dengeleyebilirsiniz.
  • Kural dışlama, belirli uygulama veya sayfalar için istisna tanımlayarak yanlış pozitifleri en hızlı şekilde azaltır.
  • Üretim ortamına almadan önce mutlaka test modunda logları inceleyin.

Ön Koşullar

Başlamadan önce sunucunuzda aşağıdaki bileşenlerin hazır olduğundan emin olun. Eksik bir bileşen varsa kurulum adımları yarıda kalabilir veya yanlış sonuçlar verebilir.

  • ModSecurity kurulu ve aktif: Apache için mod_security2, Nginx için libModSecurity veya ModSecurity-nginx modülü gerekir. ModSecurity nedir ve yapılandırması yazısında temel kurulumu bulabilirsiniz.
  • OWASP CRS paketi indirilmiş: Kuralların güncel sürümünü resmi GitHub deposundan veya paket yöneticinizden alabilirsiniz. Sürüm numarasını mutlaka resmi kaynaktan kontrol edin.
  • Yapılandırma dosyalarına erişim: Sunucu üzerinde root veya sudo yetkisine sahip olmanız gerekir.
  • Log okuma aracı: Hata loglarını rahatça inceleyebilmek için terminal erişimi veya bir log görüntüleyici yeterlidir.

Yukarıdaki hazırlıklar tamamsa kuruluma geçebilirsiniz. ModSecurity’nin sürümüne bağlı olarak dosya yolları değişebilir; bu rehberde en yaygın varsayılan yolları kullanacağız.

OWASP CRS Kurulumu

OWASP CRS, ModSecurity’nin işleyeceği kural dosyalarından oluşur. Kurulum süreci, bu kural dosyalarını indirip ModSecurity’ye tanıtmayı kapsar. Paket yöneticiniz CRS paketini sunuyorsa bu adım daha kısa sürecektir.

  1. OWASP CRS paketini resmi GitHub deposundan indirin veya paket yöneticinizle kurun. Örneğin git clone komutu ile indirebilir veya dağıtımınızın deposundan apt install modsecurity-crs gibi bir komut çalıştırabilirsiniz.
  2. İndirilen klasör içindeki crs-setup.conf.example dosyasını crs-setup.conf olarak kopyalayın. Bu dosya CRS’in çalışma modunu belirleyen ana yapılandırma dosyasıdır.
  3. ModSecurity ana yapılandırma dosyanıza Include satırlarını ekleyin. CRS kural dosyalarının sırayla yüklenmesini sağlayan Include direktifleri şu şekilde olabilir:
Include /etc/modsecurity/crs/crs-setup.conf
Include /etc/modsecurity/crs/rules/*.conf

Dosya yollarını kendi sisteminize göre güncelleyin. Doğru Include sıralaması kritik önem taşır: önce crs-setup.conf yüklenmeli, ardından kural dosyaları gelmelidir.

Kurulumu doğrulamak için Apache veya Nginx servisini yeniden başlatın. Hata almadıysanız CRS artık aktiftir. Ancak varsayılan ayarlar çoğu uygulama için oldukça sıkı olabilir; bu yüzden bir sonraki bölümde temel yapılandırmayı ele alıyoruz.

Sunucu terminalinde başarılı yeniden başlatma mesajlarını gösteren sistem yöneticisi elleri

Temel ModSecurity Yapılandırması

OWASP CRS yüklendikten sonra sıra gelen isteklerin nasıl değerlendirileceğini belirlemeye gelir. CRS, anomali skorlama adı verilen bir model kullanır. Her istek çeşitli kurallar tarafından incelenir ve riskli bulunan her hareket için istek bir puan toplar.

Anomali skorlama modelinde iki önemli değer vardır: inbound anomaly score threshold ve paranoia level. Eşik değeri, bir isteğin engellenmesi için toplam skorunun ulaşması gereken seviyeyi belirler. Paranoya seviyesi ise ne kadar şüpheci davranılacağını kontrol eder.

crs-setup.conf dosyasında aşağıdaki ayarları düzenleyebilirsiniz:

SecAction \
  "id:900000,\
   phase:1,\
   nolog,\
   pass,\
   t:none,\
   setvar:tx.blocking_paranoia_level=1,\
   setvar:tx.inbound_anomaly_score_threshold=5,\
   setvar:tx.outbound_anomaly_score_threshold=4"

Bu örnekte paranoia level 1 olarak ayarlanmıştır; bu en az yanlış pozitif üreten, dolayısıyla başlangıç için en uygun seviyedir. Eşik değeri 5, orta düzey bir koruma sağlar. Daha sıkı koruma istiyorsanız paranoia level’ı 2 veya 3’e yükseltebilirsiniz; ancak bu yanlış pozitif riskini artırır.

Önerilen yaklaşım şudur: önce paranoia level 1 ile başlayın, logları izleyin, uygulamanızın normal davranışını öğrenin. Ardından gerekiyorsa kademeli olarak seviyeyi yükseltin. Böylece güvenlik ile kullanılabilirlik arasında sağlıklı bir denge kurarsınız.

İpucu: Paranoya seviyesini değiştirdiğinizde mutlaka web sunucusunu yeniden başlatın ve loglarda crs-setup.conf kaynaklı hata olup olmadığını kontrol edin.

Yanlış Pozitifleri Tespit Etme

Yanlış pozitif, normal bir kullanıcının isteğinin saldırı olarak işaretlenmesidir. Örneğin bir kullanıcının adres alanına “select” kelimesini içeren bir sokak adı yazması, SQL enjeksiyon kuralını tetikleyebilir. Bu tür durumları tespit etmek için logları doğru okumak gerekir.

ModSecurity loglarında engellenen her istek için bir ModSecurity: Access denied satırı görürsünüz. Bu satırın hemen üstünde veya altında hangi kuralın tetiklendiğini gösteren bir Matched "Operator ..." against ... ifadesi yer alır. Tetiklenen kuralın ID’sini not edin; örneğin 941160 gibi.

tail -f /var/log/apache2/error.log | grep -i modsecurity

Yukarıdaki komutla canlı log izleyebilirsiniz. Yanlış pozitif olduğunu düşündüğünüz isteği bulduğunuzda, kullanıcının gerçekte ne yaptığını anlamak için REQUEST_URI ve ARGS değerlerine bakın. Kullanıcı masum bir form dolduruyorsa bu bir yanlış pozitiftir.

Test modunda çalışmak da tespiti kolaylaştırır. SecRuleEngine DetectionOnly olarak ayarlandığında ModSecurity yalnızca loglar, istekleri engellemez. Bu sayede kullanıcıları etkilemeden kuralları değerlendirebilirsiniz.

Sunucu odasında güvenlik loglarını gösteren monitör sahnesi

Yanlış Pozitifleri Azaltma Yöntemleri

Yanlış pozitifleri azaltmanın birden çok yolu vardır. Hangi yöntemi seçeceğiniz, tetiklenen kuralın türüne ve etkilenen uygulamanın ihtiyacına bağlıdır. Aşağıda en yaygın ve etkili üç yöntemi uygulamalı olarak anlatıyorum.

1. Kural Dışlama (Rule Exclusion)

Belirli bir kuralın belirli bir sayfa veya parametre için devre dışı bırakılması en hedefli çözümdür. Tüm uygulamayı kuralın dışında bırakmak yerine yalnızca sorunlu bölgeyi istisna tutarsınız.

Örneğin, 941160 numaralı SQL enjeksiyon kuralı, /yorum-ekle sayfasındaki mesaj parametresinde sürekli yanlış tetikleniyorsa şu kural dışlamayı kullanabilirsiniz:

SecRule REQUEST_URI "@beginsWith /yorum-ekle" \
  "id:10001,\
   phase:1,\
   pass,\
   nolog,\
   ctl:ruleRemoveById=941160"

Bu örnek yalnızca /yorum-ekle sayfasına gelen isteklerde 941160 kuralını devre dışı bırakır. Diğer sayfalarda kural çalışmaya devam eder. Böylece güvenlikten ödün vermeden yanlış pozitifi giderirsiniz.

2. Kural Hedefini Güncelleme

Bazen kural doğru çalışıyordur ancak yanlış bir alanı inceliyordur. Örneğin, kural tüm argümanları tararken yalnızca kullanıcı adı alanında sorun çıkarıyordur. SecRuleUpdateTargetById ile kuralın incelediği hedefleri değiştirebilirsiniz.

SecRuleUpdateTargetById 942100 "!ARGS:aciklama"

Bu satır, 942100 numaralı kuralın aciklama parametresini incelemesini engeller. Kural diğer parametreleri taramaya devam eder. Bu yöntem, kuralı tamamen kapatmaktan daha güvenlidir.

3. Anomali Skor Eşiğini Ayarlama

Yanlış pozitifler çok sayıda farklı kuraldan geliyorsa ve her biri küçük puanlar topluyorsa, eşik değerini bir miktar yükseltmek toplu bir rahatlama sağlayabilir. Ancak bu yöntem dikkatli kullanılmalıdır, çünkü gerçek saldırıların da engellenme ihtimalini azaltır.

Varsayılan eşik 5’tir. Bu değeri 8’e yükseltmek, düşük skorlu isteklerin engellenmesini önler. Yine de bu değişikliği yalnızca diğer yöntemler yetersiz kaldığında yapın ve logları yakından izleyin.

Dikkat: Eşik değerini yükseltmeden önce hangi kuralların tetiklendiğini mutlaka inceleyin. Toplu çözümler, belirli bir saldırı türünü gözden kaçırmanıza neden olabilir.

Yanlış pozitif azaltma sürecinde en doğru sıra şudur: önce kural dışlama, sonra hedef güncelleme, en son eşik ayarı. Böylece koruma seviyesini mümkün olduğunca yüksek tutarsınız.

Temiz bir masada dizüstü bilgisayarla güvenlik duvarı yapılandırma dosyalarını inceleyen geliştirici

Sık Karşılaşılan Sorunlar ve Çözümleri

CRS yapılandırma sürecinde bazı hatalar tekrar tekrar karşımıza çıkar. Bunları baştan bilmek, sorun giderme süresini kısaltır. İşte en sık görülen sorunlar ve pratik çözümleri.

  1. Kurallar hiç çalışmıyor: SecRuleEngine değerini kontrol edin. On yerine Off veya DetectionOnly olabilir. Ayrıca Include satırlarının doğru yüklendiğinden emin olun.
  2. Çok fazla yanlış pozitif var: Paranoya seviyesini 1’e düşürün ve eşik değerini kontrol edin. Loglarda en çok tetiklenen kural ID’lerini tespit edip hedefli dışlamalar uygulayın.
  3. Kural dışlama çalışmıyor: Dışlama kuralının ID’sinin (örneğin 10001) benzersiz olduğundan emin olun. Ayrıca dışlama kuralının, engelleyen kuraldan önce çalıştığından emin olun; faz sırası kritik önemdedir.
  4. Loglar çok kalabalık: SecAuditLogParts ayarını düzenleyerek yalnızca gerekli bölümleri loglayın. Gereksiz detayları kapatmak performansı da artırır.
  5. Web sunucusu yeniden başlatılamıyor: Büyük olasılıkla yapılandırma dosyasında bir sözdizimi hatası var. apachectl configtest veya Nginx için nginx -t komutuyla hatayı bulun.

Bu sorunlardan herhangi biriyle karşılaşırsanız yapılandırma dosyalarınızı adım adım gözden geçirin. Çoğu hata, basit bir yazım hatası veya eksik Include satırından kaynaklanır.

Sıkça Sorulan Sorular

OWASP CRS ile ModSecurity arasındaki fark nedir?

ModSecurity, istekleri analiz eden motor; OWASP CRS ise bu motora yüklenen kural setidir. ModSecurity tek başına hiçbir isteği engellemez; hangi isteklerin saldırı sayılacağını CRS belirler.

Paranoya seviyesi 4’e çıkarılmalı mı?

Hayır, çoğu uygulama için paranoia level 4 aşırı sıkıdır ve çok sayıda yanlış pozitif üretir. Yalnızca çok yüksek güvenlik gerektiren, kullanıcı etkileşimi az olan sistemlerde tercih edilmelidir.

Yanlış pozitifleri tamamen ortadan kaldırmak mümkün mü?

Bir WAF’ta yanlış pozitifleri tamamen sıfıra indirmek pratikte mümkün değildir. Amaç, yanlış pozitifleri kabul edilebilir bir düzeye çekmek ve meşru kullanıcıların işlemlerini etkilememektir.

Kural dışlamalarını nereye yazmalıyım?

Kendi özel dışlama kurallarınızı ayrı bir dosyada tutmanız önerilir. Bu dosyayı CRS kural dosyalarından sonra Include edin; böylece güncellemelerde özel kurallarınız kaybolmaz.

Hangi Yöntemi Seçmelisiniz?

Doğru yöntem, karşılaştığınız yanlış pozitifin türüne bağlıdır. Tek bir kural tek bir sayfada tetikleniyorsa kural dışlama en temiz çözümdür. Birden çok kural aynı parametreye takılıyorsa hedef güncelleme daha uygun olur. Eşik ayarı ise son çare olarak düşünülmelidir.

OWASP CRS + ModSecurity ikilisi, doğru yapılandırıldığında web uygulamalarınız için güçlü bir güvenlik katmanı oluşturur. Ancak kurulumdan sonra sürekli log izleme ve ince ayar yapma disiplini gerektirir. CRS’in yeni sürümleri çıktıkça kuralları güncellemeyi ve dışlamalarınızı gözden geçirmeyi ihmal etmeyin.

Daha geniş bir güvenlik stratejisi için Mod Security yapılandırması ipuçları yazısını inceleyebilirsiniz. Barındırma tarafında güvenliği önceden sağlanmış bir altyapı arıyorsanız Linux Hosting paketlerimizde ModSecurity ve temel güvenlik önlemleri hazır olarak sunulur.

İlginizi Çekebilir:WordPress XML Site Haritası: Google İçin Oluşturma Rehberi
share Paylaş facebook pinterest whatsapp x print

Benzer İçerikler

500 Plesk\Exception\Database Hatası (SQLSTATE 2002) – Kesin Çözüm Rehberi
CWP Üzerine Roundcube 1.5.11 – Modern, Güvenli ve Güncel
CWP Roundcube 1.5.11 Kurulumu: Adım Adım Güncelleme Rehberi
modsecurity nedir ve yapilandirmasi nasil yapilir 2026
Imunify360 vs CSF + Maldet + Fail2Ban + ClamAV
Kısıtlı (Jailed) SSH Ortamında Node.js ve PM2 Kurulumu: Kesin Çözüm Rehberi
CentOS Web Panel’de Snuffleupagus ve ModSecurity Kullanımı: SaviorHost’un Güvenlik Stratejisi

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Are you human? Please solve:Captcha


▲
Saviorhost İnternet Hizmetleri | © 2026 |