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 ModSecurity Kurulumu ve Temel WAF Kuralları 🛡️

devron

Üye
Katılım
14 Mart 2026
Mesajlar
6
Nginx ile ModSecurity Kurulumu ve Temel WAF Kuralları 🛡️

Selam sistemciler! 🐧 Bugün, web sunucularımızı dış dünyanın kötü niyetli isteklerine karşı nasıl zırhlandıracağımıza bakacağız. Apache'de sıkça duyduğumuz ModSecurity'yi, Nginx'in gücüyle birleştirip kendi Web Uygulama Güvenlik Duvarımızı (WAF) kuracağız. Terminalin tozunu almaya hazır mısınız? ⚙️

Neden ModSecurity?
Basitçe söylemek gerekirse, ModSecurity sunucunuzla istemci arasında bir filtre görevi görür. Gelen her HTTP/HTTPS isteğini ve giden cevabı, tanımlanmış güvenlik kurallarına göre analiz eder. SQL Enjeksiyonu, Cross-Site Scripting (XSS), Dosya Erişim İhlalleri gibi yaygın saldırıları tespit edip engelleyebilir. Bu, uygulama katmanında ekstra ve çok güçlü bir güvenlik katmanı demektir.

Adım 1: Gerekli Bağımlılıkları Yükleyelim
İlk olarak, sistemimizi güncelleyip gerekli paketleri kuralım. Bu rehberi Ubuntu/Debian tabanlı bir sistem için hazırlıyorum.

Bash:
sudo apt update && sudo apt upgrade -y
sudo apt install -y git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-dev libxml2-dev libyajl-dev curl doxygen zlib1g-dev

Adım 2: ModSecurity 3'ü (libmodsecurity) Derleyip Kuruyoruz
ModSecurity'nin çekirdek kütüphanesini (v3) kaynaktan derleyeceğiz.

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

Adım 3: Nginx için ModSecurity Bağlayıcısını (Connector) Kuruyoruz
Şimdi, Nginx'in ModSecurity kütüphanesiyle konuşmasını sağlayacak bağlayıcı modülü derleyeceğiz. Bu işlem için Nginx'i kaynaktan yeniden derlememiz gerekecek. Mevcut Nginx sürümünüzü kontrol edin (`nginx -v`).

Bash:
cd /usr/src
# Nginx kaynak kodunu indirin (Örnek olarak 1.24.0, kendi sürümünüzü yazın)
sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz
sudo tar -xzvf nginx-1.24.0.tar.gz

# ModSecurity-nginx bağlayıcısını indirin
sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git

# Nginx'in derleme parametrelerini öğrenin (ÇOK ÖNEMLİ!)
nginx -V 2>&1 | grep arguments

`nginx -V` komutunun çıktısındaki `--with-...` şeklindeki mevcut yapılandırma parametrelerini kopyalayın. Şimdi Nginx'i, bu parametrelere `--add-dynamic-module=/usr/src/ModSecurity-nginx` ekleyerek yeniden derleyeceğiz.

Bash:
cd /usr/src/nginx-1.24.0
# Aşağıdaki './configure' satırı BİR ÖRNEKTİR. Kendi parametrelerinizi ekleyin!
sudo ./configure [PASTE_YOUR_EXISTING_PARAMS_HERE] --add-dynamic-module=/usr/src/ModSecurity-nginx
sudo make modules

Derleme bittikten sonra, sadece yeni modülleri kopyalayacağız. Nginx binary'sinin tamamını değil.

Bash:
# Obj dizinindeki modül dosyasını Nginx'in modül dizinine kopyala
sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/

Adım 4: Nginx Yapılandırmasını ve Temel Kuralları Ayarlayalım
Öncelikle, Nginx'in ana yapılandırma dosyasında modülümüzü yükleyelim.

Bash:
sudo nano /etc/nginx/nginx.conf

`http {` bloğunun en üstüne şu satırı ekleyin:
NGINX:
load_module modules/ngx_http_modsecurity_module.so;

Şimdi ModSecurity için bir global konfigürasyon dosyası ve kural dizini oluşturalım.

Bash:
sudo mkdir /etc/nginx/modsec
sudo wget -P /etc/nginx/modsec/ https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended
sudo wget -P /etc/nginx/modsec/ https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/unicode.mapping
sudo mv /etc/nginx/modsec/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

`modsecurity.conf` dosyasını düzenleyip ModSecurity'yi çalışır hale getirelim:
Bash:
sudo nano /etc/nginx/modsec/modsecurity.conf
`SecRuleEngine` satırını bulup `DetectionOnly` yerine `On` yapın:
Kod:
SecRuleEngine On

Adım 5: OWASP Core Rule Set (CRS) Kurallarını Ekleyelim
ModSecurity'nin kalbi kurallardır. En güncel ve etkili kurallar için OWASP CRS'yi kullanacağız.

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

Şimdi, Nginx'e ModSecurity konfigürasyonunu ve kurallarını nerede bulacağını söyleyen bir ana yapılandırma dosyası oluşturalım.

Bash:
sudo nano /etc/nginx/modsec/main.conf

İçine şunları yazın:
NGINX:
# ModSecurity'in temel konfigürasyon dosyasını dahil et
Include /etc/nginx/modsec/modsecurity.conf

# OWASP CRS kurallarını dahil et
Include /etc/nginx/modsec/coreruleset/crs-setup.conf
Include /etc/nginx/modsec/coreruleset/rules/*.conf

Adım 6: Sanal Host (Server Bloğu) Yapılandırması
Artık korumak istediğiniz web sitesinin Nginx server bloğuna (`/etc/nginx/sites-available/siteniz`) ModSecurity'yi etkinleştireceğiz.

Server bloğunun içine, `location / {` kısmından önce şu direktifi ekleyin:
NGINX:
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;

Adım 7: Test ve Canlıya Alma
Tüm ayarları kaydettikten sonra, Nginx yapılandırmasının doğruluğunu test edip servisi yeniden başlatalım.

Bash:
sudo nginx -t
Eğer "syntax is ok" ve "test is successful" mesajını alırsanız:

Bash:
sudo systemctl restart nginx

Test Edelim!
Tarayıcınızdan sitenize gidin ve ardından basit bir test yapın. Örneğin, URL'nizin sonuna şunu ekleyin: `?id=1' OR '1'='1`. Eğer WAF düzgün çalışıyorsa, bir 403 Forbidden hatası almanız veya isteğin engellendiğine dair bir log kaydı görmeniz gerekir. Logları kontrol etmek için:

Bash:
sudo tail -f /var/log/modsec_audit.log
# veya Nginx error log'u
sudo tail -f /var/log/nginx/error.log

İpuçları ve Sorun Giderme
  • Başlangıçta DetectionOnly: Canlı sisteme geçmeden önce `SecRuleEngine`'i `DetectionOnly` yaparak kuralların neyi engelleyeceğini loglardan gözlemleyin. Yanlış pozitifleri (false positive) tespit edin.
  • Kuralı Devre Dışı Bırakmak: Belirli bir kural sürekli sorun çıkarıyorsa, `main.conf` dosyanıza `SecRuleRemoveById RULE_ID` satırını ekleyerek devre dışı bırakabilirsiniz.
  • Performans: ModSecurity, özellikle karmaşık kurallarla CPU kullanımını artırabilir. Kuralları ihtiyacınıza göre ince ayarlayın (CRS kurulum dosyasından paranoia seviyesini ayarlayabilirsiniz).
  • Derleme Hatası: Adım 3'teki `./configure` satırında mevcut Nginx parametrelerinizi doğru kopyaladığınızdan emin olun.

İşte bu kadar! Artık Nginx tabanlı web sunucunuz, güçlü bir WAF ile korunuyor. 🖥️➡️🛡️ Bu kurulum biraz meşakkatli görünebilir, ancak elde edeceğiniz güvenlik artışı kesinlikle buna değer.

Peki ya siz? ModSecurity veya başka bir WAF çözümü kullanıyor musunuz? Kurulum sırasında yaşadığınız ilginç sorunlar veya tavsiyeleriniz 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