Port Taraması Tespitini Net Kurun: Log, Fail2ban ve Alarm
Port taraması tespiti için uygulanabilir log kaynakları, fail2ban ve firewall kurallarıyla net bir izleme planı: hangi alarm ne zaman çalışır?
Sunucuya yapılan port taramaları (port scan), saldırganların sistem zayıflıklarını yokladığı ilk adımlardan biridir. Sorun, tek bir başarısız denemeyi “normal trafik” sanmak; oysa belirli IP davranışları tekrarlandığında ciddi risk oluşur. Bu rehberde, Linux tabanlı sunucularda port taramasını tespit edilebilir hale getirmek için hangi log’ların izleneceğini, nasıl otomatik engelleme yapılacağını ve hangi metriklerin alarm sayılacağını net şekilde anlatıyorum.
Aşağıdaki plan, hem küçük VPS’lerde hem de daha büyük VDS/dedicated altyapılarda uygulanır. Hedef; “şu anda tarama var mı yok mu?” sorusunu dakikalar içinde yanıtlamak ve tekrarlayan tarayıcıları otomatik durdurmaktır.
Port taraması neyi tetikler? (Net işaretler)
Port taraması; bir kullanıcının çok sayıda portu kısa sürede denemesi ya da belirli port aralıklarını sistematik keşfetmesidir. Linux tarafında bu genellikle şu davranışlarla görünür:
- Çok sayıda bağlantı denemesi (SYN) ve/veya kısa süre içinde çok sayıda başarısız oturum
- Aynı IP’den gelen isteklerin farklı portlara dağılması
- Hedefin işletim sistemi ve servislerine göre farklı “yanıt paterni” (RST/ICMP/timeout)
- SSH ve web (80/443) gibi servisler dışında rastgele port denemeleri
Bu işaretler çoğu zaman tek başına anlamlı değildir; kritik olan, tekrar ve hız kombinasyonudur. Bu yüzden tespit mekanizması zaman penceresi (ör. 10 dk) + eşik (ör. 50 deneme) mantığıyla çalışmalıdır.
Hızlı ayrım: tarama mı, normal tarama mı?
Aşağıdaki durumlar çoğu zaman “port scan” değildir: - Tek bir kullanıcıdan gelen birkaç deneme - Uygulama seviyesinde hatalı kimlik (ör. SSH yanlış şifre) ama portlar sabit kalıyor - Aynı IP’den sadece 80/443 trafiği geliyor ve trafik URL/kimlik bilgisine bağlı
“Tarama” dediğimizde beklediğimiz şey: kısa sürede çok port denemesi veya çok sayıda servis denemesi.
Hangi log kaynakları port taramasını yakalar?
Port taramasını tespit etmek için tek bir log dosyasına güvenmek yerine, en az iki kaynağı birlikte değerlendirmek gerekir. Linux’ta tipik olarak şunlar izlenir:
1) Kernel firewall logları (ufw/iptables/nftables)
Sunucu üzerinde aktif bir firewall varsa, engellenen/izin verilen paketler loglanır. Yaygın senaryolar:
- ufw: /var/log/ufw.log
- iptables/nftables: özelleştirilmiş chain logları (çoğu zaman syslog/journal)
Örnek (sadece mantık): - Aynı kaynak IP’den farklı hedef portlara “DROP/REJECT” kayıtlarının gelmesi
2) SSH logları (özellikle 22/SSH)
SSH taraması çoğu zaman şifre denemesi (brute force) gibi görünür; fakat tarama ile brute force beraber görülebilir.
- Ubuntu/Debian: /var/log/auth.log
- CentOS/RHEL: /var/log/secure
Eş zamanlı olarak şu tür kayıtlar önemlidir: - Aynı IP’den çok sayıda farklı port yerine, sadece 22 üzerinde sık deneme (brute force) - Çok farklı portlar + kısa aralıklarla bağlantı denemesi (scan)
3) Web sunucusu logları (Nginx/Apache)
Web logları port taramasını tek başına kanıtlamaz; ama 80/443 dışındaki port denemeleri web loglarında görünmez. Buna rağmen şunlar taramaya işaret edebilir:
- URL pattern’i rastgele (ör. /phpmyadmin/, /wp-admin/ gibi) ama bu artık “vulnerability probing” kategorisine de girebilir
4) Sistem genel ağ kayıtları
Şunlar yardımcıdır:
- journalctl ile kernel mesajları
- fail2ban logları (aşağıda kurulum var)
Net tespit için iki katmanlı yaklaşım: Log + otomatik engelleme
En güvenilir kurgu şudur: 1) Logdan taramayı yakala (kural/eşik) 2) Aynı IP tarama davranışına devam ederse otomatik engelle
Bu yaklaşım “tespit + aksiyon” sağlar.
Katman A: fail2ban ile otomatik tespit ve ban
fail2ban (log-based intrusion prevention) belirli log kalıplarına göre IP’leri geçici veya kalıcı banlar.
Net adım 1: Paket kurulumu
Debian/Ubuntu için:
- sudo apt update
- sudo apt install -y fail2ban
RHEL/CentOS için:
- sudo yum install -y fail2ban (dağıtıma göre dnf/yum)
Net adım 2: Jail dosyasını oluştur
Önerilen yapı:
- /etc/fail2ban/jail.d/local-portscan.conf
Aşağıdaki örnek, “çoklu port denemesi” gibi kalıpları engellemeyi hedefler. Not: Log formatı firewall’a göre değişir; önce log formatını gözlemlemek gerekir.
Örnek yapı (mantığı anlatan şablon):
- backend = systemd veya auto
- enabled = true
- maxretry (eşik)
- findtime (zaman penceresi)
- bantime (ban süresi)
Örnek bir kısım (değerleri loguna göre ayarla):
[portscan]
enabled = true
filter = portscan
action = ufw
logpath = /var/log/ufw.log
maxretry = 20
findtime = 600
bantime = 3600
Kritik nokta:
logpathvefiltertanımı sunucundaki log formatına birebir uymalıdır.
Net adım 3: Firewall aksiyonunu doğru seç
Aksiyon olarak ufw, iptables, nftables veya cloud sağlayıcı banları kullanılabilir. Önemli olan şu parametreler: - Ban, sadece tarama IP’sini hedeflemeli - Ban sonrası log devam etmeli (izleme)
Katman B: Firewall’da rate limit + port bazlı koruma
fail2ban tek başına yeterli değildir; özellikle tarama çok yaygın başladığında firewall seviyesinde rate limiting belirgin fark yaratır.
Net yaklaşım: - SSH için deneme sayısını sınırlayın - Web için sadece gerekli servisleri açın - Kullanılmayan portları kapatın (close)
Tercih edilen güvenlik matrisi
Aşağıdaki tabloda “ne zaman neyi kapat/limitle” net bir çerçeve bulacaksın:
| Hedef servis | Tipik port | Eşik mantığı | Net öneri |
|---|---|---|---|
| SSH (uzaktan yönetim) | 22 | Brute force + scan kombinasyonu | Sadece kendi IP’lerin veya VPN subneti; yoksa fail2ban + rate limit |
| Yönetim panelleri | 8000-9000 | Rastgele keşif çok olur | Panel portunu internet yerine VPN arkasına alın |
| Web | 80/443 | Botlar sık gelir | WAF/CDN kullan, firewall’da temel rate limit bırak |
| Veritabanı | 3306/5432 | İnternet kapalı olmalı | Mutlaka private ağ + security group/firewall |
| Diğer servisler | değişken | Scan hedefi olur | “Need-to-know”: yalnızca kullanıyorsan açık tut |
Tespit eşiğini doğru kurun: “Kaç deneme tarama sayılır?”
Port taramasında kritik parametreler: - findtime (ör. 600 saniye / 10 dk) - maxretry (ör. 20-50) - bantime (ör. 3600 saniye / 1 saat)
Tek doğru değer yok; sunucunun servisleri ve trafik profili belirler. Net bir pratik yöntem:
1) İlk 3-7 gün sadece logları izleyin, ban açmadan “kaç kez tekrar ediyor” sayın. 2) 95. persentil (sonuçların büyük kısmını normal trafik oluşturuyorsa) ile saldırı davranışını ayırın. 3) maxretry’yi normal trafiğin üstüne, saldırı trafiğinin altına koyun.
Net ölçüm: aynı IP kaç port deniyor?
Sadece “kaç bağlantı” değil, “kaç farklı port” sayısı taramayı daha net gösterir.
Bunu incelemek için pratik bir yaklaşım: - Firewall loglarından kaynak IP’yi çıkar - O IP’nin aynı zaman penceresinde hedef port çeşitliliğini hesapla
Eğer IP bir dakikada 10+ farklı port deniyorsa bu tarama olma ihtimali yüksektir.
Logdan tarama tespitini rapora dönüştürün (izleme planı)
Aksiyon; sadece banlamak değil, tekrar eden davranışları raporlamaktır. Aşağıdaki metrikler her hafta kontrol edilmelidir.
Kontrol panelinde aradığın 6 metrik
- En çok banlanan kaynak IP sayısı
- Son 24 saatte tarama benzeri deneme sayısı
- Port çeşitliliği: “tek IP kaç farklı port denedi?”
- SSH için: başarısız giriş sayısı + IP bazlı tekrarlama
- 80/443 dışındaki kapalı port denemeleri (beklenenin üzerinde ise scan artmış demektir)
- Ban sonrası tekrar davranış (bantime bitince tekrar deniyor mu?)
Pratik rapor tablosu (kopyala-uyarla)
Aşağıdaki tabloyu kendi log analizine göre doldurun:
| Tarih | Kaynak IP | Port çeşitliliği | İlk tespit zamanı | Aksiyon | Not |
|---|---|---|---|---|---|
| 2026-07-26 | 1.2.3.4 | 18 | 10:42 | Ban (1 saat) | Panel portları tarandı |
| 2026-07-26 | 5.6.7.8 | 6 | 11:05 | Ban (10 dk) | SSH brute+scan |
Net incident (olay) süreci: tarama başladıysa ne yapmalısın?
Port taraması algılandığında hedef “panik değil, düzenli doğrulama” olmalıdır.
1) Anlık doğrulama
- Logta hangi kaynak IP/ülke/ASN tekrar ediyor?
- Tarama hangi portlara odaklanıyor? (22, 21, 23, 3389, 3306 gibi)
- Aynı IP kısa süre içinde mi çok port deniyor, yoksa sadece tek portta mı sık deniyor?
2) Aksiyon
- fail2ban ile ilgili jail’i aktif et
- Firewall rate limit uygula
- Kullanmadığın portları kapat
- SSH’yi mümkünse sadece VPN’den erişilebilir yap
3) Son kontrol: servis gerçekten güvenli mi?
Tarama tek başına “saldırı oldu” demek değildir. Ama şu kontrolleri net yap: - İnternet’e açık yönetim arayüzü var mı? - Kullanılmayan servisler çalışıyor mu? - Şifre politikası güçlü mü (SSH anahtar + parola kapatma gibi)?
Ortak hatalar: tespit sistemini boşa çıkaran şeyler
- Log kaynağı yanlış:
logpathgerçekte log üretmiyorsa fail2ban hiçbir şey banlamaz. - Eşik çok düşük: Normal kullanıcı davranışını banlarsın (özellikle bot trafiği az olmayan web sitelerinde).
- Tek katman: Sadece log izleyip aksiyon alamazsan saldırganların denemesi sürer.
- Sadece SSH’ye odak: Tarama sadece 22’ye gelmez; rastgele port keşfi ve servis sızdırma denemeleri görülür.
Sonuç: 30 dakikada çalışır bir tespit kurun
Port taramasını tespit etmek için tek hedef “uyarı almak” değil, uyarıdan kontrollü aksiyona geçmektir. Yapılacak net aksiyon sırası:
1) Firewall loglarını (ufw/iptables/nftables) doğrula ve logpath’i kesinleştir. 2) fail2ban ile en az bir jail’i tarama benzeri davranışa göre devreye al. 3) SSH ve kullanılmayan portlar için internet erişimini daralt; rate limit ekle. 4) 3-7 gün logları inceleyip maxretry/findtime değerlerini trafiğine göre kalibre et.
Bu planı uygularsan “taramayı görüyor musun?” sorusuna günler değil, dakikalar içinde yanıt verirsin ve tekrar eden kaynakları otomatik durdurursun.
Hosting karşılaştırması yapmaya hazır mısın?
100+ firmanın fiyatlarını tek tıkla karşılaştır, en uygun paketi bul.
Hosting Karşılaştır →İlgili Yazılar
WordPress’te HTTP/2 ve HTTP/3 desteği nasıl açılır?
WordPress’te HTTP/2 ve HTTP/3’ü adım adım etkinleştirin. Nginx/Apache ayarları, Cloudflare kullanımı ve test yöntemleriyle net kontrol rehberi.
Core Web Vitals ve hosting: LCP, CLS, INP’yi hızlandırma
LCP, CLS ve INP’nin hosting ile nasıl etkilendiğini öğrenin. Ölçüm araçlarını, sunucu ayarlarını ve somut kontrol listesini görün.
Node.js VDS Yapılandırması: Performans, güvenlik ve yedekleme
Node.js uygulaması için VDS kurulumunda Nginx, PM2, TLS, cache, log ve yedekleme planını net bir yapı ile öğrenin.
Hosting fiyatlarında KDV ve gizli maliyetler: Net kontrol rehberi
Hosting faturasında KDV ve gizli kalemler nasıl çıkar? Fiyat teklifi ile gerçekte ödenecek tutarı karşılaştırmanı sağlayan net kontrol listesi.
