Web Application Firewall built with Kemal framework
Bu doküman, kemal-korur WAF için kullanılabilen tüm environment variable’ları içerir.
RULE_DIR - Kural dosyalarının bulunduğu dizinUPSTREAM - Upstream backend URL’iUPSTREAM_HOST_HEADER - Upstream için özel Host headerPRESERVE_ORIGINAL_HOST - Orijinal Host header’ını koruOBSERVE - Gözlem modu (engelleme yapmadan loglama)BODY_LIMIT_BYTES - İstek gövdesi boyut limitiRELOAD_INTERVAL_SEC - Kural yeniden yükleme aralığıLOG_DIR - Log dosyalarının diziniLOG_MAX_SIZE_MB - Log dosyası maksimum boyutuLOG_RETENTION_DAYS - Log saklama süresiAUDIT_LOG_MAX_SIZE_MB - Audit log maksimum boyutuAUDIT_LOG_RETENTION_DAYS - Audit log saklama süresiLOG_ENABLE_AUDIT - Audit log’u etkinleştirLOG_QUEUE_SIZE - Log queue boyutuLOG_BATCH_SIZE - Log batch boyutuLOG_FLUSH_INTERVAL_MS - Log flush aralığıRATE_LIMIT_ENABLED - Rate limiting’i etkinleştirRATE_LIMIT_DEFAULT - Varsayılan rate limitRATE_LIMIT_WINDOW_SEC - Rate limit pencere süresiRATE_LIMIT_BLOCK_DURATION_SEC - IP bloklama süresiIP_FILTER_ENABLED - IP filtering’i etkinleştirIP_WHITELIST_FILE - IP whitelist dosyası yoluIP_BLACKLIST_FILE - IP blacklist dosyası yoluGEOIP_ENABLED - GeoIP filtering’i etkinleştirGEOIP_MMDB_FILE - MMDB dosyası yolu (ZORUNLU)GEOIP_BLOCKED_COUNTRIES - Engellenecek ülkelerGEOIP_ALLOWED_COUNTRIES - İzin verilecek ülkelerRULE_DIRrulesexport RULE_DIR=/etc/kemal-waf/rulesUPSTREAMhttp://localhost:8080export UPSTREAM=http://backend:8080UPSTREAM_HOST_HEADER"" (boş - upstream URI’den alınır)export UPSTREAM_HOST_HEADER=api.example.comPRESERVE_ORIGINAL_HOSTfalsetrue veya falseexport PRESERVE_ORIGINAL_HOST=trueOBSERVEfalsetrue veya falseexport OBSERVE=trueBODY_LIMIT_BYTES1048576 (1 MB)export BODY_LIMIT_BYTES=2097152 (2 MB)RELOAD_INTERVAL_SEC5export RELOAD_INTERVAL_SEC=10LOG_DIRlogsexport LOG_DIR=/var/log/kemal-wafLOG_MAX_SIZE_MB100export LOG_MAX_SIZE_MB=200LOG_RETENTION_DAYS30export LOG_RETENTION_DAYS=90AUDIT_LOG_MAX_SIZE_MB50export AUDIT_LOG_MAX_SIZE_MB=100AUDIT_LOG_RETENTION_DAYS90export AUDIT_LOG_RETENTION_DAYS=180LOG_ENABLE_AUDITtruetrue veya falseexport LOG_ENABLE_AUDIT=trueLOG_QUEUE_SIZE10000export LOG_QUEUE_SIZE=20000LOG_BATCH_SIZE100export LOG_BATCH_SIZE=200LOG_FLUSH_INTERVAL_MS1000 (1 saniye)export LOG_FLUSH_INTERVAL_MS=500RATE_LIMIT_ENABLEDtruetrue veya falseexport RATE_LIMIT_ENABLED=trueRATE_LIMIT_DEFAULT100export RATE_LIMIT_DEFAULT=200RATE_LIMIT_WINDOW_SEC60 (1 dakika)export RATE_LIMIT_WINDOW_SEC=120 (2 dakika)RATE_LIMIT_BLOCK_DURATION_SEC300 (5 dakika)export RATE_LIMIT_BLOCK_DURATION_SEC=600 (10 dakika)IP_FILTER_ENABLEDtruetrue veya falseexport IP_FILTER_ENABLED=trueIP_WHITELIST_FILE"" (boş)export IP_WHITELIST_FILE=config/ip_whitelist.txtIP_BLACKLIST_FILE"" (boş)export IP_BLACKLIST_FILE=config/ip_blacklist.txtIP 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_ENABLEDfalsetrue veya falseexport GEOIP_ENABLED=trueGEOIP_MMDB_FILE"" (boş)export GEOIP_MMDB_FILE=data/GeoLite2-Country.mmdbmmdblookup aracı gerektirir (brew install libmaxminddb)GEOIP_BLOCKED_COUNTRIES"" (boş)export GEOIP_BLOCKED_COUNTRIES=CN,RU,KPGEOIP_ALLOWED_COUNTRIES"" (boş)export GEOIP_ALLOWED_COUNTRIES=US,GB,DE,FRGeoIP Gereksinimleri:
mmdblookup komut satırı aracı (brew install libmaxminddb)export UPSTREAM=http://backend:8080
./bin/kemal-waf
# 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
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
# 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
WAF istekleri şu sırayla kontrol eder:
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_)"
true veya false (string olarak)US, TR, GB)Son Güncelleme: 2025-11-11