Cloudflare WAF & Siem
Her ne kadar ilk yazmaya başladığım zaman artık sıkça ilgilendiğim ve uğraştığım konuları buraya kaydederim desem de pek öyle olmuyormuş. Hayat yoğun bir şekilde akıp giderken bazen öncelikler değişiyor. Neyse yakın zamanda yoğun şekilde ilgilendiğim cloudflare waf ı detaylandıracağım.
Waf Nedir , Nasıldır ? IPS den farklı mıdır ?
Kısaca, WAF web uygulama trafiğini korurken, IPS dağıtımları tüm paketleri inceleyerek ağ düzeyinde tarama ve koruma sağlar. Bir IPS tipik olarak gelen trafiğe satır içi olarak dağıtılır, çoğu ağ protokolündeki tehditleri tarar ve OSI Katmanı 4–7'de çalışır. IPS de SSL olarak trafiği inceleyebilirseniz, aslında owasp top 10 içinde olan yaygın tehditlere karşı da bir koruma sağladığını gözlemleyebilirsiniz. Yine de WAF kadar detaylı e etkin değil.
Cloudflare tüm ürünlerini basit kullanım metodolojisi üzerinde kurgulamış, buna waf da dahil. Yönetmek için tüm detaylarıyla sql injection, xss vs bilmenize bile gerek yok.
Web application firewall kuralı yazması bir imperva ve F5 kadar detaylı olmasa da custom rule çok rahat yazılabiliyor. WAF bölümü aşağıdaki gibi beş ana bölümden oluşuyor. En işlevli olanı custom rules, DDOS koruması adına rate limiting de girebiliyorsunuz.
Cloudflare in kendi yönettiği ve update ettiği kurallara da managed rules sekmesinden erişiyorsunuz. OWASP ve Managed ruleset
Kuralların içeriğini göremeseniz de aksiyon değiştirebilir ve disable enable yapabilirsiniz.
Bu arada benzer durum aws cloud waf için de aynı onlarda da kural içeriklerine erişemiyorsunuz. Başka yazıda değinilebilir…
Custom rule yazabilirsiniz, bu size daha çok detay girebilmenizi ve kolayca istisnalar tanımlamanızı sağlar. Use caseler için şunları örnek verebiliriz; spesifik cookie tanımı, ülke bazlı ve AS numarasına göre erişim kuralları, http headera, uri path belirterek yazılan özel kurallar vs.
Field seçeneğinden detayları girebilirsiniz, waf kurallarındaki field seçenekleri, Wireshark görüntüleme alanlarıyla aynı adlandırma kurallarını kullanır. Dolayısyla oradaki filtrelerinizi burada da kullanabilirsiniz.
http.cookie
http.host
http.referer
http.request.full_uri
http.request.method
http.request.cookies
http.request.timestamp.sec
Integerhttp.request.timestamp.msec
Integerhttp.request.uri
http.request.uri.path
http.request.uri.path.extension
http.request.uri.query
http.user_agent
http.request.version
http.x_forwarded_for
ip.src
IP addressip.src.lat
ip.src.lon
ip.src.city
ip.src.postal_code
ip.src.metro_code
ip.src.region
ip.src.region_code
ip.src.timezone.name
ip.src.asnum
Numberip.src.continent
ip.src.country
ip.src.subdivision_1_iso_code
ip.src.subdivision_2_iso_code
ip.src.is_in_european_union
Booleanraw.http.request.full_uri
raw.http.request.uri
raw.http.request.uri.path
raw.http.request.uri.path.extension
raw.http.request.uri.query
ssl
Bunlar standart olan string bazlı field seçenekleri ve dynamic ruleset engineler de var, detayları için
Kötü ve komik özellikleri;
Fazladan koruduğunuz domaininiz varsa waf kurallarını maalesef kopyalayamıyorsunuz bunun için api kullanmanız gerek, ara yüzden aynı kuralı tüm domainlerim için eşleştirme yap tanımlanamıyor maalesef bu mevcut çoğu waf da rahatça yapılıyor.
Lisansa göre kural tanımı girilmesi,
Managed rule için edit veya inceleme imkanı vermemesi,
log4j için custom kural yazmak isteseniz bunun ara yüzde engellemesi :))
şaka değil gerçek ; “${jndi:ldap://”
Kendisi ara yüzden girdiğiniz parametreleri atak olarak algılıyor ve kesiyor tipik CF error code dönüyor 403. Her şey süper değil tabiki on prem waf lar gibi.
SIEM entegrasyonu
Bu kadar anlattıktan sonra elbette bunları siemle entegre edip , waf dan geçen zararlı istekler var mı web server loglarıyla karşılaştırmak isteriz.
Azure veya splunk ile denedim öncesinde log aktarımını gayet güzel gönderiyor fakat sınırı var. Logpush, dosya başına en fazla 100.000 kayıt içeren toplu işlerle günlükleri bir dakikadan kısa sürede teslim eder. Bu sınır gelecekte yükseltilebilir. Minimum parti boyutu yoktur ve Logpush, dosyaları dakikada birden fazla teslim edebiliyor.
Splunk için entegrasyonunun detayları yine Analytics & Logs >> Logpush bölümünden tanımlanarak gönderilebilir.
Veri kümesi seç alanında, bir depolama hizmetine aktarılacak veri kümesini seçin ve İleri’yi seçin.
Data field bölümünde ,
Splunk ile ilgili log detayları , url token vs girdikten sonra logpush job tamamlanıyor.
Bir sonraki yazıda görüşmek üzere…