

Ddos Saldırısı Nasıl Engellenir?
-
Ddos çok L4 L7 bant saldırısı javascript saldırısı birçok çeşidi var sana gelen saldırı loglarından bakarak filitre yapman gerek tek bir çözümü yok
-
hocam domaini söylemen mümkün mü özelden falan? Cf nası atlmaışlar bakayım bi belki bi şey çıkar, haleldersiniz.
-
load balansı ayarlaman gerekiyor ilk yapman gerek bir cache eklentisi ile load düşürmeyi dene eger sunucundan apache litespeed kullanıyorsan nginx kullanmanı şiddet ile tavsiye ederim
sunucuna nginx kurduktan sonra cloudflareden free versiyon kullanıyorsan orayı sadece dns servis olarak kullanıp pause moduna geçirip bütün trafiği nginx bırakıcak load balansı tekrar kontrol edicek yüksek miktarda get post saldırı alıyorsun diyelim
bağlantıları limitleme
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s; server { location / { limit_req zone=mylimit burst=20 nodelay; } }
istekleri sınırla
limit_conn_zone $binary_remote_addr zone=addr:10m; server { location / { limit_conn addr 10; } }
sunucu ip loglarına bakıp access loglarından en çok istek atan ipleri banla
Nginx access.log dosyasını analiz edip, 100'den fazla istek yapan IP adreslerini otomatik olarak yasaklamak için bir bash scripti hazırlayabilirim:
#!/bin/bash # Access log dosyasının yolu ACCESS_LOG="/var/log/nginx/access.log" # Geçici dosyalar TEMP_IP_COUNT="/tmp/ip_counts.txt" BANNED_IPS="/etc/nginx/blocked_ips.conf" # IP adresleri sayma awk '{print $1}' "$ACCESS_LOG" | sort | uniq -c | sort -rn > "$TEMP_IP_COUNT" # 100'den fazla istek yapan IP'leri bulma ve engelleme while read -r count ip; do if [ "$count" -gt 100 ]; then echo "blocking IP: $ip (requests: $count)" # Nginx engelleme kuralı ekleme echo "deny $ip;" >> "$BANNED_IPS" fi done < "$TEMP_IP_COUNT" # Nginx'i yeniden yükle nginx -s reload # Geçici dosyaları temizle rm "$TEMP_IP_COUNT" -
100 den fazla istek yapan ipleri iptables ile banla ban.sh diye kaydet
#!/bin/bash # Access log dosyasının yolu ACCESS_LOG="/var/log/nginx/access.log" # Geçici dosyalar TEMP_IP_COUNT="/tmp/ip_counts.txt" BLOCKED_IPS_FILE="/root/blocked_ips.txt" # IP adresleri sayma ve sıralama awk '{print $1}' "$ACCESS_LOG" | sort | uniq -c | sort -rn > "$TEMP_IP_COUNT" # Blok sayacı BLOCKED_COUNT=0 # 100'den fazla istek yapan IP'leri bulma ve engelleme while read -r count ip; do if [ "$count" -gt 100 ]; then # IP'yi iptables ile engelleme iptables -A INPUT -s "$ip" -j DROP iptables -A OUTPUT -d "$ip" -j DROP # IP'yi dosyaya kaydetme echo "$ip" >> "$BLOCKED_IPS_FILE" echo "Blocked IP: $ip (requests: $count)" # Blok sayacını artırma ((BLOCKED_COUNT++)) fi done < "$TEMP_IP_COUNT" # Sonuçları raporlama echo "Toplam $BLOCKED_COUNT IP adresi engellendi." # Geçici dosyaları temizleme rm "$TEMP_IP_COUNT" # iptables kurallarını kalıcı hale getirme service iptables save -
-
EcHoLL bunu yazdı
100 den fazla istek yapan ipleri iptables ile banla ban.sh diye kaydet
#!/bin/bash # Access log dosyasının yolu ACCESS_LOG="/var/log/nginx/access.log" # Geçici dosyalar TEMP_IP_COUNT="/tmp/ip_counts.txt" BLOCKED_IPS_FILE="/root/blocked_ips.txt" # IP adresleri sayma ve sıralama awk '{print $1}' "$ACCESS_LOG" | sort | uniq -c | sort -rn > "$TEMP_IP_COUNT" # Blok sayacı BLOCKED_COUNT=0 # 100'den fazla istek yapan IP'leri bulma ve engelleme while read -r count ip; do if [ "$count" -gt 100 ]; then # IP'yi iptables ile engelleme iptables -A INPUT -s "$ip" -j DROP iptables -A OUTPUT -d "$ip" -j DROP # IP'yi dosyaya kaydetme echo "$ip" >> "$BLOCKED_IPS_FILE" echo "Blocked IP: $ip (requests: $count)" # Blok sayacını artırma ((BLOCKED_COUNT++)) fi done < "$TEMP_IP_COUNT" # Sonuçları raporlama echo "Toplam $BLOCKED_COUNT IP adresi engellendi." # Geçici dosyaları temizleme rm "$TEMP_IP_COUNT" # iptables kurallarını kalıcı hale getirme service iptables saveHocam çok teşekkür ederim, yönlendirmelerin ve tavsiyelerin için.
-
O kadar istek oluyorsa script ya da sunucu da bir sıkıntı var.
-
EcHoLL eline saglik hoca
-
EcHoLL bunu yazdı
100 den fazla istek yapan ipleri iptables ile banla ban.sh diye kaydet
#!/bin/bash # Access log dosyasının yolu ACCESS_LOG="/var/log/nginx/access.log" # Geçici dosyalar TEMP_IP_COUNT="/tmp/ip_counts.txt" BLOCKED_IPS_FILE="/root/blocked_ips.txt" # IP adresleri sayma ve sıralama awk '{print $1}' "$ACCESS_LOG" | sort | uniq -c | sort -rn > "$TEMP_IP_COUNT" # Blok sayacı BLOCKED_COUNT=0 # 100'den fazla istek yapan IP'leri bulma ve engelleme while read -r count ip; do if [ "$count" -gt 100 ]; then # IP'yi iptables ile engelleme iptables -A INPUT -s "$ip" -j DROP iptables -A OUTPUT -d "$ip" -j DROP # IP'yi dosyaya kaydetme echo "$ip" >> "$BLOCKED_IPS_FILE" echo "Blocked IP: $ip (requests: $count)" # Blok sayacını artırma ((BLOCKED_COUNT++)) fi done < "$TEMP_IP_COUNT" # Sonuçları raporlama echo "Toplam $BLOCKED_COUNT IP adresi engellendi." # Geçici dosyaları temizleme rm "$TEMP_IP_COUNT" # iptables kurallarını kalıcı hale getirme service iptables saveEski toprakkk. Mesajını görüce 10 sene önce müşterinin webloader (ki echoll iyi bilir bu scripti ) yediği saldırılar geldi aklımaa piiuuhh....
Fakat saldırı tipi boyutu katmanı bilmeden tüm konuşmalar yapılan işler afaki. Saldırı nereye geliyor ne boyutta geliyor bunları bilmeden sadece bu bash işi çözebileceği gibi sadece bu bash bile sunucuya ekstra yük bindirebilir saldırı anında servis ekstra sorgu yapıp 100 den fazla request çekeni listeleyip iptables atması bile ekstra yük olabilir makina daha hızlı düşer.(konunun başında plesk ülke engellemesine rağmen makina down oluyor dediğinden yola çıkarak) Log olmadan saldırı tipi analizi detayı bilmeden senaryo oluşturmak yazı tura olur.
trooper tarafından 19/Ara/24 22:46 tarihinde düzenlenmiştir -
büyük ihitmal ile L7 saldırısı yiyor hazır script ipsnoof etmeye çinliler izin veriyor 100 istek sunucuyu yorarsa oradaki istek sayısıyı 1000 e çıkar.
trooper webloader zamanı google daha iyi bir kızdı şimdi fahişe oldu nerede o hitler :)