Geek, geçtiğimiz birkaç hafta içinde birden fazla sayıda büyük ölçekli DDoS saldırısı ile karşı karşıya kaldı.
Bu saldırıların tamamını kısa bir süre içinde fark etmeyi başardığımız için downtime olarak da bilinen toplam kesinti süresini yalnızca dakikalarla sınırlı tutabildik ancak her defasında, saldırının artık sona erdiğinden emin olana dek saatlerce Cloudflare’ın Under Attack Modu’nu kullanmak zorunda kaldık.
Under Attack Mode, DDoS saldırılarını engellemekte başarılı bir iş çıkarır ancak kısa süreli bir çözüm olması amaçlanmıştır çünkü taranabilirlik sorunlarına ve uzun yükleme ve doğrulama sürelerine neden olabilir.
Başlangıçta bu saldırıların her birinin birbirinden bağımsız ve muhtemelen rastgele olarak hedeflenmiş saldırılar olduklarını düşünmüştüm – ve hala öyle olabilir – ancak aralarındaki ortak bir örüntü gözüme çarptı:
Saldırılar, /wp-admin/install.php dizinini hedef alıyordu.
Bu, WordPress tabanlı internet sitelerinde manuel WordPress kurulumunu gerçekleştirmek için kullanılan kurulum arayüzünün bağlantısıdır.
Yalnızca WordPress’i elle kurmak istediğinizde, kurulumun ilk anlarında ve sitenin ömrü boyunca yalnızca bir kere kullanmanız gerekir.
Kurulumdan sonra bu adrese erişmek isterseniz WordPress size “Zaten Kurulmuş: Zaten WordPress kurmuşsunuz gibi görünüyor. Yeniden kurmak için lütfen önce eski veri tabanı tablolarınızı temizleyin.” yazılı basit bir sayfa gösterecektir.
Geek tıpkı diğer pek çok internet sitesi gibi İçerik Yönetim Sistemi olarak WordPress’i tercih ediyor ancak önemli olan asıl nokta Geek’in halihazırda kurulu bir internet sitesi olduğudur.
Bu, teorik olarak saldırganın kurulu bir WordPress internet sitesinde /wp-admin/install.php dosyasına erişerek bir fayda elde edemeyeceği anlamına gelir.
Ancak saldırganın rastgele bir listeden henüz kurulumu tamamlanmamış olan WordPress tabanlı internet sitelerini aradığına inanmak kuşkulu olacaktır çünkü bunu yapmanın daha pratik yöntemleri vardır ve bu denli DDoS saldırıları zaman, emek ve maliyet gerektirir.
Cevaplardan biri, belki de saldırganın büyük bir DDos saldırısı sırasında WordPress’te sorunlar ortaya çıkabileceğini bilerek ya da tahmin ederek farklı bir şeyler amaçladığıdır.
Distributed Denial-of-Service kelimelerinin baş harflerinden oluşan DDoS, bir internet sitesine o sırada işleyebileceğinden çok daha fazla sayıda istek göndererek internet sitesinin doğru bir şekilde çalışmasını engellemek amacı ile düzenlenen siber saldırı türüdür.
Halihazırda kurulu olan WordPress tabanlı bir internet sitesinde aşağıdakine benzer bir komut “True” değerini üretir.
if (!file_exists('wp-config.php'))
Örneğin check-config.php isimli bir dosya oluşturduktan sonra bu dosyanın içine aşağıdaki kodları ekler ve bunu da public_html dizinine attıktan sonra example.com/check-config.php adresini ziyaret ederseniz ekranda “True” sonucunun döndüğünü göreceksinizdir.
<?php
if (!file_exists('wp-config.php')) {
echo "False";
} else {
echo "True";
}
?>
Ancak büyük DDoS saldırıları sırasında donanım hizmetleri beklenen şekilde çalışmayabilir.
Buradaki çıkarımım, bu saldırının bu tür saldırılar sırasında WordPress’in if (!file_exists(‘wp-config.php’)) gibi komutlar için de doğru sonucu döndürüp döndüremeyeceğinin yani esasen dosyanın gerçekten de var olup olmadığını kontrol edemeyeceğinin sınandığı yönündedir.
Bu, kurulum arayüzünün teorik olarak mevcutta var olan dosyaları göz ardı ederek yeni bir kuruluma izin verebileceği anlamına gelir.
Böyle olursa PHP, komut zincirini kurulum dosyasına devredebilir ve ardından saldırgan, WordPress’i install.php üzerinden kendi kimlik bilgileri ile yeniden oluşturabilir.
Bu çıkarımım mevcut tablo ile uyumludur ancak saldırganın gerçekte tam olarak ne amaçladığını tahmin etmek kesin olarak mümkün olmadığından basit bir spekülasyondan ibarettir.
Her halükarda, birkaç farklı DDoS saldırısının ardından mevcut tablonun dosya tabanlı sorunlara neden olmadığını ve kontrolün hala bizde olduğunu dile getirebilirim.
WordPress’in temel kurulum dosyalarının Geek’te herhangi bir güvenlik açığına neden olmadığından emin olmak için .htaccess üzerinde birkaç yeni düzenlemede bulundum:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-admin/install\\.php$
RewriteRule ^ - [F]
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
<Files farhan.php>
Order allow,deny
Deny from all
</Files>
<Files license.txt>
Order allow,deny
Deny from all
</Files>
<Files install.php>
Order allow,deny
Deny from all
</Files>
<Files wp-config.php>
Order allow,deny
Deny from all
</Files>
<Files error_log>
Order allow,deny
Deny from all
</Files>
<Files fantastico_fileslist.txt>
Order allow,deny
Deny from all
</Files>
<Files fantversion.php>
Order allow,deny
Deny from all
</Files>
Siz de yukarıdaki yapılandırma komutlarını .htaccess dosyanıza ekleyerek bu dosyalara olan erişimi engelleyebilirsiniz.
Bu durumda /wp-admin/install.php artık “Forbidden: You don’t have permission to access this resource.” (403) döndürecektir.
Elbette WordPress tabanlı bir internet sitesini yalnızca bu yapılandırma komutları ile güvende tutmak mümkün değildir. Bu nedenle halihazırda gerekli olan diğer önlemleri de aldığınızdan emin olmalısınız.
Son olarak, yaptığımız bu düzenlemelerin başka herhangi bir DDoS saldırısını ya da genel anlamı ile DDoS saldırılarını engellemeyeceği unutulmamalıdır ancak (1) saldırgan direkt olarak install.php dosyasını hedeflerse 403 dönütünü aldıktan sonra vazgeçebilir (2) ve bu komutlar olası diğer saldırıları engellemekte yardımcı olabilir.
Bu nedenle her halükarda internet sitenizi DDoS saldırısına karşı koruma altına alacak ve bir DDoS saldırısı sırasında hala çalışır tutacak diğer önlemleri de göz önünde bulundurmalısınız.
Geek’te barındırma sağlayıcısı olarak tercih ettiğimiz Cloudways ve indirimli Cloudflare Enterprise hakkında bilgi edinmek için Cloudways İncelemesi içeriğimize göz atabilirsiniz.