kemal-waf Documentation

Web Application Firewall built with Kemal framework

View the Project on GitHub kursadaltan/kemalwaf

Environment Variables - kemal-korur WAF

Bu doküman, kemal-korur WAF için kullanılabilen tüm environment variable’ları içerir.

📋 Hızlı Referans

Temel Konfigürasyon

Logging

Rate Limiting

IP Filtering

GeoIP Filtering


📝 Detaylı Açıklamalar

Temel Konfigürasyon

RULE_DIR

UPSTREAM

UPSTREAM_HOST_HEADER

PRESERVE_ORIGINAL_HOST

OBSERVE

BODY_LIMIT_BYTES

RELOAD_INTERVAL_SEC


Logging Konfigürasyonu

LOG_DIR

LOG_MAX_SIZE_MB

LOG_RETENTION_DAYS

AUDIT_LOG_MAX_SIZE_MB

AUDIT_LOG_RETENTION_DAYS

LOG_ENABLE_AUDIT

LOG_QUEUE_SIZE

LOG_BATCH_SIZE

LOG_FLUSH_INTERVAL_MS


Rate Limiting

RATE_LIMIT_ENABLED

RATE_LIMIT_DEFAULT

RATE_LIMIT_WINDOW_SEC

RATE_LIMIT_BLOCK_DURATION_SEC


IP Filtering

IP_FILTER_ENABLED

IP_WHITELIST_FILE

IP_BLACKLIST_FILE

IP List Dosya Formatı:

# Yorum satırları # ile başlar
192.168.1.100
10.0.0.0/24
# IPv6 desteği
2001:db8::/32

GeoIP Filtering

GEOIP_ENABLED

GEOIP_MMDB_FILE

GEOIP_BLOCKED_COUNTRIES

GEOIP_ALLOWED_COUNTRIES

GeoIP Gereksinimleri:


🚀 Örnek Konfigürasyonlar

Minimal Konfigürasyon

export UPSTREAM=http://backend:8080
./bin/kemal-waf

Production Konfigürasyonu

# Temel
export UPSTREAM=http://backend:8080
export RULE_DIR=/etc/kemal-waf/rules
export OBSERVE=false

# Logging
export LOG_DIR=/var/log/kemal-waf
export LOG_RETENTION_DAYS=90
export AUDIT_LOG_RETENTION_DAYS=180

# Rate Limiting
export RATE_LIMIT_ENABLED=true
export RATE_LIMIT_DEFAULT=200
export RATE_LIMIT_WINDOW_SEC=60

# IP Filtering
export IP_FILTER_ENABLED=true
export IP_WHITELIST_FILE=/etc/kemal-waf/whitelist.txt
export IP_BLACKLIST_FILE=/etc/kemal-waf/blacklist.txt

# GeoIP
export GEOIP_ENABLED=true
export GEOIP_MMDB_FILE=/etc/kemal-waf/GeoLite2-Country.mmdb
export GEOIP_BLOCKED_COUNTRIES=CN,RU,KP

./bin/kemal-waf

Test/Development Konfigürasyonu

export UPSTREAM=http://localhost:8080
export OBSERVE=true
export LOG_DIR=logs
export RATE_LIMIT_ENABLED=false
export IP_FILTER_ENABLED=false
export GEOIP_ENABLED=false

./bin/kemal-waf

Yüksek Güvenlik Konfigürasyonu

# Strict IP filtering
export IP_FILTER_ENABLED=true
export IP_WHITELIST_FILE=/etc/kemal-waf/whitelist.txt

# GeoIP whitelist (sadece belirli ülkeler)
export GEOIP_ENABLED=true
export GEOIP_MMDB_FILE=/etc/kemal-waf/GeoLite2-Country.mmdb
export GEOIP_ALLOWED_COUNTRIES=US,GB,DE,FR,TR

# Strict rate limiting
export RATE_LIMIT_ENABLED=true
export RATE_LIMIT_DEFAULT=50
export RATE_LIMIT_WINDOW_SEC=60
export RATE_LIMIT_BLOCK_DURATION_SEC=600

# Extended logging
export LOG_RETENTION_DAYS=180
export AUDIT_LOG_RETENTION_DAYS=365

./bin/kemal-waf

📊 Öncelik Sırası

WAF istekleri şu sırayla kontrol eder:

  1. IP Whitelist (en yüksek öncelik - direkt izin)
  2. IP Blacklist (direkt engelleme)
  3. GeoIP Allowed Countries (whitelist)
  4. GeoIP Blocked Countries (blacklist)
  5. Rate Limiting (istek sayısı kontrolü)
  6. WAF Rules (OWASP CRS kuralları)

🔍 Environment Variable Kontrolü

Tüm environment variable’ları kontrol etmek için:

# WAF başlatıldığında log'larda görünecek
./bin/kemal-waf

# Veya manuel kontrol
env | grep -E "(RULE_DIR|UPSTREAM|GEOIP|IP_FILTER|RATE_LIMIT|LOG_)"

📝 Notlar


Son Güncelleme: 2025-11-11