Merhaba değerli arkadaşlarım, önceki seferlerde Web tabanlı stresser yapımı örnekleri ve DDoS hakkında size bilgiler vermiştim. Şimdi sistemin nasıl çalıştığını biliyoruz.
Hatırlatma yapıp bir kaç örnek script verelim.
en basit HTTP get (php) saldırısı scripti
Bu scriptte gördüğünüz gibi saniyede 1k get saldırısı atıyoruz. Nasıl saldırı yaptığımızı anladık. Peki atak yaptığımız sitelerin korumaları neler? Nasıl çalışıyor?
Cloudflare nedir?
Cloudflare, internet sitelerini koruyan ve hızlandıran bir web güvenlik ve performans hizmetidir. Bir siteyi Cloudflare'a bağladığında, kullanıcılar önce Cloudflare sunucularına uğrar, ardından senin siteye yönlendirilir. Yani aşama aşama düşünün. Saldırı örnekleri ile savunma türlerine bakalım.
Cloudflare bunu fark eder çünkü aynı IP veya çok benzer bot davranışı sergiler yani saniyede 1.000 kere siteyi ziyaret edemezsiniz.
Nasıl önlem alıyor? : Cloudflare, anormal istek sayılarını anlar ve CAPTCHA (robot musun?) sorusu çıkarır. (her zaman çıkarıyor gerçi saldırı olmasada...
)
Bu saldırılar Cloudflare'a gelmeden engelleniyor. Ağ seviyesinde engeller yani
Nasıl önlem alıyor? : Cloudflare, datacenterlarında milyonlarca paketi filtreleyip çöpe atar (rate limiting, IP reputation falan)
Cloudflarein WAF (Web Application Firewall) sistemi, sıra dışı query'leri tespit eder ve otomatik banlar
Nasıl önlem alıyor? : Bilinen saldırı imzalarına karşı auto rule setleri uygular.
Cloudflare, bir kullanıcının kısa sürede çok POST isteği gönderdiğini fark edince (yani DDoS yediğini fark edince) onu "challenge" moduna alır.
Nasıl önlem alıyor? : "Under attack" modu aktifse önce tarayıcı doğrulamasını yapar yani botları ayırır js sayesinde.
Gelelim en can alıcı konuya. Cloudflare bu tarz bir saldırının devamında cloudflare nasıl bir savunma yapıyor???
Cloudflare DDoS saldırılarında şunları yapar.
1-Artık gerçek sunucuya istek göndermez. en son kaydedilmiş ön bellek cache versiyonunu kullanıcıya sunar. DDoS saldırısı olsa bile insanlar siteyi ziyaret edebilir fakat sitenin işlevselliği saldırı boyunca yitirilir. Saldırı bitince ise eski haline geri döner.
2-Eğer ön bellek yoksa 502 gateaway gibi hata ile karşılaşırsınız sitede. Backend'e ulaşmaz saldırı bu konuda savunur siteyi sadece.
3-Az önce bahsettiğim gibi under attack modunu açar. tüm kullanıcılar ilk 5 saniye boyunca loading ekranı görür sonrada botlar siteye ulaşamadan patlar.
Peki cloudflare bunları nasıl yapıyor?
Örnek bir kaç script vermek gerekirse:
Büyük floodlara karşı tamamen işe yaramaz fakat bu scriptin amacı aynı IP'ye sahip bir bot makinasının 5'den fazla istek atmasını engellemek.
ARTIK SİSTEMİ ÇÖZDÜĞÜNÜZE VE ANLADIĞIMIZA GÖRE EN ÖNEMLİ SCRİPT:
Bu python scripti ne?
Arkadaşlar az önce verdiğim script cloudflare mantığı ile çalışıyor en etkili DDoS koruma sistemi. Botlar JS çalıştıramaz. Bu yüzden 5 saniye bekletiyoruz ve bot olup olmadıklarını ayırt ediyoruz. Elbette bu sistem %100 işe yaramaz. %95 gibi iyimser bir rakam var ama sitenize zarar vermez.
Zaman ve dikkatinizi ayırdığınız için teşekkür ederim.
Hatırlatma yapıp bir kaç örnek script verelim.
en basit HTTP get (php) saldırısı scripti
Kod:
<?php
// sadece örnek ha gidip GSM operatorlerine saldırı yapmayın lan zaten çekmiyor
$target = "https://kesinlikleturktelekomdegil.com";
for($i=0; $i<1000; $i++) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
}
?>
Bu scriptte gördüğünüz gibi saniyede 1k get saldırısı atıyoruz. Nasıl saldırı yaptığımızı anladık. Peki atak yaptığımız sitelerin korumaları neler? Nasıl çalışıyor?
Cloudflare nedir?
Cloudflare, internet sitelerini koruyan ve hızlandıran bir web güvenlik ve performans hizmetidir. Bir siteyi Cloudflare'a bağladığında, kullanıcılar önce Cloudflare sunucularına uğrar, ardından senin siteye yönlendirilir. Yani aşama aşama düşünün. Saldırı örnekleri ile savunma türlerine bakalım.
1- HTTP Flood Saldırısı
Basit bir script sürekli GET istekleri gönderir (az önce örnek scriptini bile verdim)Cloudflare bunu fark eder çünkü aynı IP veya çok benzer bot davranışı sergiler yani saniyede 1.000 kere siteyi ziyaret edemezsiniz.
Nasıl önlem alıyor? : Cloudflare, anormal istek sayılarını anlar ve CAPTCHA (robot musun?) sorusu çıkarır. (her zaman çıkarıyor gerçi saldırı olmasada...
2- UDP Flood veya Amplification Attack (botnet,relfektör)
Birçok sahte UDP paketi veya sahte DNS sorgusu gönderirBu saldırılar Cloudflare'a gelmeden engelleniyor. Ağ seviyesinde engeller yani
Nasıl önlem alıyor? : Cloudflare, datacenterlarında milyonlarca paketi filtreleyip çöpe atar (rate limiting, IP reputation falan)
3-WAF (Web Application Firewall) Exploit Koruması
Exploit toolları (mesela SQL injectorleri, XSS scannerlar) Cloudflare olan siteyi taramaya çalışırCloudflarein WAF (Web Application Firewall) sistemi, sıra dışı query'leri tespit eder ve otomatik banlar
Nasıl önlem alıyor? : Bilinen saldırı imzalarına karşı auto rule setleri uygular.
4-Layer 7 Attack - Form gönderimi saldırıları (PHP veya Python ile yapılan POST spamları)
Spam botlar sürekli form doldurup gönderir, sunucu artık dayanamaz hale gelir ve normalde çöker.Cloudflare, bir kullanıcının kısa sürede çok POST isteği gönderdiğini fark edince (yani DDoS yediğini fark edince) onu "challenge" moduna alır.
Nasıl önlem alıyor? : "Under attack" modu aktifse önce tarayıcı doğrulamasını yapar yani botları ayırır js sayesinde.
Gelelim en can alıcı konuya. Cloudflare bu tarz bir saldırının devamında cloudflare nasıl bir savunma yapıyor???
Cloudflare DDoS saldırılarında şunları yapar.
1-Artık gerçek sunucuya istek göndermez. en son kaydedilmiş ön bellek cache versiyonunu kullanıcıya sunar. DDoS saldırısı olsa bile insanlar siteyi ziyaret edebilir fakat sitenin işlevselliği saldırı boyunca yitirilir. Saldırı bitince ise eski haline geri döner.
2-Eğer ön bellek yoksa 502 gateaway gibi hata ile karşılaşırsınız sitede. Backend'e ulaşmaz saldırı bu konuda savunur siteyi sadece.
3-Az önce bahsettiğim gibi under attack modunu açar. tüm kullanıcılar ilk 5 saniye boyunca loading ekranı görür sonrada botlar siteye ulaşamadan patlar.
Peki cloudflare bunları nasıl yapıyor?
Örnek bir kaç script vermek gerekirse:
Kod:
<?php
session_start();
$limit = 5; //limiti 5 olarak belirledik normal şartlarda daha fazla sınırı olmalı ama siz bilirsiniz örnek bir script zaten
$timeWindow = 1; // 1 saniye
if (!isset($_SESSION['requests'])) {
$_SESSION['requests'] = [];
}
$currentTime = time();
$_SESSION['requests'] = array_filter($_SESSION['requests'], function($timestamp) use ($currentTime, $timeWindow) {
return ($timestamp > $currentTime - $timeWindow);
});
if (count($_SESSION['requests']) >= $limit) {
http_response_code(429); // limit aşıldı dedik
die("dur olm gsm operatorümüyüz ayıpsın");
}
$_SESSION['requests'][] = $currentTime;
echo "klasiğimiz Hello world";
?>
Büyük floodlara karşı tamamen işe yaramaz fakat bu scriptin amacı aynı IP'ye sahip bir bot makinasının 5'den fazla istek atmasını engellemek.
ARTIK SİSTEMİ ÇÖZDÜĞÜNÜZE VE ANLADIĞIMIZA GÖRE EN ÖNEMLİ SCRİPT:
Kod:
from flask import Flask, request, make_response
import time
import random
app = Flask(__name__)
challenge_passed = {}
@app.route('/')
def index():
ip = request.remote_addr
if ip not in challenge_passed:
token = random.randint(100000, 999999)
resp = make_response(f"""
<html><body>
<script>
setTimeout(function() {{
window.location = '/verify?token={token}';
}}, 5000);
</script>
yakışıklı güvenlik iş başında, robotmusun yoksa?
</body></html>
""")
challenge_passed[ip] = token
return resp
return "Gerçek kullanıcı olduğunun kanıtı"
@app.route('/verify')
def verify():
ip = request.remote_addr
token = request.args.get('token')
if challenge_passed.get(ip) == int(token):
return "Gerçek kullanıcı olduğunun kanıtı"
else:
return "Özel güvenlik ####. Benimle odama kadar gelmeniz gerekiyor. QFNMQWEŞFMQEFGQEMG"
if __name__ == '__main__':
app.run()
Bu python scripti ne?
Arkadaşlar az önce verdiğim script cloudflare mantığı ile çalışıyor en etkili DDoS koruma sistemi. Botlar JS çalıştıramaz. Bu yüzden 5 saniye bekletiyoruz ve bot olup olmadıklarını ayırt ediyoruz. Elbette bu sistem %100 işe yaramaz. %95 gibi iyimser bir rakam var ama sitenize zarar vermez.
Zaman ve dikkatinizi ayırdığınız için teşekkür ederim.



