WAF Rate Limiting Yapılandırma: Adım Adım Rehber
- WAF Rate Limiting Yapılandırma: Adım Adım Rehber
- WAF Rate Limiting Nedir?
- Hangi Saldırıları Engeller?
- Yapılandırma Öncesi Gereksinimler
- ModSecurity ile Adım Adım Kurulum
- Nginx ile Rate Limiting
- Bulut Tabanlı WAF Kullanımı
- Sık Karşılaşılan Sorunlar
- Hangi Yöntemi Seçmelisiniz?
- Sıkça Sorulan Sorular
- Rate limiting ne zaman devreye girer?
- Brute force saldırılarını tek başına engeller mi?
- Nginx limit_req ile ModSecurity rate limiting arasındaki fark nedir?
- Eşik değerlerini nasıl belirlerim?
Web uygulamalarına gelen istekleri sınırlandırmak, güvenliğin kritik adımlarından biridir. WAF rate limiting yapılandırma, tek bir IP adresinden veya oturumdan gelen aşırı istekleri tespit edip geçici olarak engeller. Bu sayede brute force saldırıları, katman 7 DDoS atakları ve API istismarı daha büyük hasara yol açmadan durdurulur.
Web uygulama güvenlik duvarı (WAF), HTTP trafiğini filtreleyen ve kötü niyetli istekleri engelleyen bir güvenlik katmanıdır. Ancak WAF tek başına tek bir kaynaktan gelen yoğun istek akışını her zaman kontrol edemez. Rate limiting, belirli bir zaman diliminde kabul edilebilir istek sayısını sınırlayarak hem uygulamanızı hem de sunucu kaynaklarınızı korur.
Aşağıda WAF rate limiting yapılandırma sürecini farklı ortamlar için adım adım bulacaksınız. ModSecurity, Nginx ve bulut tabanlı WAF kullanımını pratik örneklerle öğreneceksiniz.
Önemli Noktalar
- Rate limiting, tek bir kaynaktan gelen aşırı istekleri tespit edip geçici olarak engeller.
- Eşik değerleri uygulamanızın normal trafiğine göre belirlenmeli; çok düşük değerler gerçek kullanıcıları bloke eder.
- ModSecurity, Nginx ve bulut tabanlı WAF çözümleri farklı yapılandırma dosyaları kullanır.
- Yapılandırma sonrası logları düzenli izleyerek yanlış pozitifleri azaltabilirsiniz.
- Rate limiting tek başına yeterli değildir; güncel yama yönetimi ve giriş doğrulama ile birlikte kullanılmalıdır.
WAF Rate Limiting Nedir?
WAF rate limiting, belirli bir IP adresi, oturum veya API anahtarından belirli bir süre içinde kabul edilecek istek sayısını sınırlayan bir güvenlik kuralıdır. Bu kural, aşırı istek gönderen kaynağı geçici olarak bloke eder veya isteklere hata kodu döndürür.
Normal kullanıcılar bir login sayfasına dakikada birkaç istek gönderir. Bir brute force saldırısında ise saldırgan saniyede onlarca farklı şifre deneyebilir. Rate limiting bu anormal trafiği fark eder ve saldırganın IP adresini belirli bir süreliğine engeller. Bu, uygulamanın performansını korur ve güvenlik algoritmalarına zaman kazandırır.
Rate limiting yalnızca güvenlik için değil, kaynak yönetimi için de önemlidir. Paylaşımlı bir hosting ortamında tek bir web sitesinin aşırı istek göndermesi diğer siteleri etkileyebilir. WAF üzerindeki sınırlamalar bu tür kazaları da önler. Özellikle e-ticaret sitelerinde ödeme adımları, API uçları ve yönetim panelleri için ayrı sınırlar tanımlamak gerekir.
Hangi Saldırıları Engeller?
Rate limiting, birden fazla saldırı türüne karşı ilk savunma hattıdır. En yaygın kullanım alanı brute force saldırılarıdır. Saldırgan, bir kullanıcı adı ve farklı şifre kombinasyonları deneyerek hesaba erişmeye çalışır. Login sayfasına uygulanan sınırlama, deneme sayısını düşürür ve saldırıyı etkisiz hale getirir.
İkinci yaygın tehdit credential stuffing saldırılarıdır. Saldırgan, daha önce sızdırılmış kullanıcı adı ve şifre listesini farklı sitelerde dener. API uçlarına ve giriş sayfalarına uygulanan rate limiting, bu otomatik denemeleri yavaşlatır.
Katman 7 DDoS saldırılarında ise binlerce bot, uygulama sunucusuna aynı anda istek gönderir. Rate limiting, tek bir kaynaktan gelen aşırı istekleri tespit ederek saldırının etkisini azaltır. Ancak çok sayıda farklı IP kullanan geniş çaplı DDoS saldırılarında tek başına yeterli olmayabilir. Böyle durumlarda bulut tabanlı WAF veya CDN katmanı gerekir.
API kötüye kullanımı da sınırlamayla kontrol altına alınır. Örneğin açık bir arama API’sine saniyede yüzlerce istek gönderen bir script, sunucunun CPU ve RAM kaynaklarını tüketebilir. API başına dakikalık istek limiti koymak, hizmet kalitesini korur.

Yapılandırma Öncesi Gereksinimler
WAF rate limiting yapılandırmaya başlamadan önce ortamınızı netleştirmeniz gerekir. İlk adım, hangi WAF türünü kullandığınızı belirlemektir. Sunucu tabanlı çözümler arasında ModSecurity ve Nginx WAF bulunur. Bulut tabanlı seçeneklerde ise CDN sağlayıcınızın güvenlik paneli kullanılır.
Yapılandırma için sunucuya SSH erişiminiz veya kontrol paneli yetkiniz olmalıdır. Kök kullanıcı yetkisi, Nginx veya Apache yapılandırma dosyalarını düzenlemek için gereklidir. Paylaşımlı hosting kullanıyorsanız bu ayarları genellikle hosting paneliniz üzerinden yaparsınız. Yeni bir sunucu kurulumuna ihtiyacınız varsa Ubuntu ilk kurulum adımlarını gözden geçirebilirsiniz.
Normal trafik profilinizi bilmeniz de önemlidir. Hangi sayfalara dakikada kaç istek geldiğini analiz etmeden eşik değerleri belirlemek yanlış pozitiflere yol açar. Sunucu günlüklerinden veya izleme araçlarından bu verileri çıkarabilirsiniz. Özellikle login, kayıt, arama ve ödeme sayfaları için ayrı sınırlar düşünmelisiniz.
Yapılandırma sonrası hataları görebilmek için loglama mutlaka açık olmalıdır. WAF’ın engellediği istekleri ve oluşturduğu hata kodlarını kayıt altına almak, ileride sorun gidermeyi kolaylaştırır. ModSecurity yapılandırması hakkında daha fazla bilgi alabilirsiniz.

ModSecurity ile Adım Adım Kurulum
ModSecurity, Apache ve Nginx üzerinde çalışan açık kaynaklı bir web uygulama güvenlik duvarıdır. Sunucu üzerinde rate limiting kurmak için önce ModSecurity’nin aktif olduğundan emin olmalısınız. Kurulu değilse öncelikle sunucunuza uygun paket yöneticisiyle kurulum yapın.
Adım 1: ModSecurity kurulumunu doğrulayın. SSH üzerinden aşağıdaki komutu çalıştırarak modülün yüklendiğini kontrol edin.
apachectl -M | grep security
Komut çıktısında security2_module ifadesi görünüyorsa ModSecurity yüklüdür.
Adım 2: Kural dosyanızı açın. Genellikle /etc/modsecurity/modsecurity.conf veya /etc/httpd/conf.d/mod_security.conf yolunda bulunur. Kural motorunu açtığınızdan emin olun.
sudo nano /etc/modsecurity/modsecurity.conf
Adım 3: IP başına istek sayacını tanımlayın. Aşağıdaki kuralı ekleyin. Bu örnek, aynı IP adresinden 60 saniye içinde 50’den fazla istek gelirse engelleme yapar.
SecAction "id:100, phase:1, nolog, pass, initcol:ip=%{REMOTE_ADDR}, setvar:ip.requests=+1, expirevar:ip.requests=60"
SecRule ip:requests "@gt 50" "id:101, phase:1, deny, status:429, log, msg:'IP rate limit exceeded'"
Bu kurallar tüm istekler için geçerlidir. Yalnızca login sayfasını korumak istiyorsanız SecRule REQUEST_URI koşulu ekleyebilirsiniz.
Adım 4: Yapılandırmayı test edin ve yeniden başlatın. Önce syntax hatası olmadığını doğrulayın, ardından servisi yeniden başlatın.
sudo apachectl configtest
sudo systemctl restart apache2
Beklenen sonuç, aşırı istek gönderen bir IP adresinin 429 Too Many Requests hatası almasıdır. Yanlış pozitif oluşursa eşik değerini artırabilir veya bazı URL’leri hariç tutabilirsiniz.

Nginx ile Rate Limiting
Nginx, rate limiting için yerleşik bir modül sunar. Bu modül, harici bir WAF gerektirmeden HTTP isteklerini sınırlandırabilir. Nginx’in resmi dokümantasyonuna göre nginx.org üzerindeki bilgiler her zaman güncel tutulur.
Adım 1: Limit paylaşım bölgesini tanımlayın. Nginx yapılandırma dosyanızın http bloğu içine aşağıdaki satırı ekleyin. Bu satır, her IP adresi için saniyede 5 istek hızını belirler.
limit_req_zone $binary_remote_addr zone=login_limit:10m rate=5r/s;
Adım 2: İlgili location bloğuna kuralı uygulayın. Örneğin login sayfasını korumak için limit_req yönergesini kullanın. burst parametresi, kısa süreli ani artışlara izin verir.
location /login {
limit_req zone=login_limit burst=10 nodelay;
proxy_pass http://backend;
}
Adım 3: Yapılandırmayı test edip yeniden yükleyin.
sudo nginx -t
sudo systemctl reload nginx
Test sonucu başarılıysa Nginx, limit aşımında otomatik olarak 503 Service Temporarily Unavailable hatası döndürür. İsterseniz özel bir hata sayfası tanımlayarak kullanıcı deneyimini iyileştirebilirsiniz.
Nginx rate limiting, login sayfaları ve API uçları için hafif ve etkili bir çözümdür. Ancak Nginx yalnızca sunucuya gelen istekleri sınırlar; uygulama katmanındaki injection gibi saldırılara karşı ayrıca ModSecurity veya benzeri bir WAF önerilir.

Bulut Tabanlı WAF Kullanımı
Bulut tabanlı WAF hizmetleri, trafiği sunucunuza ulaşmadan önce filtreler. Bu mimari, kaynak tüketimini azaltır ve saldırıların sunucuya erişmesini engeller. Rate limiting kuralları genellikle web arayüzü üzerinden tanımlanır ve sunucuda dosya düzenlemesi gerektirmez.
Bulut WAF kullanırken önce alan adınızın trafiğini bu hizmete yönlendirmeniz gerekir. DNS ayarlarınızı güncelledikten sonra güvenlik panelinden rate limiting kuralı oluşturabilirsiniz. Kural oluştururken IP adresi, oturum, oturum kimliği veya kullanıcı adı gibi farklı kriterler seçebilirsiniz.
Eşik değerini belirlerken tüm site trafiğini değil, korumak istediğiniz sayfanın trafiğini düşünün. Örneğin bir arama sayfasına dakikada 30 istek normal olabilirken, bir ödeme sayfası için bu sayı 10’u geçmemelidir. İlk kurulumda daha yüksek değerler başlatıp logları izledikten sonra değerleri sıkılaştırmak daha güvenlidir.
Bulut tabanlı çözümlerin bir avantajı, saldırı kaynağını küresel ağ üzerinde engelleyebilmesidir. Ancak bu hizmetler genellikle ücretli planlara tabidir. Kuruluşunuzun ihtiyacına göre sunucu tabanlı ve bulut tabanlı yöntemleri birlikte kullanabilirsiniz. Özellikle e-ticaret siteleri için sunucu gereksinimleri iyi planlanmalıdır.
Sık Karşılaşılan Sorunlar
Rate limiting yapılandırmasında en sık rastlanan sorun yanlış pozitiflerdir. Gerçek kullanıcılar, özellikle kurumsal ağlardan gelenler, aynı IP adresinden çok sayıda istek gönderebilir. Bu durumda kullanıcılar 429 veya 503 hatalarıyla karşılaşır. Çözüm için eşik değerini yükseltebilir veya kurumsal IP aralıklarını beyaz listeye alabilirsiniz.
İkinci yaygın sorun, CDN arkasında çalışan sunucularda gerçek IP adresinin tespit edilememesidir. Tüm istekler CDN’in IP adresinden geliyormuş gibi görünür ve rate limiting tüm kullanıcıları tek bir kaynak olarak değerlendirir. Bunu önlemek için X-Forwarded-For başlığını doğru şekilde işlemelisiniz. Nginx için real_ip_header yönergesi bu sorunu çözer.
Bazı durumlarda rate limiting, meşru botların erişimini de engelleyebilir. Arama motoru botları veya API entegrasyonları belirli hızlarda istek gönderir. Bu kaynakları tanımlayıp ayrı kurallarla sınırlandırmak gerekir. Yanlış yapılandırılmış bir kural sunucuda 500 Internal Server Error gibi hatalara yol açabilir. Bu nedenle her değişiklikten önce yapılandırma dosyasını test etmek şarttır.
Logların izlenmemesi de büyük bir eksikliktir. Engellenen istekleri düzenli incelemek, saldırı desenlerini anlamanıza ve kuralları güncellemenize yardımcı olur.
Hangi Yöntemi Seçmelisiniz?
Seçiminiz, altyapınıza ve yönetim becerilerinize bağlıdır. Sunucunuza tam erişim sahibiyseniz ve düşük maliyetli bir çözüm arıyorsanız, ModSecurity veya Nginx yerleşik modülü iyi bir başlangıçtır. Bu yöntemler ek ücret gerektirmez ve tam kontrol sağlar. Ancak yapılandırma ve bakım sorumluluğu size aittir.
Paylaşımlı hosting kullananlar için sunucu tabanlı ayarlara erişim kısıtlıdır. Bu durumda hosting panelinizde sunulan güvenlik araçlarını kullanmanız gerekir. Linux hosting ortamlarında genellikle temel WAF ve rate limiting seçenekleri bulunur.
Yoğun trafik alan veya sık saldırıya uğrayan siteler için bulut tabanlı WAF daha uygundur. Global ağ üzerinde trafiği filtreler, yanlış pozitifleri daha kolay yönetirsiniz. Ancak maliyeti daha yüksek olabilir.
Hangi yöntemi seçerseniz seçin, rate limiting kurallarını düzenli gözden geçirin. Uygulamanız büyüdükçe normal trafik profili değişir ve eşik değerleri güncellenmelidir. Rate limiting’i ModSecurity gibi kural tabanlı bir WAF ile birleştirmek çok katmanlı bir savunma sağlar.
Sıkça Sorulan Sorular
Rate limiting ne zaman devreye girer?
Belirlenen zaman diliminde eşik değeri aşıldığında devreye girer. Örneğin aynı IP adresi 60 saniyede 50 istekten fazla gönderirse, sonraki istekler engellenir veya hata kodu alır.
Brute force saldırılarını tek başına engeller mi?
Büyük ölçüde engeller. Saldırganın şifre deneme hızını düşürür ve hesaba erişimi zorlaştırır. Ancak farklı IP adresleri kullanan saldırılarda ek önlemler gerekebilir.
Nginx limit_req ile ModSecurity rate limiting arasındaki fark nedir?
Nginx limit_req, sunucuya gelen istek sayısını hızlıca sınırlar. ModSecurity ise uygulama katmanında daha ayrıntılı güvenlik kuralları çalıştırır. İkisi birlikte kullanılabilir.
Eşik değerlerini nasıl belirlerim?
Önce normal trafiğinizi analiz edin. Login ve ödeme sayfaları için daha düşük, statik içerikler için daha yüksek limitler belirleyin. Ardından logları izleyerek değerleri ayarlayın.





