Sunucunuzu internete açtığınız andan itibaren port tarama saldırıları kaçınılmaz bir gerçek haline gelir. Kötü niyetli kişiler, sisteminizdeki açık portları, çalışan servisleri ve potansiyel zafiyetleri tespit etmek için sürekli tarama yapar. CSF (ConfigServer Security & Firewall), bu tür saldırılara karşı son derece etkili mekanizmalar sunar. Bu yazıda CSF’nin port tarama koruma özelliklerini derinlemesine inceleyeceğiz ve gerçek dünya senaryolarıyla nasıl yapılandırılacağını göstereceğiz.
Port Tarama Saldırıları Nedir ve Neden Tehlikelidir?
Port tarama, bir saldırganın hedef sistemde hangi portların açık olduğunu, hangi servislerin çalıştığını ve bu servislerin hangi versiyonlarda olduğunu öğrenmek için kullandığı keşif tekniğidir. Nmap, Masscan gibi araçlarla gerçekleştirilen bu taramalar, genellikle bir saldırının ilk adımıdır.
Bir port taraması şu bilgileri açığa çıkarabilir:
- Açık SSH portları ve versiyonu
- Web sunucu yazılımı ve sürümü
- Veritabanı portları
- Panel ve yönetim arayüzleri
- Bilinen zafiyetleri olan servis versiyonları
CSF’nin PORTFLOOD, CT_LIMIT, LF_TRIGGER ve özellikle SYNFLOOD gibi parametreleri bu tehditlere karşı güçlü bir savunma hattı oluşturur.
CSF’nin Port Tarama Tespit Mekanizması
CSF, port taramalarını tespit etmek için birkaç farklı yöntem kullanır. Bunların en önemlisi Port Knocking ve PORTFLOOD mekanizmasıdır. Ancak asıl güç, CSF’nin iptables ile entegrasyonundan gelir.
PORTFLOOD Parametresi
PORTFLOOD, belirli bir port üzerinde belirli bir sürede belirli sayıdan fazla bağlantı geldiğinde otomatik engelleme yapan parametredir. Yapılandırma şu şekildedir:
# /etc/csf/csf.conf dosyasini acin
nano /etc/csf/csf.conf
# PORTFLOOD parametresini bulun ve duzenleyin
PORTFLOOD = "22;tcp;5;30,80;tcp;20;5,443;tcp;20;5"
Bu yapılandırma şunu ifade eder:
- 22;tcp;5;30: SSH portuna 30 saniye içinde 5’ten fazla TCP bağlantısı gelirse engelle
- 80;tcp;20;5: HTTP portuna 5 saniye içinde 20’den fazla bağlantı gelirse engelle
- 443;tcp;20;5: HTTPS portuna 5 saniye içinde 20’den fazla bağlantı gelirse engelle
SYN Flood Koruması
Port taramacılar çoğunlukla SYN paketleri gönderir. CSF’nin SYNFLOOD koruması bu durumu ele alır:
# csf.conf icinde asagidaki parametreleri ayarlayin
SYNFLOOD = "1"
SYNFLOOD_RATE = "100/s"
SYNFLOOD_BURST = "150"
SYNFLOOD: 1 değeri ile aktif edilir SYNFLOOD_RATE: Saniyede izin verilen SYN paketi sayısı SYNFLOOD_BURST: Ani trafik artışlarında izin verilen maksimum paket sayısı
Değişiklikleri uygulamak için:
csf -r
Gerçek Dünya Senaryosu: Nmap Taramasına Karşı Koruma
Diyelim ki bir VPS sunucunuz var ve sürekli Nmap taramalarına maruz kalıyorsunuz. Log dosyalarını incelediğinizde şunu görüyorsunuz:
# /var/log/lfd.log dosyasini kontrol edin
tail -f /var/log/lfd.log | grep -i "port scan"
Tipik bir çıktı şöyle görünür:
Mar 15 14:23:41 sunucu lfd[12453]: Port Scan detected from 192.168.1.100 (TR/Turkey/-): 25 hits in 3 seconds
Mar 15 14:23:41 sunucu lfd[12453]: Blocked in csf for 3600 seconds [LF_TRIGGER]
Bu sorunu çözmek için aşağıdaki yapılandırmayı kullanabilirsiniz:
# Port tarama tespiti icin csf.conf ayarlari
PS_INTERVAL = "300"
PS_LIMIT = "10"
PS_BLOCK_TIME = "3600"
PS_EMAIL_ALERT = "1"
PS_INTERVAL: Port taramalarının izlendiği süre (saniye cinsinden, burada 5 dakika) PS_LIMIT: Bu süre içinde tetikleme için gereken bağlantı sayısı PS_BLOCK_TIME: Engelleme süresi saniye cinsinden (3600 = 1 saat) PS_EMAIL_ALERT: Tespit edildiğinde e-posta bildirimi gönder
Port Tarama Tespitini Test Etme
Kendi sunucunuzu test etmek için (sadece kendi sunucunuzda yapın):
# Baska bir makineden veya localhost'tan test
# Once test IP'nizi whitelist'e ekleyin
csf -a 192.168.1.50 "Test makinesi - gecici"
# Test sonrasi kaldirin
csf -ar 192.168.1.50
LF_TRIGGER ile Gelismis Koruma
LF_TRIGGER, CSF’nin en güçlü port tarama tespit araçlarından biridir. Birden fazla porta yapılan başarısız bağlantı denemelerini izler ve belirli bir eşik aşıldığında otomatik engelleme uygular.
# csf.conf icinde LF_TRIGGER ayarlari
LF_TRIGGER = "1"
LF_TRIGGER_PERM = "0"
LF_TRIGGER_BLOCK = "3600"
LF_TRIGGER: 1 ile etkinleştirir LF_TRIGGER_PERM: 1 yaparsanız kalıcı engeller, 0 geçici engel uygular LF_TRIGGER_BLOCK: Engelleme süresi saniye cinsinden
Bu ayarları aktif etmek için iptables kurallarını yenileyin:
# CSF'yi yeniden baslatin
systemctl restart csf
systemctl restart lfd
# Aktif engelleri kontrol edin
csf -l
Port Knocking ile Gizli Kapı Oluşturma
Port Knocking, belirli portlara belirli sırayla paket göndererek gizli bir “kapı açma” mekanizması oluşturur. Bu yöntemle SSH portunu tamamen gizleyebilirsiniz.
CSF ile port knocking aktif etmek için:
# csf.conf icinde port knocking ayarlari
PORTKNOCKING = "1"
PORTKNOCKING_TIMEOUT = "20"
PORTKNOCKING_ALERT = "1"
Ardından hangi portlara hangi sırayla knock yapılacağını tanımlayın. /etc/csf/csf.knock dosyasını oluşturun veya düzenleyin:
# /etc/csf/csf.knock ornegi
# Kural formati: protokol;port;izin_suresi;acilacak_port
# Once 1234'e, sonra 5678'e, sonra 9012'ye knock yap
# Dogru sirayla knock yapilirsa 22 numarali port 30 saniye acilir
nano /etc/csf/csf.knock
Dosya içeriği örneği:
tcp;1234;20;0
tcp;5678;20;0
tcp;9012;20;22:tcp
Bu yapılandırmada:
- Önce TCP 1234 portuna bağlantı dene
- Sonra TCP 5678 portuna bağlantı dene
- Son olarak TCP 9012 portuna bağlantı dene
- 20 saniye içinde doğru sıra tamamlanırsa SSH portu açılır
Knockd ile test etmek için istemci tarafında:
# knock komutu ile test
knock -v sunucu_ip 1234 5678 9012
# Ardindan SSH ile baglanin
ssh -p 22 kullanici@sunucu_ip
CT_LIMIT ile Eşzamanlı Bağlantı Sınırlama
CT_LIMIT, tek bir IP’den gelen eşzamanlı bağlantı sayısını sınırlar. Bu özellik özellikle port tarayıcılarının aynı anda birden fazla porta bağlantı açma davranışını engeller.
# csf.conf icinde CT ayarlari
CT_LIMIT = "100"
CT_INTERVAL = "30"
CT_BLOCK_TIME = "1800"
CT_COUNT_TIME = "60"
CT_PERMANENT = "0"
CT_EMAIL_ALERT = "1"
CT_SKIP_HTTP = "1"
CT_SKIP_TIME_WAIT = "1"
CT_LIMIT: Bir IP’den izin verilen maksimum eşzamanlı bağlantı sayısı CT_INTERVAL: Kontrol aralığı saniye cinsinden CT_BLOCK_TIME: Eşik aşıldığında engelleme süresi (saniye) CT_COUNT_TIME: Bağlantı sayımının yapıldığı zaman penceresi CT_PERMANENT: 1 yapılırsa kalıcı engelleme uygulanır CT_EMAIL_ALERT: E-posta bildirimi gönder CT_SKIP_HTTP: HTTP bağlantılarını saymayı atla (yüksek trafikli siteler için) CT_SKIP_TIME_WAIT: TIME_WAIT durumundaki bağlantıları sayma
Whitelist ve Ignore Listelerinin Doğru Yönetimi
Port tarama koruması uygularken kendi IP adreslerinizi veya güvendiğiniz sistemlerin IP’lerini whitelist’e eklemeyi unutmayın. Aksi halde yönetim işlemleri sırasında kendinizi kilitleyebilirsiniz.
# Tek bir IP eklemek icin
csf -a 203.0.113.10 "Ofis IP adresi"
# Bir IP araligini eklemek icin
csf -a 203.0.113.0/24 "Ofis alt agi"
# Whitelist'i kontrol etmek icin
cat /etc/csf/csf.allow
# Bir IP'yi whitelist'ten kaldirmak icin
csf -ar 203.0.113.10
Whitelist dışında, bazı IP’lerin yalnızca loglara kaydedilmesini ama engellenmemesini isteyebilirsiniz. Bunun için csf.ignore dosyasını kullanın:
# /etc/csf/csf.ignore dosyasini duzenle
nano /etc/csf/csf.ignore
# Monitoring sunucularini ekleyin
# Bu IP'ler tarama yapar gibi gorunse de engellenmez
203.0.113.100 # Monitoring sunucusu
10.0.0.0/8 # Internal network
SMTP_BLOCK ile E-posta Port Koruması
Özellikle e-posta sunucularında SMTP portlarına yönelik taramalar oldukça yaygındır. Spam botlar sürekli 25, 465, 587 portlarını tarar.
# csf.conf icinde SMTP ayarlari
SMTP_BLOCK = "1"
SMTP_ALLOWLOCAL = "1"
SMTP_ALLOW = "25,465,587"
SMTP_BLOCK: SMTP bağlantılarını root, exim ve mailman dışında engeller SMTP_ALLOWLOCAL: Yerel bağlantılara izin ver SMTP_ALLOW: İzin verilen SMTP portları
Bu ayar aktif edildiğinde, kötü niyetli scriptlerin doğrudan SMTP bağlantısı açması engellenir.
Log Analizi ve Saldırı Tespiti
Gerçek dünya senaryolarında log analizi hayati önem taşır. Hangi IP’lerin sizi taradığını görmek için:
# Son 100 port tarama tespitini goster
grep "Port Scan" /var/log/lfd.log | tail -100
# En cok tarama yapan IP'leri listele
grep "Port Scan" /var/log/lfd.log | awk '{print $8}' | sort | uniq -c | sort -rn | head -20
# Suanki engelli IP listesini goster
csf -l | head -50
# Spesifik bir IP hakkinda bilgi al
csf -g 192.168.1.100
Engelli IP listesini düzenli analiz etmek için basit bir script yazabilirsiniz:
#!/bin/bash
# /usr/local/bin/csf-report.sh
# Port tarama raporlama scripti
echo "=== CSF Port Tarama Raporu ==="
echo "Tarih: $(date)"
echo ""
echo "--- Son 24 Saatte Engellenen IP'ler ---"
grep "Port Scan" /var/log/lfd.log |
grep "$(date +%b %d)" |
awk '{print $8}' |
sort | uniq -c | sort -rn
echo ""
echo "--- Toplam Engelli IP Sayisi ---"
csf -l | wc -l
echo ""
echo "--- En Son 10 Engelleme ---"
grep "Blocked" /var/log/lfd.log | tail -10
Bu scripti cron’a ekleyerek günlük rapor alabilirsiniz:
# Script'e calistirma izni verin
chmod +x /usr/local/bin/csf-report.sh
# Cron'a ekleyin - her gun sabah 8'de rapor gonder
echo "0 8 * * * root /usr/local/bin/csf-report.sh | mail -s 'CSF Gunluk Rapor' [email protected]" >> /etc/crontab
Gelismis Senaryo: Hosting Ortaminda CSF Yapılandırması
Birden fazla müşteriye hizmet veren bir hosting sunucusunda port tarama koruması daha karmaşık bir hal alır. Bir müşterinin sitenize yoğun trafik gönderen bir uygulaması olabilir, bu yanlışlıkla engelleme tetikleyebilir.
Bu tür ortamlar için önerilen yapılandırma:
# Hosting ortami icin optimize edilmis ayarlar
# csf.conf
# Port flood ayarlari - daha toleransli
PORTFLOOD = "80;tcp;100;10,443;tcp;100;10,21;tcp;10;60,22;tcp;3;30"
# CT ayarlari - yüksek trafikli siteler icin
CT_LIMIT = "200"
CT_INTERVAL = "60"
CT_BLOCK_TIME = "900"
CT_SKIP_HTTP = "1"
CT_SKIP_TIME_WAIT = "1"
# Port tarama hassasiyeti
PS_INTERVAL = "300"
PS_LIMIT = "15"
PS_BLOCK_TIME = "1800"
Hosting ortamında cPanel veya WHM kullananlar için önemli bir not: cPanel’in kendi IP’leri ve iç servis IP’leri mutlaka whitelist’te olmalıdır:
# cPanel sunuculari icin gerekli whitelist
csf -a 127.0.0.1 "Localhost"
# cPanel monitoring IP'sini ekleyin
csf -a $(curl -s https://myip.cpanel.net) "cPanel IP"
Performans Optimizasyonu
Port tarama koruması, yanlış yapılandırıldığında sunucu performansını olumsuz etkileyebilir. Özellikle yüksek trafikli sunucularda dikkat edilmesi gereken noktalar:
# iptables kural sayisini optimize etmek icin
# csf.conf icinde
# Sadece gercekten ihtiyac duyulan portlari izleyin
PORTFLOOD = "22;tcp;5;30,3306;tcp;5;60"
# Fazla loglama sunucu I/O'sunu etkiler
LF_SSHD_LOG = "1"
SYSLOG_CHECK = "300"
# NF_CONNTRACK kullanimi - modern sistemlerde etkin
NF_CONNTRACK = "1"
Mevcut iptables kurallarının sayısını kontrol etmek için:
# Kural sayisini goster
iptables -L | wc -l
iptables -L INPUT -n --line-numbers | wc -l
# CSF kural ozetini goster
csf --status | grep -E "IN|OUT|DROP"
Olay Müdahalesi: Aktif Saldırı Anında Yapılacaklar
Gerçek zamanlı bir port tarama saldırısı altındaysanız aşağıdaki adımları izleyin:
# 1. Saldiran IP'yi hemen engelleyin
csf -d 185.220.101.50 "Aktif port tarama saldirisi"
# 2. Ayni alt agdan gelen butun trafigi engelleyin
csf -d 185.220.101.0/24 "Supheli alt ag blogu"
# 3. Aktif baglantilari kontrol edin
netstat -tn | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20
# 4. CSF loglarina gercek zamanli bakin
tail -f /var/log/lfd.log
# 5. Eger cok yoğun saldiri varsa tüm yeni baglantilari gecici olarak kapatın
csf --panic
# Dikkat: Bu komutu sadece acil durumda kullanin!
# Geri almak icin:
# csf -r
Saldırı geçtikten sonra temizlik işlemi yapın:
# Gecici engelleri kaldirun (supheli degiller ise)
csf -tr 185.220.101.50
# Engel listesini temizle
csf -f
# CSF'yi yeniden baslat
csf -r
Düzenli Bakım ve Güncelleme
CSF’yi güncel tutmak, yeni tehditlere karşı korunmak açısından kritik öneme sahiptir:
# CSF versiyonunu kontrol et
csf --version
# Guncel versiyonu indir ve guncelle
cd /usr/src
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
# Guncelleme sonrasi servisi yeniden baslat
systemctl restart csf lfd
Düzenli olarak yapılması gereken kontroller için haftalık checklist:
- Engelli IP listesini gözden geçirin ve gereksiz engelleri kaldırın
- Log dosyalarını analiz edin ve anormal desenleri tespit edin
- Whitelist’inizdeki IP’lerin hala geçerli olduğunu doğrulayın
- CSF versiyon güncellemesi olup olmadığını kontrol edin
- PORTFLOOD ve PS_LIMIT değerlerini trafik desenlerine göre ayarlayın
Sonuç
CSF ile port tarama koruması, katmanlı bir savunma yaklaşımı gerektirir. Tek başına bir parametre ayarlamak yeterli değildir. PORTFLOOD, SYNFLOOD, CT_LIMIT, LF_TRIGGER ve PS_INTERVAL gibi parametreleri birlikte ve sunucunuzun profiline uygun şekilde yapılandırmak gerekir.
En önemli nokta şudur: Koruma ne kadar sıkı olursa, yanlış pozitif (false positive) engelleme riski de o kadar artar. Bu yüzden değerleri aşırıya kaçmadan, sunucunuzun normal trafik hacmini göz önünde bulundurarak ayarlamalısınız. Yapılandırma değişikliklerinden önce mutlaka yedeğinizi alın:
# Mevcut yapilandirmayi yedekle
cp /etc/csf/csf.conf /etc/csf/csf.conf.backup.$(date +%Y%m%d)
Log analizi ve düzenli bakım olmadan en iyi yapılandırma bile zamanla işlevsiz hale gelir. CSF’yi bir “kur ve unut” aracı olarak değil, aktif olarak yönetilmesi gereken bir güvenlik katmanı olarak düşünün. Port tarama saldırıları gelişmeye devam ettiği sürece koruma stratejileriniz de gelişmelidir.