Blog Yazısı

← Tüm Blog Yazılarına Dön
Siber Güvenlik & Sistem Yönetimi • 28 Ekim 2026 • 6 dk okuma

Gece Gelen Saldırı Alarmı: Fail2ban, Nginx Kalkanı ve Telegram Nöbetçi Botu ile Sunucumu Nasıl Savundum?

Gece yarısı Telegram botumdan gelen 490 bağlantılık DDoS uyarısıyla başlayan dedektiflik hikayesi: Eski kiracının 'hayalet trafiğini' tcpdump ile yakalamak, Nginx HTTP 444 ile parazitleri sıfır kaynakla düşürmek ve Fail2ban savunması.

Dün gece yatağımda derin bir uykudayken saat 04:42 ve ardından 04:58 sularında telefonumun Telegram bildirim sesiyle uyandım. Ekran okuyucum bildirimleri okumaya başladığında durumun ciddiyeti anlaşıldı: '⚠️ DİKKAT: Yüksek Trafik / Olası DDoS Uyarısı! Anormal sayıda eşzamanlı web bağlantısı tespit edildi (490 bağlantı). Durum: Nginx Rate-Limiting ve Fail2ban devrede.' Bir sistem yöneticisi ve yazılımcı için gece yarısı gelen bu alarm, uykuyu saniyeler içinde dağıtan adrenalin dolu bir teknik operasyonun başladığı andır.

Bu alarmın arkasında, önceki gün sunucuma bizzat yazdığım nöbetçi bir kabuk betiği (baver_ddos_monitor) yatıyordu. Bu otomasyon her 2 dakikada bir sunucunun CPU yükünü ve aktif HTTP/HTTPS soketlerini sayıyor; eşzamanlı bağlantı sayısı 250 sınırını aştığı anda Telegram Bot API üzerinden doğrudan cebime ayrıntılı bir durum raporu gönderiyordu. Sistem tam olarak tasarladığım gibi çalışmış, anormal bir dalgalanma anında beni saniyesinde haberdar etmişti.

Hemen klavyemin başına geçip SSH terminaline bağlandım. İlk baktığım değer sistem yükü (Load Average) oldu; yük 0.26 ile 1.23 arasındaydı, yani sunucu kesinlikle çökmemişti fakat 80 numaralı web portunda yüzlerce açık soket birikmişti. Hemen tcpdump paket analizörünü çalıştırarak sunucuma gelen ham HTTP isteklerini havada yakaladım. Karşıma çıkan tablo siber güvenlik dünyası için harika bir ders niteliğindeydi: İstekler benim siteme değil, 'Host: 2q.tiaotiaohuyouxi.com' adında Çin menşeili bir oyun/websocket adresine yönelikti! Hosting firmamın bana tahsis ettiği IP adresi daha önce bu site tarafından kullanılmış ve sitenin yöneticisi Cloudflare DNS kayıtlarını silmediği için Çin'deki yüzlerce istemcinin bağlantısı eski IP olan benim sunucuma akıyordu.

Bu yabancı 'hayalet trafiğin' sunucumun Apache süreçlerini ve RAM'ini tüketmesine izin veremezdim. Çözüm için Nginx'in en önüne özel bir Web Shield kuralı (/etc/nginx/conf.d/00_block_bad_hosts.conf) yerleştirdim. Bu kural ile yabancı host isimleriyle veya doğrudan IP üzerinden gelen bu parazit istekleri ne Apache'ye ilettim ne de 404 sayfalarıyla meşgul ettim. Nginx'in efsanevi 'HTTP 444 (No Response)' direktifini devreye aldım. 444 kodu, gelen TCP bağlantısını tek bir bayt yanıt göndermeden milisaniyede kapatır. Kuralı devreye aldığım anda 490 olan bağlantı sayısı saniyeler içinde '0'a düştü ve sistem yükü 0.04 seviyesine geriledi.

Savunmanın diğer cephesinde ise SSH portuma şifre denemesi yapan brute-force botları vardı. Fail2ban'i Telegram bildirim betiğime bağlayarak, banlanan her saldırgan IP'nin coğrafi konumunu ve internet servis sağlayıcısını otomatik sorgulayıp cebime raporlayan bir kalkan kurdum. Bu geceki tecrübeden çıkardığım en büyük ders şudur: İyi bir yazılımcı sadece kod yazan değil; yazdığı kodun çalıştığı sunucunun her nefes alışını izleyen, alarm sistemlerini kuran ve kriz anında soğukkanlılıkla kalkanını kaldıran kişidir. Güvenli kodlamalar!

← Diğer Yazılar Fikirlerini Paylaş →