Cloudflare ile Kötü Amaçlı Trafiği Engelleme
2

Cloudflare gelişmiş DNS yönetimi ve Güvenlik Duvarı seçenekleri ile önbellekleme, optimizasyon gibi seçenekleri ile küçük ve büyük çaplı web siteleri için oldukça faydalı bir araç haline geldi. Üstelik ücretsiz sunulan plan, gayet yeterli özellikler içermesi bakımından, küçük çaplı web siteleri için, maliyete katlanmadan birçok sorunun üstesinden gelmede faydalı bir araçtır. Bahsedilen bu sorunlardan biri de, kötü amaçlı trafik. Cloudflare hali hazırda gelişmiş izleme altyapısı ile bu kötü amaçlı trafiğin neredeyse tamamını sizin müdahalenize gerek kalmadan engeller. Fakat bazı durumlarda, duruma müdahale edip, kendi kurallarınızı eklemek isteyebilirsiniz.

Önemli Ekleme: Daha etkili bir spam yorum ve login giriş saldırıları (brute force) engelleme ile ilgili bir yazı hazırladım. Göz atmanızda fayda var: WP Spam Yorum ve Brute Force Saldırılarını Engelleme

Bu konuda cloudflare kurulumu anlatılmayacaktır, kurulum hakkında yeterli kaynak olduğu için, anlatımı uzatmamak adına es geçilmiştir.  hali hazırda bir cloudflare hesabınızın ve tanımlı bir sitenizin olduğu varsayımı üzerinden konu işlenmiştir. Yine de takıldığınız noktaları, konu dahilinde veya haricinde yorum yazarak bize iletmeniz durumunda yardımcı olmaya çalışacağız.

 

Kötü amaçlı trafiğin tespit edilmesi:

Eğer ciddi bir saldırı altındaysanız, zaten sitenizde erişim sorunları ortaya çıkacak ve durumu ister istemez farkedeceksiniz. Fakat her saldırı sisteminizi durdurmaz, bu nedenle arada bir sistem kayıtlarını inceleyip arka planda neler döndüğünü anlamaya çalışmak faydalı olacaktır. Aşağıdaki resim, bir erişim kaydı günlüğünden, sunucularımız varsayılan olarak bu kayıtları tutarlar, burada kimin neler çevirdiğini görmek mümkündür.

Resim incelenirse bazı ip adreslerinin, siteyi otomatik olarak tarayıp, açık bulmaya çalıştığı anlaşılabilir. Girilen URL yapılarına bakarak, kötü amaçlı kişilerin sitede install.php gibi, kurulum sonrası unutulabilecek ve site sahipleri için tehlikeli olabilecek dosyaları ve bazı güvenlik açığı olan eklentilere ait dosyaları aradıklarını görebilirsiniz. user-agent kısmına bakılırsa bu işi python ile yazılmış bir betik ile otomatik hale getirdikleri anlaşılabilir.

Cloudflare Güvenlik Duvarı Kuralı Oluşturma

Bu kötü amaçlı trafiği süzerek engelleyebilir, captcha gibi doğrulama gerektiren sayfalara yönlendirebilirsiniz. Bu iş için bir güvenlik duvarı kuralı oluşturalım,

Cloudflare hesabımızda oturum açıp firewall sekmesine geçiyoruz, alt menüde firewall rules kısmına tıklayıp create a firewall rule butonuna basıyoruz. yeni kurallar ekleyebileceğimiz sayfa açılıyor.

Açılan sayfanın yapısı oldukça basit, rule name kısmında oluşturacağımız kural için bir ad seçiyoruz. field kısmında bize bir çok seçenek sunulmuş, bu seçenekler çok kullanışlı, örneğin bir user-agent için kural belirleyebileceğimiz gibi, sitemizde bir url adresine erişimi engelleyebileceğimiz seçenekte mevcut, oldukça esnek yapıda. operator kısmı ile sunulan seçenekler, kuralın nasıl işleneceğini belirliyor. örneğin contains seçeneği, belirttiğiniz değeri içeren durumlarda kuralı işletecektir, aşağıda örneklerle detaylı görülecek. value kısmı, oluşturacağımız kural için ana değeri içeriyor, and or yapısı ile kural genişletilebiliyor. expression preview kuralın metin haline dökülmüş hali, herhangi bir müdahale gerektirmiyor. then kısmı kural için belirlediğimiz, yasaklama, izin verme, captcha yönlendirmesi gibi kurala takılan ip adresleri için ne yapılacağının belirlendiği kısımı oluşturuyor.

Firewall Kullanarak User-Agent Engelleme

Bu örnekte kötü amaçlı user-agent engelleme işlemi yapalım. User agent, özetle tarayıcı bilgisidir. Bazı user-agentler sitenize kötü amaçlı tarafik göndermek için aracı olarak kullanılabilir. Yukarıdaki kayıtlara tekrar dönecek olursak python-urllib, python-requests gibi user agentlerin kötü amaçlı kullanıldığı ğörülebilir. önemli bir nokta, bu user agentleri kullanan tüm trafik kötü olacak diye bir kural yok. Bu agentler iyi amaçlarla da kullanılabilir, bu unutulmamalı ve dikkatli kullanılmalıdır. aksi takdirde sitemize saldırı amacı olmayan iyi trafiği engelleme riski vardır. Buradaki örnekler, kullanımı detaylandırıp sistemin anlaşılmasını kolaylaştırmak içindir.

Önemli Düzeltme: bir üst resimde yanlışlıkla and seçilmiş. and ve or kullanımında dikkatli olmak gerekiyor. and kullanıldığında iki şartın aynı anda sağlanması gerekirken, or kullanımında bu seçeneklerden herhangi birinin şartı sağlaması halinde kural işletilir. Yukarıdaki resimde or kullanılması gerekir, bu sayede belirlenmiş olan iki ayrı user agente sahip isteklerin her ikiside engellenecektir. and kullanıldığında iki ayrı değerin aynı anda sağlanması gerektiğinden ve normal koşullarda bu iki user agentin aynı anda var olmayacağından kural çalışmayacaktır. hatalı görseli yakın bir zamanda değiştireceğim, bu süreçte hataları önlemek için bu düzeltme yazısını ekleme gereği duydum.

örnekte göreceğiniz üzere, kuralımız için bir isim girdik, field kısmında işlemimizi user-agent üzerinden gerçekleştireceğimiz için ilgili seçeneği seçtik. operator kısmında contains seçeneği ile value değerini içerenleri filtreledik. Bunun yapılmasının sebebi şudur; python-urllib/2.7 gibi isimlendirilen bir user agent engellendiğinde, python-urllib/2.6 şeklinde bir user agent engellenmeyecektir. contains seçeneği ile genelleme yapıp python-urllib içeren tüm user agentleri sağını solunu hesaba katmadan filtreye almış olduk. aksi durumda bu user agentlerin her varyasyonu için ayrı kural girmek gerekirdi. value değerimiz engellediğimiz user agenti içeriyor, burada or değeri kullanarak kuralımızı genişlettik ve python-urllib, python-requests için iki ayrı user agenti işleme aldık. duruma göre and ile de kullanılabilir. Then kısmı sonuç kısmımız. ben burada, bu tarfik içinde bot olmayanlar olabileceği düşüncesiyle challenge (captcha) seçeneğini seçtim. Bu seçenek ile ilgili trafik bir sayfaya yönlendirilip, sayfada çıkan captcha doğrulamasının geçilmesi istenecek, sadece doğrulamayı geçen trafik siteye alınacak. otomatik, bot yazılımlar bu doğrulamayı geçemediğinden, bu seçenek makuldür. İsterseniz trafigi doğrudan bloklayabileceğiniz seçenekde mevcut. Hatta izin ver seçeneği ile sadece bazı kuralları taşıyan ziyaretçilerin siteye erişimi sağlanması da mümkün. Ayarları yaptıktan sonra deploy butonuna basıp kaydediyoruz. 1 dakika içinde kuralımız sitemizde çalışır hale gelecektir.

Bir Dosyaya Erişmeye Çalışan Trafiği Engelleme

Erişim kayıtları incelendiğinde, belli başlı dosyalara erişilmeye çalışıldığı görülebilir. Cloudflare kullanarak, dosyalara ve dosya yollarına erişmeye çalışan trafik yönetilebilir.

Belirlediğimiz URL path kuralı ile xmlrpc.php dosyasına erişimi, şartlı hale getirdik. Bu dosyaya erişmeden önce captcha doğrulaması şartı koyduk. dosyaya erişimi tamamen engellemek de mümkün. Sitemiz de güvenliği riske atacak dosyalara, trafiği kısıtlayarak güvenliğimizi artırabiliriz. install.php, admin.php gibi doğrudan dosyalar seçilebileceği gibi site.com/admin gibi klasör yolları da seçmek mümkündür. Burada dikkat etmeniz gereken şeyler var, engellemeye çalıştığınız dosya ve klasörleri sistem ve bazı eklentiler kullanıyor olabilir. Örneğin xmlrpc.php dosyası worpress için geçmişte ve hala spam ve güvenlik sorunu oluşturmuştur. Günümüzde bu sorunlar azaltılmış olsada bir çok kişi bu dosyaya erişimi engellemek isteyebilir, fakat bu dosyayı bazı eklentilerin de kullandığı ve bunu engellemenin sitemizde sorunlar oluşturabileceği unutulmamalıdır. Bu şekilde engellenecek dosyaların, sistemi soruna sokmayacağından emin olunmalıdır. hatta bu gibi durumlarda bir beyaz liste oluşturarak, dosyayı belirli durumlar için kullanıma açmak mümkündür.

 

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (2)

  1. örnek olarak cbd oil adı altında gelen trafiği nasıl engelleyebilirim ?

    • 21/06/2021

      detay vermediğiniz için net bir şey söyleyemiyorum. “altında gelen” trafikten kastınız nedir? ilgili kanalı filtreletip içinde cbd geçen trafiği engelleyebilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir