Dijital dünyada verinin önemi giderek artarken, bu verileri korumak da
önemli hale gelmiştir. Özellikle web siteleri, içeriklerini ve kullanıcı
bilgilerini koruma konusunda giderek daha karmaşık tehditlerle karşı
karşıya kalmaktadır. Web scraping (veri kazıma) adı verilen teknikle,
botlar aracılığıyla web sitelerinden içerik çalmak, bilgi güvenligi açısından
büyük bir risk oluşturmaktadır.
Bu noktada, Anti-Crawling sistemleri, web uygulamalarını
korumak için bir çözüm sunmaktadır. Bu sistemler, bot trafigini tespit
ederek engellemek ve yalnızca meşru kullanıcıların erişimine izin vermek
için tasarlanmıştir. Anti-Crawling sistemleri için birçok farklı çözümler
olmakla birlikte ben bu yazımda FortiGate Firewall üzerinden
gideceğim. Bu çözümlerden kısaca bahsetmek gerekirse genellikle
kullanıcı davranışlarının izlenmesi, CAPTCHA entegrasyonu, hız sınırlama
(rate limiting), IP engelleme, coğrafi filtreleme ve bot tespitine yönelik sistemler diyebilirim.Fortigate Firewall ise, sunduğu esnek güvenlik politikaları ve ileri seviye tehdit algılama özellikleri ile Anti Crawling mekanizmaları için oldukça ideal bir araçtır.
Bu makalede, Fortigate Firewall kullanarak etkili bir Anti Crawling sisteminin nasıl yapılandırılabileceğini adım adım ele alacağız.
Bu yapılandırma için benim izlediğim adımları şu şekilde özetleyebilirim:
- Web Filtreleme Politikası Oluşturma
- Uygulama Kontrolü Politikası Oluşturma
- Rate Limiting Kurulumu
- Log Analizi
Şimdi, ilk adım olan Web Filtreleme Politikası oluşturma süreciyle başlayalım.
- Web Filtreleme Politikası Oluşturma
Web filtreleme politikalarının amacı, ağ güvenliğini artırmak ve ağ kullanıcılarının belirli türde içeriklere erişimini sınırlayarak daha kontrollü ve güvenli bir dijital ortam sağlamaktır. Bu politika Anti Crawling sistemimizin bir parçası olarak botların izinsiz veri taraması yapmasını önler; böylece hassas bilgilerin korunmasını ve sistem kaynaklarının kötüye kullanılmasının engellenmesini sağlar.
Web Filter ile ilgili politikamızı yazmadan önce Web Filter seçeneği altında bir profil oluşturmamız gerekecek. Bunun için Fortigate’in arayüzünden Security Profiles menüsünde Web Filter’a gelmeliyiz. Create New seçeneği ile yeni profilimizi oluşturmaya başlayabiliriz.
Oluşturacağımız yeni profile “AntiCrawlingWF” diyelim. Burada dikkat etmemiz gereken isim verirken Türkçe karakter veya boşluk olmaması.
İlk olarak “FortiGuard Category Based Filter” seçeneğini aktif edelim ve burada Security Risk altındaki özelliklerin aksiyonunun Block olmasına dikkat edelim. Gerekirse diğer şüpheli kategorileri (örn. “Unrated”, “Potentially Liable”) de bloklayalım. Bu kategorilerdeki siteler genellikle kötü niyetli yazılımlara, kimlik avına (phishing), veya diğer siber tehditlere ev sahipliği yapar. Web kazıyıcılar (scrapers), hassas verilere ulaşmak için sıkça güvenlik riskli veya tehlikeli proxy siteleri kullanabilir. Bu kategorilerin engellenmesi, bu tür saldırıların altyapısını keser.
Bu aşamalardan sonra “Static URL Filter” seçeneği altında “URL Filter ” özelliğini de aktif edelim. Create New diyerek bizim için zararlı olacak istemediğimiz URL’leri filtreyelim. Örneğin “^/robots\.txt$” ;
URL’yi eklerken type Regular Expression(eşleşen tüm URL’leri algılayarak daha geniş kapsamlı ve esnek bir filtreleme özelliği için) , aksiyon kısmını da kategori bazlı filtrelemede de yaptığımız gibi Block olarak seçip ekleyelim.Ben aşağıda yazdığım URL’ler için filtreleme işlemi yaptım.
- ^/robots\.txt$: Botların tarama izinlerini öğrenmesini engellemek için.
- /sitemap.xml: Site haritasını ele geçirip tüm sayfalara erişimi önlemek için.
- (^/)admin($//): Yönetim paneline izinsiz girişleri engellemek için.
- /phpinfo.php: PHP yapılandırma bilgilerini kötüye kullanım için erişimi önlemek amacıyla.
- (^/)test($//): Test amaçlı bırakılmış, potansiyel güvenlik açığı oluşturabilecek sayfaları gizlemek için.
- \?.”=(?:\”bot crawl spider): Botların belirgin davranışlarını filtrelemek için.
- \.php\?cmd=: Komut enjeksiyonu girişimlerini engellemek için.
- ^/xmlrpc\.php$: XML-RPC’yi kullanarak yapılacak saldırıları önlemek için.
- (^)/)\.git($)/): Kaynak koduna izinsiz erişimi engellemek için.
Bu şekilde yapılandırıp profilimizi kaydedelim.
- Uygulama Kontrolü Politikası Oluşturma
FortiGate’de Uygulama Kontrolü Politikası oluşturmak, web trafiğini analiz ederek kötü amaçlı botları ve veri kazıma (scraping) girişimlerini tespit edip engellemek için kritik öneme sahiptir. Bu politika, kullanıcı davranışlarını izleyip anormal aktiviteleri ayırt ederek meşru trafiği korur ve veri sızıntısı, performans düşüşü veya kötü niyetli saldırılara karşı etkili bir savunma sağlar. Amaç olarak Web Filter özelliği ile benzese de Uygulama Kontrolü, uygulamaların trafiğini analiz edip yönetirken; Web Filtreleme, URL’lere ve web kategorilerine göre erişimi kontrol eder.
Web Filter için de yaptığımız gibi öncelikler profil oluşturacağız. Soldaki Security Profiles menüsünün altında Application Control kısmına gelip yeni bir profil “AntiCrawlingApp” oluşturalım. Burada ilk dikkat etmemiz gereken Categories özelliklerinde P2P ve Proxy’nin aksiyonunu Block olarak ayarlamak olmalıdır. Unknown Applications özelliğini de Block olarak ayarlayalım ki bilinmeyen uygulamalara izin olmasın.
Daha sonra Application and Filter Overrides altında belirli bot ve script tabanlı uygulamaların engellemeliyiz. Create New seçeneğine tıklayıp aşağıdaki botları seçeceğiz.
Bu seçtiğimiz botlar web sitelerini otomatik olarak tarayıp indeksleme yapan botlardır.
Bu seçtiğimiz botlara Wget.Like’ı da eklemeliyiz. Wget.Like ise genellikle veri kazıma veya izinsiz veri indirme için kullanılan komut satırı araçlarını temsil eder. Bu araçların engellenmesi, hassas bilgilerin izinsiz şekilde kopyalanmasını önler.
Bu botları listemize ekleyelim ve aksiyon kısmımızın block olmasına dikkat edelim. Gereken ayarlamaları yaptıktan sonra profilimiz bu şekilde gözükecek:
İlk aşamada oluşturmuş olduğumuz Web Filter profili ile şimdi yapılandırmasını tamamladığımız Application Control profilini, belirlediğimiz Policy’e ekleyerek işlemimizi tamamlayabiliriz. Bu adımda, her iki profilin de ilgili Policy’e dahil edilmesi, erişim kontrollerinin ve güvenlik önlemlerinin daha kapsamlı bir şekilde uygulanmasını sağlayacaktır. Böylelikle, hem web filtreleme hem de uygulama kontrol mekanizmalarını aktif hale getirerek ağ trafiği üzerinde daha detaylı bir denetim gerçekleştirmiş olacağız..
- Rate Limiting Kurulumu
İşlemleri Dos Policy ile yapacağımız için öncelikle Firewall arayüzünden System, Feature visibility’ nin altında DoS Policy’nin açılması gerekir.
FortiGate üzerinde, tüm IP adreslerinden gelen trafiği (eğer belirli IP adresleri varsa IP Pool özelliğini kullanarak kısıtlayabilirsiniz ) kontrol altına almak için DoS Policy kullanarak bir Rate Limiting yapılandırması uygulayacağız. Bu yapılandırma, belirli bir süre içinde gönderilen istek sayısını sınırlandırarak ağımızı aşırı yüklenmeye ve kötü niyetli trafiğe karşı korumamıza olanak tanıyacak.
İlk olarak arayüzün solundaki menüde Policy&Objects altında bulunan IPv4 DOS Policy kısmına gelmemiz lazım. Bundan sonra yeni bir tane oluşturacağız.
Bu yapılandırmada dikkat edilmesi gereken bazı önemli noktalar şunlardır:
Incoming Interface olarak, trafiğin geldiği arayüzü seçmeliyiz. Örneğin, ben WAN trafiği için port1 arayüzünü kullandım.
Source Address için ise tüm IP’lerden gelecek istekleri sınırlayacağımız için All seçtik.
Destination Address kısmında, hedef adres olarak örnek bir domain olan example.com’u belirledim. İlk tanımlama sırasında, bu domain adresinin yanında bir ünlem işareti görünmesi normaldir; bu, FortiGate’in domain adresini doğrulamaya çalıştığını gösterir.
Service alanında ise, tüm trafiği sınırlamak amacıyla All seçeneğini tercih ettim. Ancak dilerseniz trafiği yalnızca HTTP ve HTTPS gibi belirli protokollerle kısıtlayabilirsiniz.
Hedef trafiği yapılandırdığımıza göre sıra Rate Limit parametrelerinde:
Burada karşımıza L3 Anomalies ve L4 Anomalies olmak üzere iki tane liste çıkıyor. Bunlardan kısaca bahsetmek gerekirse genellikle ağ izleme ve güvenlik sistemlerinde ortaya çıkan ve OSI modeli katmanlarına (Layer 3 ve Layer 4)dayalı sorunları ifade eder.
Öncelikle L3-L4 Anomalities kısımlarında Logging seçeneğini aktif edelim.Ki daha sonra sitemize yapılan isteklerin loglarını tutabilelim.
Action kısmında ise ben Block olarak yapılandırdım. Bunun sebebi belirteceğimiz eşik değerin üzerine çıkılırsa eğer trafiği direkt engellemesi. Eğer Monitor olarak yapılandırırsak bu trafiği kaydolacaktır ancak engelleme işlemi olmaz.
Ben en çok kullanılan SYN Flood ,UDP Flood, ICMP Flood değerleri üzerinden gideceğim.Benim yapılandırmam şu şekilde olacak:
SYN Flood : TCP bağlantı kurulumu sırasında gerçekleşen bir saldırı türüdür. Bu saldırıda, hedefe çok sayıda SYN (synchronize) isteği gönderilir ve hedefin kaynakları tüketilmeye çalışılır.
Ben başlangıç noktası olarak eşik değere “100” verdim.Çünkü çoğu ağda 100’den fazla eşzamanlı TCP bağlantısı talebi, olağandışı olarak değerlendirilir.
UDP Flood: Çok sayıda sahte veya büyük miktarda UDP paketinin hedefe gönderilmesiyle gerçekleşir. UDP protokolünün bağlantısız yapısı, bu saldırıyı daha etkili kılar.
Eşik değeri burası için “500” olarak belirledim. Sebebi ise normal ağlarda UDP tabanlı hizmetler (DNS, video akışı gibi) genelde bu sınırı aşmaz.
ICMP Flood: Ping istekleri gibi ICMP paketlerinin hedefe yoğun şekilde gönderilmesiyle gerçekleşir. Bu tür saldırılar ağ kaynaklarını ve bağlantı bant genişliğini tüketmeyi amaçlar.
Eşik değeri burası için de “50” olarak belirledim.Normalde ICMP paketleri, ağda hata raporlaması ve teşhis amacıyla kullanılır. Bu yüzden trafik hacmi düşük olmalıdır.
- Log Analizi
Uyguladığımız politikaların çalışabilirliğini değerlendirmek ve iyileştirmeler yapmak için Log analizine ihtiyacımız var. Bu sayede sistemimizin verimliliğini sağlamış olacağız.
Bunun için Log & Report modülünden trafik ve güvenlik raporlarını inceleyebiliriz.
Umarım bu yazı faydalı olmuştur, vaktinizi ayırdığınız için teşekkür ederim.