Rehber

Kötü Niyetli IP'leri Engelleme: fail2ban, nftables ve Kenar Güvenlik Duvarı

Hangi katmanda engellemeli, fail2ban ve nftables kümeleriyle pratik yapılandırma, yasak süresi ve genişliği.

IP-DB Ekibi 3 dk okuma 24 okunma 0 yorum

Sunucu günlüklerinde tekrar eden başarısız giriş denemeleri, port taramaları ve istismar denemeleri gördüğünüzde ilk refleks adresi engellemektir. Ancak engellemenin nerede, ne kadar süreyle ve hangi genişlikte yapıldığı, işe yarayıp yaramayacağını belirler.

Hangi katmanda engellemeli?

  • Kenar / CDN katmanı — trafiği sunucunuza hiç ulaşmadan keser; hacimli saldırılarda tek gerçekçi seçenek budur.
  • Sunucu güvenlik duvarı (nftables/iptables) — makineye özel kararlar için hızlı ve ucuzdur; paket, uygulamaya ulaşmadan düşer.
  • Uygulama katmanı — en pahalı yer burasıdır çünkü istek zaten işlenmiştir; buna karşılık hesap, oturum ve davranış bağlamına sahip tek katman da budur.

Pratik kural: kaba kuvvet ve tarama trafiğini güvenlik duvarında, iş mantığına dayalı kötüye kullanımı (sahte kayıt, kupon istismarı) uygulamada durdurun.

fail2ban: davranışa göre otomatik yasak

fail2ban günlükleri okur, bir örüntü belirli sürede yeterince tekrarlanırsa adresi güvenlik duvarına ekler. SSH için tipik bir yapılandırma:

# /etc/fail2ban/jail.local [sshd] enabled = true backend = systemd maxretry = 4 findtime = 10m bantime = 1h # tekrar eden ihlalciyi kademeli olarak daha uzun süre yasakla [recidive] enabled = true bantime = 1w findtime = 1d maxretry = 5

recidive hapishanesi, kısa yasakları defalarca yiyen adresleri haftalarca dışarıda tutar. Kendi ofis ve izleme adreslerinizi ignoreip satırına eklemeyi unutmayın — aksi halde bir gün kendinizi kilitlersiniz.

Büyük listeler için ipset / nftables set

Binlerce adres için tek tek kural yazmak güvenlik duvarını yavaşlatır. Doğru yapı, hepsini tek bir kümede tutup tek kuralla eşleştirmektir:

# nftables ile kalıcı bir engelleme kümesi nft add table inet filter nft add set inet filter blocklist { type ipv4_addr \; flags interval \; } nft add rule inet filter input ip saddr @blocklist drop # listeyi besleme dosyasından yükle nft add element inet filter blocklist { 203.0.113.0/24, 198.51.100.7 }

Bu yapı yüz binlerce kayıtta bile sabit maliyetle çalışır; kümeyi bir cron işiyle güncel besleme verisinden yeniden doldurmanız yeterlidir.

Ne kadar geniş, ne kadar uzun?

  • Süreli yasak varsayılan olsun. Kalıcı yasak listesi zamanla çöpe döner; adresler el değiştirir, dünkü saldırgan yarının müşterisi olur.
  • /24 veya daha geniş bloklara dikkat. Tek bir kötü sunucu için koca bir bloğu kapatmak, aynı blokta oturan meşru kullanıcıları da vurur.
  • CGNAT ve mobil aralıklarda çok temkinli olun. Tek adresin arkasında binlerce abone olabilir.
  • Kendi altyapınızı beyaz listeye alın — izleme, yedekleme ve ödeme sağlayıcısı geri çağırma adresleri dâhil.

Arama motorlarını yanlışlıkla engellemeyin

Agresif tarayan her bot kötü niyetli değildir. Bir arama motoru botu olduğunu iddia eden adresi engellemeden önce ters DNS kaydını çözün ve dönen adı ileri yönde tekrar sorgulayın; ad ile IP eşleşmiyorsa bot sahtedir. User-Agent başlığı tek başına hiçbir şey kanıtlamaz.

Listeyi IP-DB ile besleyin

Kendi günlüklerinizden çıkardığınız adresleri engellemeden önce doğrulamak, gereksiz yasakları büyük ölçüde azaltır. IP-DB.com API'si bir adresin kara liste kayıtlarını, ASN'sini ve topluluk raporlarını döndürür; bunu güvenlik duvarı otomasyonunuzun önüne koyarak yalnızca gerçekten kötü itibarlı adresleri kümeye ekleyebilirsiniz. Toplu değerlendirme için toplu sorgu ekranını, sürekli akış içinse API'yi kullanın.

Paylaş

Yorumlar 0

Sorunu, deneyimini ya da düzeltmeni paylaş. Kayıtlı ya da anonim yorum yapabilirsin.

Henüz yorum yok. İlk yorumu sen yaz.

Düz metin; bağlantılar kabul edilmez. Yorumlar hemen yayınlanır ve denetlenebilir. Kayıtlı yorum için giriş yap