WP Spam Yorum ve Brute Force Saldırılarını Engelleme

Merhaba, bu yazımızda wordpress tabanlı veya (birkaç ufak değişikle) farklı altyapılarda web siteleri için, yapılan spam yorumları engellemeyi ve Brute Force (kaba kuvvet) saldırılarıyla hedef alınan wp-login.php, xmlrpc.php gibi önemli dosyalarımızı koruyup, sürekli giriş denemesi yaparak şifremizi kırmayı amaçlayan botları %99 oranında engellemeyi anlatmaya çalışacağım. Anlatacağım yöntem gerçekten çok başarılı ve sunucumuza hiç yük bindirmeyecek bir yöntemdir.

 

1. Adım: Cloudflare Kurulumu

Bazılarınızın hoşuna gitmeyebilir, çünkü kullandığınız eklentiler bazen cloudflare ile sorun yaşıyor. Fakat iyi bir yapılandırma ile tam uyumluluk sağlayabilirsiniz. Eğer bir sorun varsa bu giderilebilir bir sorundur. Sitemde hali hazırda cache ile ilgili eklentiler de dahil olmak üzere birçok eklenti kurulu ve doğru yapılandırma sayesinde hiçbir sorun yaşamıyorum. Cloudflare neden önemli? Güvenlik eklentileri işimizi görmez mi? Evet, düşük hacimli saldırılarda güvenlik eklentileri bir noktaya kadar iş görecektir fakat bu eklentiler tüm yükü sunucunuza bindirdiği için siteniz yavaşlayacak, zaman zaman tamamen duracak, hosting sağlayıcınızla aranız bozulacaktır. Oysa cloudflare tüm yükü kendi üstleniyor, tüm süreç cloudflare serverleri üzerinde gerçekleştiğinden sizin sunucunuz yük altına girmiyor. Eklentileri yüklemek, kaldırmak ayrı bir dert. Cloudflare sağladığı diğer faydalı araçlar ve gelişmiş izleme ve takip altyapısı ile bulunmaz bir nimet. Bu yazımız cloudflare üzerinden ilerleyecek, internette kurulum konusunda yeterli içerik bulunduğundan burada ayrıca bu konuya değinmeyeceğim, kolayca kurulumu yapabilirsiniz, takıldığınız yerleri yorum yazıp sorabilirsiniz. Cloudflare kurulumunuzun olduğu ve standart ayarlamaların yapıldığı varsayımı üzerine ilerliyorum.

 

2. Adım: Spam Yorum Yazan Botları Engellemek

Zaman zaman bu spam yorumlar insana illallah dedirtiyor. Adamlar botla garip garip reklamlar yapıyor, mesela ilaç satmaya çalışıyor, çoğunlukla backlink almaya çalışıyorlar. Webmasterları ilgilendiren, doğrudan site yöneticilerine yönelik içerik de olabiliyor, örnekler genişletilebilir. Bu can sıkıcı yorumların cloudflare kullanılarak %99 oranında engellenmesi mümkün. Hemen nasıl yapılacağına bakalım;

 

Üst menüden Firewall seçeneğine girip, Settings kısmına tıklıyoruz, açılan sayfada Security Level seçeneğini High olarak belirliyoruz. Bot Fight Mode seçeneğini on konumuna getiriyoruz. Hepsi bu kadar, sadece iki seçeneği değiştirerek spam botlarını %99 oranında engelledik. Bu kadar kolay bir işlem. Peki nasıl işliyor? Merak edenler için anlatmaya çalışayım, projecthoneypot.org diye bir oluşum var, bu oluşum ip adreslerine bir puan veriyor, eğer bir ip adresinden spam yorumlar, saldırılar vb. kötü amaçlı tarafik yayılıyorsa, bu ip karalisteye düşüyor. Cloudflare sitenize gelen trafiği incelerken, eğer bu karalistede olan bir ip adresine rastlarsa ve bu ip son 14 gün içerisinde olumsuz trafik oluşturmuşsa, karşısına captcha veya js challenge denen, botların geçemediği ama insanların kolayca geçebildiği engeller koyuyor. Bu sayede, spam yorum yazan veya diğer kötü amaçlı botların %99 sitenize daha ulaşmadan engellenmiş oluyor. Bu engellemeler Overview kısmında kaydedilir. Kahvenizi yudumlarken, botların boş çabalarını keyifle inceleyebilirsiniz 🙂  Peki, Security Level kısmında en yüksek seviye olan, i’m under attack! seçeneğini neden seçmiyoruz? Çünkü bu seçenek, karalisteye bakmadan, gelen tüm ziyaretleri botmu diye incelemeye çalışacak, bu nedenle normal ziyaretçilerin sevmeyeceği beklemeler ve captcha ekranları gösterilecek. Bu tarz önlemeler normal ziyaretçilerinizin rahatsız olmasına neden olur ve gereksizdir. Zaten adı üstünde, eğer siteniz saldırı altındaysa bu seçeneği seçmelisiniz. Ayarlar High konumundayken normal ziyaretçiler bir şey görmeyecek sadece kötü trafik geçmişi olan ipler için artı bir kontrol sağlanacaktır.

 

3. Adım: Giriş Yapma Saldırılarını (Brute Force) Engellemek

WP altyapılı sitelere ulaşan trafiğin büyük bir kısmı, Brute Force saldırılarıdır. Kötü amaçlı kişi, çeşitli açıklar vb zafiyetler sayesinde birçok web sayfasına, sunucuya botnet denen geniş saldırı ağının bir parçasını bırakıp devasa saldırı ağları oluşturur, bu ağlar üzerinden Brute Force gibi yöntemlerle sağa sola saldırıp dururlar. Bu ağların bir parçasıysanız genel olarak zombi diye adlandırılırsınız, bu durum çoğunlukla farkedilmez, çünkü saldırgan sisteminize gözle görülür zarar vermeden, sadece bir yazılım veya betik bırakıp, sizin ağ altyapınızı sömürür. Bu ağın parçası olmamak için sisteminizi güncel tutmalı, kırılamayacak şifreler belirlemeli, antivirüs yazılımı kullanmalısınız. Şimdi gelelim, sitenize binlerce giriş denemesi yaparak, şifrenizi ele geçirmeye çalışan bu zombileri nasıl durdurabiliriz;

 

Üst menüden Page Rules seçeneğini seçelim. Page Rules sayesinde sadece bazı sayfalarınızda geçerli olan yeni kurallar ekleyebilir veya varsayılan kuralların farklı çalışması sağlanabilir. Cloudflare ücretsiz hesaplar için üç adet kural oluşturmaya izin veriyor, bizim için yeterli. Bu sayfada Create Page Rules butonuna basınca yukarıdaki gibi bir sayfa açılacak, açılan sayfada URL kısmına *siteniz.com/wp-login.php* şeklinde login sayfamızın adresini yazalım. Yıldızları unutmayalım. Alt kısımda Browser Integrity Check seçeneğini seçip, on konumuna getirelim. + Add a Setting butonuna basıp bir kural daha oluşturacağız, açılan kutudan Security Level seçeneğini seçip, değerini i’m under attack olarak ayarlayacağız. Bu resimde görünmeyen save and deploy butonuna basıp kaydedeceğiz. Ardından, tekrar Page Rules sayfasında Create Page Rules butonuna basıp yeni bir kural oluşturalım, yukarıdakinin aynısını sadece farklı url için yapacağız. URL kısmı *siteniz.com/xmlrpc.php* şeklinde olan, ayarları diğer kuralla aynı bir kural daha oluşturup kaydedin. xmlrpc.php sayfası login denemelerine izin verdiğinden botların hedefi oluyor. Bu ayarlar ile login denemelerini, bu sayfayalara yapılan saldırıları güvenlik altına aldık.

 

Yukarıda bahsettiğim iki kural oluşturulduğunda Page Rules sayfanız yukarıdaki görselde olduğu gibi görünmelidir. Artık cloudflare ile işimiz bitti, burada ek bir ayar gerekmiyor, ufak tefek birkaç ince ayarı aşağıda belirteceğim.

 

4.Adım: İnce Ayarlar

Bu süreçte edindiğim tecrübeleri sizlerle paylaşıyorum, yukarıdaki teknik %99 oranında kötü amaçlı trafiği engelleyecektir. Fakat bu işi yapanlar boş oturacak değiller, onlar da yöntemlerini geliştiriyor ve o geride kalan %1’lik kısma giriyorlar. Yukarıdaki önlemleri geçebilen girişimler çok az sayıda oluyor, görmezden gelebilirsiniz ya da benim aşağıda anlatacağım birkaç basit adımla bunlarıda önleyebilirsiniz. Peki nasıl geçiyorlar? Sunucu erişim günlüklerini incelediğimde birkaç basit ama etkili bypass yöntemi kullandıklarına şahit oldum. Örneğin “mail” subdomainini hedef alıyorlar. Bu subdomain smtp bağlantı sorunu oluşturmaması için genel olarak cloudflare ile korunmaz. Cpanel gibi yönetim arayüzleri bu subdomaini ana domaine yönlendiriyor, bu şekliyle saldırıya açık oluyor. Örnek bir girişimi, sunucu kayıtlarımdan buraya ekliyorum;

217.182.73.xx - - [17/Apr/2020:03:10:38 +0300] "GET /wp-login.php HTTP/1.1" 200 - "http://mail.teknotezgah.com/wp-login.php" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"

Göreceğiniz üzere mail subdomaini üzerinden giriş yapmaya çalışıyorlar, buradaki ana problem mail subdomaini ile wp-login.php sayfasına erişebilmeleri. Bu sayede bizim page rules ile belirlediğimiz önlemi atlatmış oluyorlar. Fakat çözümü oldukça kolay. .htaccess dosyasına basit bir kural ekleyip bu subdomain üzerinden login sayfasına erişimi durduracağız. Sitemizin ana dizininde bulunan .htaccess dosyasını açıp içeriğine aşağıdaki kodları ekleyelim, site kısmına kendi sitenizi yazmayı unutmayın.

#mail subdomain login yonlendirme
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mail.teknotezgah.com$ [NC]
RewriteRule ^wp-login.php$ - [F]
#mail subdomain login yonlendirme

Bu kural, mail subdomaini üzerinden login sayfasına gelenleri ana domainde aynı sayfaya yönlendirerek kuralın bypass edilmesini engelleyecektir.

İkinci bir bypass yöntemi

Yukarıda anlattığım subdomain yöntemi dışında bir yöntem daha farkettim, çok basit ama etkili bir bypass yöntemi hemen örnek ile göstereyim;

62.210.140.xxx - - [17/Apr/2020:00:39:01 +0300] "GET //wp-login.php HTTP/1.1" 200 246 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"

Yukarıdaki kayıt incelenirken gözden kaçması kolay bir girişim var. Bunu bir yazım hatası sanabilirsiniz ama değil. Göreceğiniz üzere login sayfasına erişirken çift eğik çizgi kullanılmış “//wp-login.php” bu basit durum, kuralı devre dışı bırakıyor. Bu çizğiler bazen üçlü olarak da kullanılabiliyor. siteniz.com//wp-login.php şeklinde bir girişim ile kurallar bypass edilebiliyor. Fakat bunun çözümüde oldukça basit. Aşağıdaki kuralı .htaccess dosyamıza eklememiz sorunu çözüyor.

# slash kontrol
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^(.*) $1 [R=301,L]
# slash kontrol

Bu kural iki ve daha fazla / olması durumunda bu çizğileri tek çizği haline getirecek. Hepsi bu kadar. Ben günlükleri kontrol edip yeni bypass yöntemleri keşfettikçe yazıyı güncelleyip, durumu sizlere aktarmaya çalışacağım. Bu haliyle sitemiz oldukça güvenli, spam ve saldırılardan korunaklı durumdadır. Tüm bunlara ek olarak Limit Login Attempts Reloaded isimli eklentiyi kurmanızda fayda var, bu eklenti sayesinde birden fazla yanlış giriş denemesi yapan ip adresleri engelleniyor. Ek bir önlem olarak bu basit eklentiyi tavsiye ederim.

(Yukarıdaki erişim günlüklerinde görülen “200” durum bilgisi, htaccess kuralları eklendikten sonra “301” olarak değişecektir. 301 bu sayfaların artık yönlendirildiği yani kuralınızın çalıştığı anlamına gelir.)

 

Sonuç

Eklenti kullanmadan, sunucumuza ek yük bindirmeden, kötü amaçlı tarfiği yukarıdaki yöntemle neredeyse tamamen engellemek mümkün. Engellenen girişimleri cloudflare firewall menüsü altında, overview kısmında görebilir, detaylı inceleyebilirsiniz. Burada detayları incelerken ASN kısmında google, microsoft gibi büyük firmaların adlarını görünce endişelenmeyin bunlar google veya bing botlarını engellediğiniz anlamına gelmiyor, bu firmalar barındırma hizmeti sağladıklarından, bu barındırma sunucuları üzerinden gelen kötü amaçlı tarfik olabiliyor ve filtremize takılıyor. Cloudflare google vb. arama motorları ve faydalı botları tanır ve engelleme uygulamaz, bu konuda endişeniz olmasın.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir