WAF
WEB Application Firewall
(Web Uygulama Güvenlik Duvarı)
WAF Nedir
Web Application Firewall (Web
uygulama güvenlik duvarı), WAF her geçen gün karmaşıklaşan sistemlerde, web
trafiği üzerinden gelen anormallikleri tespit ederek belirlenen kurallar
çerçevesinde gelen taleplerden saldırgan amaçlı talebi engellemek üzere
kurulmuş bir teknolojidir. Web uygulamalarımızı saldırgan ziyaretçilerin
korumak için web sitesi sunucularına gelen ve giden trafiği izler anormal bir
trafik paketini filtreler. WAF, işletmelerin gizli ve hassas bilgilerini
güvende tutulmasına yardımcı olan bir araçtır. WAF OSI katmanın 7.katmanında
çalışır. HTTP, HTTPS, SOAP, XML, RPC gibi protokoller üzerinde detaylı paket
analizi yaparak zararlı istekleri bloklar. Geleneksel güvenlik duvarları
sunucular arasında bir güvenlik geçidi olarak hizmet verirken, WAF ise web
uygulamasına ait içeriği filtreleyebilir. WAF, web uygulamalarındaki
zafiyetleri tarayabilir. Zafiyet tespit ettiğinde, potansiyel bilgisayar
korsanlarının onları bulmasını otomatik olarak engeller ve sorunu hemen
düzeltmeye odaklanır.
Genel çalışma mantığı olarak WAF,
web uygulamaları ile kullanıcılar arasında durur böylelikle kullanıcı web
uygulamasına istekte bulunur web uygulamasına ulaşmadan istek WAF, HTPP paketini
analiz eder bir risk algılandığında trafiği keser ve kullanıcının tüm
isteklerini ret eder. WAF, web
uygulaması ile internet arasındaki kötü amaçlı trafiği engelleyerek,
filtreleyerek web uygulamalarını korur ve aynı zamanda web uygulamasındaki
verilerin dışarı çıkmasını da engeller.
Verizon Veri İhlali
soruşturmaları Raporunda bildiği üzere, özellikle web uygulaması saldırılarının
ihlalleri en çok görünen nedeni olarak görülmesinden sonra web uygulaması
güvenliği kritik bir bileşeni haline gelmiştir bundan dolayı WAF kullanımına
talep artmıştır.
WAF Kullanımı Alanları
web uygulaması kullanan bütün kurum kuruluşlar
kullanabilir. Örnek olarak e-ticaret siteleri, Hastane randevu sistemleri,
Üniversiteler …
WAF Koruyor Olabildiği Ataklar;
·
Siteler arası komut
dosyası çalıştırma saldırıları (XSS attacks)
·
Kötü amaçlı yazılım
saldırıları (Malware attacks)
·
SQL enjeksiyon
saldırıları (sqli)
·
DDOS koruması
·
veri ihlallerini
önlemek için web uygulamalarını korur
·
Kötü amaçlı internet
trafiğinden korur.
·
Command İnjection
·
Local File İncluding
·
Buffer Overflow
·
Brute-Force Attack
·
Cookie-Session
Posioning
·
Session Hijacking
·
Senstive Ingormation
Leaks
·
Sever
Misconfiguration
·
Wall-known latfrom
Vulnerabilities
·
Form-Hidden Field
Maniğulation
·
Parameter Tamper
·
Remote File İncluding
·
File Upload
WAF örnekleri
Donanım olarak
·
Monitorapp AIWAF
·
Barracuda Networks
WAF
·
Citrix Netscaler
Uygulama Güvenlik Duvarı
·
F5 Big-IP Uygulama
Güvenlik Yöneticisi
·
Penta Security
WAPPLES
·
Imperva SecureSphere
·
Fortinet FortiWeb
·
Positive
Technologies, PT Uygulama Güvenlik Duvarı
·
Ergon Informatik AG,
Airlock WAF
Bulut olarak
·
AIONCLOUD
·
Akamai Technologies
Kona
·
AWS WAF
·
Bekchy
·
Cloudbric
·
Cloudflare
·
F5 Silverline
·
Imperva Incapsula
·
Verizon Defend
Açık Kaynak
·
ModSecurity
·
Naxsi
·
Aqtronix
Nasıl Çalışır
Genel çalışma mantığı olarak WAF, web uygulamaları ile kullanıcılar arasında
durur böylelikle kullanıcı web uygulamasına istekte bulunur web uygulamasına
ulaşmadan istek WAF HTPP iletişimini analiz eder bir risk algılandığında
trafiği keser ve kullanıcının tüm isteklerini ret eder. Güvenliği sağlamak için
WAF’lar tüm http isteklerini yakalar ve inceler. Sahte trafik, zararlı botlar
ve malwareler engellemek için tasarlanmış captcha testleri ile basitçe
engellenir veya test edilir. WAF; Açık Web Uygulaması Güvenlik Projesi olan
OWASP tarafından listelenen en önemli web uygulama zafiyetlerini ele alması
gereken özelleştirilmiş politikalar üzerine inşa edilmiş güvenlik
prosedürlerine dayanmaktadır buna imza tabanlıda denilmektedir.
Temel Çalışma mantığına bakacak
olursak;
-
Gelen http
paketlerinin bileşenlerine ayırır (Parsing)
-
Verinin
normalleştirilmesi (decoding)
-
Filtreleme
kurallarının işletilmesi (regex)
-
Gelen trafiğin
zararlı ya da zararsız olduğuna karar verilmesi
WAF’ın Analiz Etmek İçin Kullandığı Güvenlik
Modelleri
Beyaz Liste
Modeli (Positive Security Model): WAF varsayılan olarak tüm istekleri ret eder yalnızca
izin verilen istekleri güvenilir olduğunu döndüren güvenlik modelidir. Güvenli
olduğunu bildiği IP adreslerinin bir listesini sağlar ve bu liste doğrultusunda
işlem yapar.
Kara
Liste Modeli (Negative Security Model): Varsayılan isteklerin geçmesine izin verir, önceden
belirlenmiş güvenlik açıklarından faydalanan saldırı imzalarını engeller.
Yasaklanmış ağ paketleri dışında her şeye izin verir.
Karma
Liste Modeli (Mixed Security Model): Kara liste ve Beyaz liste
beraber kullanıldığı güvenlik modelidir.
Learing-Based
Firewall: Gelen ve giden istekleri inceleyerek web sayfalarının
haritasını çıkarmaya çalışır. Daha önceden gerçekleştirilen saldırılardan yeni
tip saldırıları tahmin etmeye çalışır böylelikle yeni tip saldırılarda koruma
sağlar.
WAF Yerleşim Planları
WAF; inline bridge, offline
(passive). integrated ve reverse Proxy olmak üzere 4 yere yerleştirebiliriz.
WAF aracımızı yerleştireceğimiz yere göre seçmeliyiz aksi takdirde efektif bir
verim sağlamayacaktır.
Inline (Bridge) Yerleşim Modeli:
Bu modelde WAF aracı web
sunucuların önüne bridge modda yerleştirilerek trafiği üzerinden geçirmesi ve
incelenmesi sağlanır. Network tabanlı IPS benzeri bulunduğu konum üzerinden
geçen tüm trafiği inline alır, inceler ve duruma göre bloklama yapar.
Sistemde yaşanacak bir arıza
sonrasında web trafiğinin kesilmesi durumu olabilmektedir. Bu problemin çözümü
için cihazda yaşanacak bir problem sonrası trafiğin akmaya devam etmesi
(fail-open) özelliğinin aktif olması gerekmektedir.
Offline (passive)
Yerleşim Modeli:
WAF aracı web sunucuların olduğu
switch üzerinden akan trafiği kopyalayarak web sunucusuna giden trafiğin
kopyasını alır. Alınan kopya trafik üzerinde detaylı paket analizi yapılarak
zararlı istekler için cevap üretir bu cevaplar genel olarak TCP/RST
paketleridir. Burada şöyle bir sorun oluşmaktadır saldırganın gönderdiği
isteğin cevabı WAF tarafından gönderilecek TCP/RST paketlerinin cevap
paketlerinden önce ulaşabilir ya da saldırgan http kullanarak geriye yönelik
udp bağlantısı açmaya çalıştığında WAF cihazı işlevsiz kalabilir.
Bütünleşik
Yerleşim Modeli:
WAF; işletim sistemine, web
sunucusuna yerleştirilmiştir. Bundan dolayı x bir ürün Linux işletim
sistemlerinde çalışırken Windows sistemlerde çalışmaz. Bu model WAF yerine göre
avantajlar sağlamaktadır.
Reverse Proxy
Yerleşim Modeli:
Proxy mantığıyla çalışmaktadır.
Web sayfasına ulaşmaya çalışan tüm istemciler web sunucu yerine reverse Proxy
modun daki WAF sistemine ulaşır. WAF istediği alır gerekli incelemelerden
geçirildikten sonra arkadaki web sunucuya iletir veya istek zararlı ise bloklanır.
Web sunucuya gelen her istek ve
dönen her cevap WAF sistemi üzerinden geçeceği için yine diğer yerleşim
yöntemlerine oranla gecikme oranı daha yüksektir. Yazlım ürünü olan WAF,
genellikle cihazlardan daha kolay bir yükseltme yolu sağlar.
WAF Dahil
Edilirken Dikkat Edilmesi Gereken Hususlar
WAF güvenlik uygulamasını bulut, donanım veya yazılımsal olarak seçim
yapabiliriz. Yazılım olarak WAF daha ucuz ve daha kullanışlıdır. Donanım veya
yazılım seçeneklerini değerlendirirken ölçeklenebilirliği ve performans dikkate
almak gerekir. Bazı cihazlar, saatte kaç işlem yapabilecekleri konusunda
sınırlı olabilir.
WAF seçmek için;
·
Güvenlik politikası
hedeflerinize ve yasal gereksinimlere göre ne yapması
gerekir ?
·
Hangi ek hizmetleri yanında sunuyor ?
·
Mevcut networkünüze
uyumu var mı ?
·
Mevcut hizmetleri
nasıl etkiliyor ?
·
Özel protokolleri
destekliyor mu ?
·
Uygulama
protokollerini korur mu ?
·
Destek politikaları
neler ?
·
WAF ürünü otomatik
güncellemeleri yapıyor mu ?
·
Dinamik imzaları
uygulayabiliyor mu ?
·
Maliyeti ne kadar ?
sorularını sormamızda fayda var.
Tabi sorulara cevap vermeden
önce; güvenlik politikamızı güncellememiz eğer güncel ise bir göz gezdirmemiz
gereklidir. Güvenlik politikamız ne kadar iyi olursa verilerimizin güvenliği o
kadar yükselir. Her web uygulaması benzersiz olduğundan, güvenli yaşam döngüsü
geliştirme programınızın tehdit modellemesi sırasında belirlenen potansiyel
tehditlere karşı koruma sağlamak için güvenliğimize özel olarak uyarlanması
gerekir.
Güvenlik yaşam döngüsünü test
edin; güvenli hale getir, izle, test et ve geliştir. Networkümüze herhangi bir
cihaz bağlanmadan önce, ağ alt yapısını kontrol etmekte fayda var. WAF ürünü
kurulduktan sonra saldırı taktiklerini uygulayarak ne kadar başarılı olduğunu
görün
WAF’ta Olması Gereken Özellikler
WEB Uygulaması Güvenlik Duvarı,
kuruluşun güvenliğini tehdit edebilecek karmaşık saldırılara karşı ilk savunma
hattıdır. En etkili ve verimli çözümler olarak;
·
Giriş koruması-
kapsamlı uygulama profili oluşturma, kabul edilebilir kullanıcı girdisini
algılar.
·
http doğrulaması-
http güvenlik kusurlarını tespit eder ve saldırıları engellemek için özel
doğrulama kuralları belirler.
·
Veri sızıntısı önleme- erken uyarı veri sızıntısı algılama sistemi, savunmasız güvenlik
yapılandırmalarını algılar ve özel verileri tanımlar, filtreler ve korur.
·
Otomatik saldırı engelleme- Otomasyon araçları, ağınızı kötü niyetli trafikten
korumak için proaktif önlemler alır.
·
Trafik akışlarına yaşanabilecek
yoğunluğu önleyebilir.
·
Basit ilke yönetimi
için merkezi, ölçeklenebilir bir güvenlik sağlar.
WAF Test Süreci
Etkili bir WAF süreci
oluşturulması için test aşamasının yapılması gerekmektedir. En doğru WAF testi,
uygulama üzerindeki mantıksal saldırılara karşı etkinliği ölçer. WAF test
çerçevesi;
1-
Uygulamanın önünde
WAF olmadan test edin.
2-
Varsayılan
yapılandırmada WAF saldırıların ne kadar engellemekte olduğunu test edin.
3-
Saldırı
engelleyemeceğini belirlemek için WAF’ı yapılandırın.
4-
WAF onları
engelleyecek şekilde yapılandırıldıktan sonra saldırıların başaralı bir şekilde
engellenmediğini test edin.
Bu WAF test süreci, WAF’ın
uygulamaya fayda sağlayıp sağlamadığını belirler ayrıca WAF’ın belirli
saldırılara karşı koruma sağlayacak şekilde yapılandırmasında da olanak tanır.
WAF’ın mantıksal saldırılara karşı ne kadar etkili olduğunu belirler.
Geleneksel Firewall Ve WAF Arasındaki Fark
Firewall sistemler arasındaki
bilgi akışını filtrelerken, WAF’lar belirli bir web uygulaması için trafiği
filtreler. Firewall ve WAF birlikte çalışabilirler.
Geleneksel güvenlik yöntemleri
arasında ağ güvenlik duvarları, saldırı tespit sistemleri (IDS) ve izinsiz
giriş önleme sistemleri (IPS) bulunur bu sistemler OSI katmanı L3 ve L4
trafiğini filtreleme yeteneğine sahiptir. http sunucusundan istenen web
sayfalarını gönderen ve alan bağlantı noktasının açık veya kapalı olması durumu
OSI L7 L6 katmanında çalışır bu nedenle WAF bu L6 ve L7 tarafından gelebilecek
saldırıların savunmasında ön plana çıkmaktadır.
WAF için Virtual Patching Kavramı
Vitual Patching (Sanal Yamalama),
güvenlik açığı bulunan kodu değiştirmeden, yazılımdaki belirli bir güvenlik
açığını azaltan yamalama işlemidir.
IPS (Intrusion Prevention Syytem) yani saldırı önleme sistemlerinde ilk olarak
kullanılmıştır artık son zamanlarda WAF’lar tarafından da kullanılmaktadır.
Vitual Patching, kötü amaçlı
trafiğin zafiyetli uygulamaya ulaşmasını önlemek için güvenlik denetimi
kaymanını kullanarak işlemleri analiz eder.
Avantajları;
·
Tüm sunuculara yama
yüklemeye gerek yoktur bir kaçına uygulandığında yeterlidir bundan dolayıda
ölçeklenebilir çözüm sunar.
·
Oluşturulması gereken
yama oluşana kadar riskleri azaltır.
·
Acil yama gerektiği
zaman hem maddiyattan hem de zamandan
tasarruf ettirir.
Açık Kaynaklı WAF
(Modsecurity)
Açık kaynaklı WAF’lar,
kuruluşlara özelleştirilmiş güvenlik politikaları dağıtma, karmaşık saldırıları
izlemek ve önlemek için özel güvenlik panoları geliştirme ve BT güvenlik
ekiplerinin şirket içi waf’larla devreye alması için daha fazla esnek zaman
alabilecek rutin güvenlik görevlerini otomatikleştirme konusunda daha fazla
esneklik sağlar. Açık Kaynaklı Web uygulaması güvenlik duvarları WAF’ın
korumaya almış olduğu tüm saldırı çeşitlerinden korur ancak tam özellikleri
sağlayabilmesi için yapılandırılması gerekmektedir buda zaman kaybına ve
karmaşıklığa sebep olmaktadır.
Açık Kaynak Kodlu ücretsiz olarak
kullanabileceğimiz ModSecurity örnek verebiliriz.
ModSecurity, web uygulamaları
için geliştirilmiş web servislerinde gömülü bir şekilde çalışan web uygulama
güvenlik duvarıdır. Bunun anlamı kurulu olan web sunucusuna istediğimiz zaman
ilave edilebilir ve devre dışı bırakabiliriz. ModSecurity’nin bu kullanım şekli
ile daha önce var olan networkümüzde herhangi bir değişiklik yapmamıza gerek
kalmaz. Web sunucumuzla bir bağlantısı olmadığından taşınabilirliği kolaydır. Temel
çalışma mantığı http trafiğini dinleyip analiz eder. Web uygulamaları için
saldırı tespit etme ve engelleme görevi görür.
MoSecurity Nasıl
Çalışır
Linux ve Windows işletim
sistemlerinde desteklenir ve bir web sunucusu (Apache, IIS) modül olarak
çalışır. ModSecurity web sunucusuna gelen tüm istekleri ve bu isteklere
gönderilen yanıtları kontrol eder. Kontrol başarılı olursa, içeriği almak için
http isteğini web sitesine yönlendirir kontrol eğer başarısız olursa
ModSecurity’de belirlenen kurallar dahilinde yanıt oluşturulur.
Avantajları;
·
Apache log kaydı
tutmaz ModSecurity HTTP trafiği üzerinde her türlü veriyi kayıt altına tutar
·
Gerçek zamanlı veri
analizi yapar.
·
Saldırı tespit ve
öenleme için anında müdahaleler yapmamıza yarayan kurallar yazabiliriz.
·
ModSecurity kural
motoru (SecRuleEngin) çok esnek kurallar yazmamızı sağlar. HTTP işlem dataları
üzerinde bize özel programlama dili sunar
ModSecurity Saldırılara karşı
anında tepki verir bunu 3 farklı yolla gerçekleştirilebilir;
1-
Negative Security
Model (Negatif Güvenlik Modeli):
Anormal olan istekleri, sıra dışı hareketleri ve genel web uygulama ataklını
izler. ip adresi, oturum, kullanıcı hesabı gibi detaya bakıp bunların sonucuna
göre kuralların işlenmesi sağlanır.
2-
Positive Security
Model (Pozitif Security Model):
Bu modelde sadece geçerli tanımlanan istekler kabul edilir ve bu istekler
dışındakiler tümüyle reddedilir.
3-
Know Weaknesses and
Vulnerabilities (Bilinen Zayıflıklar Ve Açıklar):
ModSecurity Kural yazılması sayesinde, dışarıdan gelen saldırılara karşı
yamalar yapmamızı sağlar Bu yamalar sunucunun kendi açıklarından ziyade üçüncü
parti yazılımlardan kaynaklanan açıklardır. Bu yazılımdan kaynaklanan
zafiyetler kapatılana kadar ModSecurity ile yama oluşturuluabilir.
WAF Keşfi
WAF olduğunu anlamanın çeşitli yolları vardır bunlardan ilki waf00f aracını kullanmak, başla bir yöntem olarak birden fazla istek art arda atıldığı zaman bağlantı kesiliyorsa burada güvenlik duvarı olduğu anlaşılabilir, nmap script taramasında WAF olduğunun tespiti yapılabilir.
wafw00f
kullanarak;
terminal açılarak
sudo wafw00f hedef_url_adresi
wafwoof tarama gerçekleştirir
tamanın çıktısına göre WAF varsa bulduğunu markasını söyler eğer WAF bulamaz
ise bulamadığını söyler.
nmap kullanılarak
tespit edilmesi
nmap –script parametresine “ http-waf-detect”
eklenerek tespit edileblir.
kullanılan komut;
nmap -p80
--script http-waf-detect <host>
kullanılan komutun çıktısı şu
şekilde olmaktadır.
PORT STATE SERVICE
80/tcp open http
|_http-waf-detect: IDS/IPS/WAF detected
WAF Atlatma Çalışmaları
-
WAF’lar gelen istedğin
IP adresini Header’lara bakarak anlayabilir. WAF kontrol etmeyeceği IP
adresleri bulunmaktadır bunlara örnek olarak Cache sunucusu ip adresi
(forwarded-for), Proxy Sunucusu ip Adresi (remote-IP), Local Host ip adresleri
(originating-ip), Yerel Ağ ip adresleri (remote-addr), karmaşık string
ifadeleri (remote-ip) yani bu ip adreslerinden gelen istekleri analiz etmezler
eğer saldırgan bu ip adreslerinden geliyomuş gibi yaparsa WAF filtrelemesini
atlatabilir.
-
WAF gelen istekleri
analiz ettiği zaman güvenlik modelindeki listelere bakar eğer listede eksik değerler
var ise bu değerler kullanılarak WAF atlatılabilir;
Örneğin;
<script>alert(123)<script>
-> ASCII karakterli olarak filtreleyebilir fakat
<sCripT>AleRt(123)</scRIpt>
-> bu yöntemle atlatılabilir
-
Çeşitli encode
yöntemleri kullanılarak WAF anlaması engellenebilir encode işlemi olarak base64
url encoding kullanılabilir.
Örneğin sqli zafiyetinde en çok kullanılan ‘ işareti ASCII karakter olarak
engellenmiş olabilir lakin farklı enconding yöntemleri kullanılarak WAF’ın
anlaması engellenbilir.
Ascii – '
URL Encode - %27
Double URL Encode - %2527
UTF-8 (2 byte) - %c0%a7
UTF-8 (JAVA) - \uc0a7
HTML Entity - '
HTML Entity Number - 
Decimal - '
Unicode URL Encoding - %u0027
Base64 - Jw==
-
Aynı işlevi gören
farklı fonksiyonlar kullanılabilir yani <script>alert("xss">)</script>
javascript farklı olarak <img/src="xss.png"alt="xss">
yazılarak WAF güvenlik modelinde olmayan bir fonksiyon kullanılarak zafiyeti
sömürebiliriz
<script>alert("xss">)</script> benzer fonksiyonlar;
<img/src="xss.png"alt="xss">
<object
data="javascript:alert(1)">uyg.asp?id=<object>< param
name="src"
value="javascript:alert(1)"></param></object>
<isindex type=image src=1 onerror=alert(1)>
<isindex action=javascript:alert(1) type=image>
<img src=x:alert(alt) onerror=eval(src) alt=0>
<meta style="xss:expression(open(alert(1)))" />
-
Benzer mantıksal
operatörler kullanılarak WAF sitemi atlatılabilir yani AND operatörü yerine
&& kullanılabilir.
-
Yorum karakterleri
eklenerek WAF anlamlandırmasını zorlaştırılır böylelikle WAF güvenlik modeli
bypass edilebilir. /**//*/
-
Bellek taşması
yöntemi kullanılarak WAF bypass edilebilir.
-
XML fonksiyonlarının
sql tarfından desteklenir bundan dolayı WAF XML fonksiyonlarını kendi
içerisinde anlamlandıramadığı için WAF bypass edebilir.
SELECTUpdateXML('<scriptx=_></script>',’/script/@x','src=//0x.lv');
-
WAF’ların kurulumu
yapılırken SSL için gerekli ayarlamalar genellikle göz ardı edilir. SSL ile
ilgili ayarların yapılmadığı bir WAF sisteminde SSL trafiği kullanılarak yapıla
saldırı engellenemez böylelikle WAF bypass edilebilir.
-
WAF’ın çalışmasını
engelleyecek kadar XML, SOAP, regular expression istekleri yollanır ve WAF
görevini yapamaz hale gelebilir.
Kaynaklar
https://tr.wikipedia.org/wiki/Web_uygulamas%C4%B1_g%C3%BCvenlik_duvar%C4%B1
https://nmap.org/nsedoc/scripts/http-waf-detect.html
https://www.cozumpark.com/web-application-firewall-barracuda-waf-urunu-temelleri-ve-waas-hizmeti/
https://avinetworks.com/what-is-a-web-application-firewall/
https://enterprise.verizon.com/resources/reports/dbir/
https://owasp.org/www-community/Virtual_Patching_Best_Practices
https://www2.slideshare.net/su13ym4n/hacktrick14-suleyman-ozarslan-waf-atlatma-yntemleri
https://github.com/EnableSecurity/wafw00f