Fail2ban ile Sunucu Güvenliği: Kurulum, Özelleştirme ve En İyi Uygulamalar

Fail2ban ile Sunucu Güvenliği: Kurulum, Özelleştirme ve En İyi Uygulamalar - Corelux
17 Nis 2026
Paylaş:

Fail2ban ile Sunucu Güvenliği: Kurulum, Özelleştirme ve En İyi Uygulamalar

Son Güncelleme: Nisan 2026

Fail2ban, sunucularınızı kaba kuvvet (brute-force) saldırıları ve kötü amaçlı bağlantı denemelerine karşı koruyan hafif, etkili bir güvenlik aracıdır. Bu makalede fail2ban kurulumu, yapılandırma dosyaları, sık kullanılan jail ve filter örnekleri ile SSH, web sunucuları ve uygulama katmanı koruması için pratik adımları bulacaksınız.

Makale boyunca önemli terimler parantez içinde Türkçe karşılıkları ile verilecek ve örnekler gerçek dünyada uygulanabilir komut ve konfigürasyon snippetleri ile desteklenecektir.

İçindekiler

Fail2ban Nedir?

Fail2ban, log (kayıt) dosyalarını izleyerek kötü amaçlı tekrar denemeleri tespit eden ve belirlenen kurallara göre saldırgan IP adreslerini geçici olarak engelleyen bir araçtır. Genellikle SSH (uzak bağlantı), FTP, mail ve web hizmetleri için kullanılır. Fail2ban, jail (hapishane) ve filter (filtre) yapıları ile esnek biçimde uygulanır.

Kurulum (Debian/Ubuntu & CentOS/RHEL)

Fail2ban kurulumu dağıtıma göre değişir. Aşağıda en yaygın iki dağıtım için adımlar yer almaktadır.

Debian / Ubuntu

sudo apt update
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban

CentOS / RHEL (EPEL üzerinden)

sudo yum install epel-release -y
sudo yum install fail2ban -y
sudo systemctl enable --now fail2ban

Kurulum sonrası servis durumunu kontrol etmek için:

sudo systemctl status fail2ban

Yapılandırma Dosyaları ve Temel Kavramlar

Fail2ban'ın temel dosya yapısı genellikle /etc/fail2ban dizinindedir. Önemli dosyalar:

  • jail.conf: Varsayılan jail (kural) ayarlarını içerir. Bu dosya üzerine yazılmamalıdır.
  • jail.local: Sistem yöneticisinin özelleştirmelerini koyduğu dosyadır. Değişiklikler burada yapılmalıdır.
  • filter.d/*.conf: Her servis için regex (düzenli ifade) filtreleri içerir.
  • fail2ban.log: Fail2ban'ın kendi log dosyası; genelde /var/log/fail2ban.log konumundadır.

Öneri: Paket güncellemeleri ile gelen varsayılan dosyayı değiştirmeyin; bunun yerine jail.local dosyasını oluşturun veya jail.d/ altına yeni konfigürasyonlar koyun.

Örnek Jail ve Filter Konfigürasyonları

Aşağıda sık kullanılan birkaç örnek bulunmaktadır. Bu örnekler doğrudan /etc/fail2ban/jail.local içine eklenebilir.

Basit SSH Jail

[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime  = 3600
findtime = 600
action = iptables-multiport[name=sshd, port="ssh"]

Not: CentOS/RHEL sistemlerde logpath /var/log/secure olabilir; dağıtımınıza göre kontrol edin.

Apache (ModSecurity veya İstem Dışı Giriş Denemeleri)

[apache-auth]
enabled = true
filter = apache-auth
port = http,https
logpath = /var/log/apache2/*error.log
maxretry = 3
bantime = 86400

Örnek Basit Filter (filter.d/wordpress-login.conf)

[Definition]
failregex =  .*POST .*wp-login.php
ignoreregex =

Bu filtre Apache veya Nginx access log'larını inceleyerek WordPress login sayfasına yapılan denemeleri yakalayabilir. Gerçek kullanımda log formatınıza göre düzenli ifadeyi özelleştirin.

Firewall (iptables/nftables/firewalld) Entegrasyonu

Fail2ban, IP engelleme için mevcut firewall çözümünüzü kullanır. En yaygın üç entegrasyon:

  • iptables: Geleneksel Linux firewallu; pek çok sistemde varsayılan.
  • nftables: Yeni nesil paket filtresi, performans avantajı sağlar.
  • firewalld: CentOS/RHEL üzerinde yaygın; fail2ban firewalld action'larını destekler.

Aşağıda fail2ban ile iptables üzerinden geçici engelleme için örnek komutlar vardır (manual doğrulama için):

sudo iptables -L -n --line-numbers
sudo iptables -I INPUT 1 -s 203.0.113.45 -j DROP

Eğer sisteminiz nftables kullanıyorsa, fail2ban'ın nftables action dosyalarını kullanın veya kendi action dosyanızı yazın.

İzleme, Loglama ve Fail2ban Komutları

Fail2ban yönetimi için kullanışlı komutlar:

  • Servis durumu: sudo systemctl status fail2ban
  • Aktif jail'leri görme: sudo fail2ban-client status
  • Bir jail içindeki banned IP'leri listeleme: sudo fail2ban-client status sshd
  • IP ban kaldırma: sudo fail2ban-client set sshd unbanip 203.0.113.45
# Tüm fail2ban loglarını takip etme
sudo tail -f /var/log/fail2ban.log

Pratik Senaryolar ve Örnekler

Aşağıda gerçek dünyada karşılaşılan durumlar ve uygulanabilir çözümler yer almaktadır.

1) SSH İçin İleri Seviye Koruma

  • Port Değiştirme: SSH portunu değiştirin (ör: 2222) fakat fail2ban konfigürasyonunu buna göre ayarlayın.
  • İki Aşamalı Engelleme: İlk aşamada kısa süreli ban (ör: 10 dakika), tekrar eden saldırılarda uzun süreli ban (günler).
[sshd]
enabled = true
port = 2222
maxretry = 4
findtime = 300
bantime = 600
banaction = iptables-multiport
# İleri seviye: tekrar eden saldırılar için external script tetikleyebilirsiniz

2) Web Uygulaması (WordPress) Login Koruması

WordPress için web katmanında rate-limit yoksa fail2ban ile wp-login.php denemelerini yakalayabilirsiniz. Ancak bu yöntem doğru log formatı ve gerçek IP adresini almak için reverse proxy (ör. Cloudflare) kullanılıyorsa remoteip ya da proxy loglarını dikkate alacak şekilde ayarlanmalıdır.

3) Çok Sunuculu Ortamlarda Merkezi Yönetim

Büyük altyapılarda merkezi log (rsyslog/Graylog/ELK) kullanıyorsanız, fail2ban her node'da çalıştırılabilir veya merkezi SIEM üzerinden custom aksiyonlarla IP'leri blacklist havuzuna (ör. firewall yöneticisi) ekleyebilirsiniz. Ayrıca bir IP'yi global blacklist'e eklemek için Corelux kiralık sunucu veya VDS üzerinde merkezi firewall çözümüne yönlendirme yapılabilir: Kiralık Sunucu.

Ban Stratejileri Karşılaştırması

Strateji Açıklama Avantaj Dezavantaj
Geçici (kısa) ban Tek seferlik veya kısa süreli (10-30 dk) engelleme. Yanlış pozitiflerde daha az kesinti. Yüksek saldırılarda yetersiz olabilir.
Uzun süreli ban Saldırı tekrarında saatler/günler süren engelleme. Saldırganın geri dönmesini zorlaştırır. Yanlış ban durumunda servis kesintisi riskli.
Kalıcı (blacklist) İncelenip onaylandıktan sonra kalıcı engelleme. Gerçek saldırganlar için etkili. Manuel inceleme gerektirir.

Sıkça Sorulan Sorular

Fail2ban tüm saldırı tiplerini engeller mi?

Hayır. Fail2ban log (kayıt) tabanlıdır; sadece loglarda tespit edilebilen tekrar denemeleri engeller. DDoS (dağıtık hizmet engelleme) gibi volumetrik saldırılar için CDN ve network katmanında koruma gereklidir.

Yanlışlıkla banlanan IP nasıl kaldırılır?

sudo fail2ban-client set unbanip komutu ile anında kaldırabilirsiniz. Örnek: sudo fail2ban-client set sshd unbanip 203.0.113.45.

Fail2ban log dizini nerede bulunur?

Genellikle /var/log/fail2ban.log altında bulunur. Hizmetin kendi loglarını ve ilgili servis loglarını (ör. /var/log/auth.log, /var/log/secure, /var/log/apache2/error.log) kontrol edin.

Cloudflare veya başka reverse proxy kullanıyorum, IP'leri nasıl doğru alırım?

Reverse proxy arkasında gerçek istemci IP'sini almak için web sunucunuzun access log formatını ve X-Forwarded-For başlığını dikkate alacak şekilde yapılandırın. Alternatif olarak proxy sunucusunda (veya CDN'de) güvenlik kuralları ayarlayın.

Fail2ban performans üzerinde etkisi olur mu?

Genelde minimal yük oluşturur. Ancak çok yüksek trafiğe sahip sistemlerde yoğun log taraması CPU kullanımını artırabilir; bu durumda filtreleri optimize etmek veya merkezi log/analiz yöntemleri tercih edilmelidir.

Fail2ban'ı VPS/VDS ortamında kullanabilir miyim?

Evet. Fail2ban hem VPS (Sanal Özel Sunucu) hem de VDS/physical sunucularda çalışır. Performans ve firewall yapılandırması sağlayıcınıza göre değişebilir; daha güçlü izolasyon için Türkiye VPS Sunucu veya kiralık sunucu seçeneklerini değerlendirebilirsiniz.

Sonuç

Fail2ban, sunucu güvenliğinin önemli bir bileşenidir ve doğru kurulum ile özelleştirme sayesinde otomatik, düşük maliyetli bir savunma hattı oluşturur. Özellikle SSH, web ve mail servisleri için başlangıç seviyesinden ileri seviyeye kadar uygulanabilir.

Kurulum sonrası dikkat etmeniz gerekenler:

  1. Yedekleme: Yapılandırma dosyalarınızı yedekleme ile saklayın.
  2. SSL: Web uygulamalarınız için SSL sertifikası kullanın; loglarda gözetim ve doğrulama kolaylaşır.
  3. Altyapı: Ölçek gerekiyorsa kiralık sunucu veya paylaşımlı değil izole kaynak için VPS çözümlerini değerlendirin.

Eğer uygulama tabanlı (ör. WordPress) login saldırılarına karşı daha kapsamlı koruma istiyorsanız, web uygulama güvenlik duvarı (WAF) ve CDN çözümlerini kombinleyin. Corelux hizmetlerinden faydalanmak için sunucu ya da SSL ihtiyaçlarınızı gözden geçirebilirsiniz: SSL Sertifikası, Türkiye VPS Sunucu, Kiralık Sunucu ve Yedekleme Hizmeti.

Bu rehberdeki örnekler genel amaçlıdır; canlı ortamlarda değişiklik yapmadan önce test ortamında doğrulama yapmanızı öneririz. İhtiyacınız olursa Corelux destek ekibi ile iletişime geçerek uyarlanmış güvenlik çözümleri alabilirsiniz.

Yazar

Boran BAR

Chat on WhatsApp