sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa SSL & Güvenlik Firewall Yapılandırma Fail2Ban Kurulumu ve Yapılandırması: SSH ve Web...
🛡️ Firewall Yapılandırma

Fail2Ban Kurulumu ve Yapılandırması: SSH ve Web Koruması

Fail2Ban, başarısız giriş denemelerini izleyerek kötü niyetli IP'leri otomatik engelleyen güçlü bir güvenlik aracıdır. Kurulum ve yapılandırma rehberi.

📅 9 Mayıs 2025 👁 7 görüntülenme ⏱ 4 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

Fail2Ban Nedir?

Fail2Ban, log dosyalarını izleyerek başarısız kimlik doğrulama denemelerini tespit eden ve belirli bir eşiği aşan IP adreslerini otomatik olarak engelleyen açık kaynaklı bir güvenlik aracıdır. Özellikle SSH kaba kuvvet (brute force) saldırılarına karşı son derece etkilidir.

Fail2Ban'ın çalışma mantığı şöyledir:

  1. Log dosyalarını gerçek zamanlı izler (auth.log, nginx/access.log vb.)
  2. Belirli zaman aralığında (findtime) başarısız denemeleri (maxretry) sayar
  3. Limiti aşan IP'yi firewall kuralıyla (iptables/nftables) engeller (bantime)
  4. Ban süresi dolunca veya manuel olarak ban kaldırılır

Kurulum

Ubuntu / Debian

sudo apt update
sudo apt install fail2ban -y

# Servisi başlat ve otomatik başlatmayı aktifleştir
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Durumu kontrol et
sudo systemctl status fail2ban

AlmaLinux / Rocky Linux / CentOS

sudo dnf install epel-release -y
sudo dnf install fail2ban -y

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Yapılandırma Dosyaları

Fail2Ban'ın iki ana yapılandırma dosyası vardır:

  • /etc/fail2ban/jail.conf: Varsayılan yapılandırma. Güncellemelerle üzerine yazılabilir; doğrudan düzenlenmemelidir.
  • /etc/fail2ban/jail.local: Yerel özelleştirmeler için. Her güncelleme sonrası korunur.
# jail.conf'dan jail.local kopyasını oluşturun
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Temel jail.local Yapılandırması

[DEFAULT]
# Beyaz liste: Asla engellenmesin
ignoreip = 127.0.0.1/8 ::1 KENDI_IP_ADRESINIZ

# Ban süresi (saniye veya m/h/d/w formatı)
bantime  = 1h

# Bu süre içinde...
findtime  = 10m

# ...bu kadar başarısız deneme olursa ban uygula
maxretry = 5

# Backend: systemd veya auto
backend = systemd

# Ban işlemi için kullanılan action
banaction = iptables-multiport

# E-posta bildirimi (isteğe bağlı)
# destemail = admin@example.com
# sender = fail2ban@example.com
# action = %(action_mwl)s

SSH Koruması

[sshd]
enabled = true
port    = 2222       # SSH portunuzu belirtin (varsayılan 22)
filter  = sshd
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 3
bantime  = 24h
findtime = 10m

Nginx Koruması

# Nginx HTTP auth brute force
[nginx-http-auth]
enabled  = true
port     = http,https
logpath  = %(nginx_error_log)s
maxretry = 5

# Nginx kötü bot ve tarayıcı engelleme
[nginx-botsearch]
enabled  = true
port     = http,https
logpath  = %(nginx_access_log)s
maxretry = 2
findtime = 1m

# Nginx 404 flood engelleme
[nginx-limit-req]
enabled  = true
port     = http,https
logpath  = %(nginx_error_log)s

Apache Koruması

[apache-auth]
enabled  = true
port     = http,https
logpath  = %(apache_error_log)s
maxretry = 5

[apache-badbots]
enabled  = true
port     = http,https
logpath  = %(apache_access_log)s
maxretry = 2

[apache-overflows]
enabled  = true
port     = http,https
logpath  = %(apache_error_log)s
maxretry = 2

WordPress Özel Filtresi

WordPress wp-login.php için özel filter oluşturun:

sudo nano /etc/fail2ban/filter.d/wordpress.conf
[Definition]
failregex = ^<HOST> .* "POST .*/wp-login\.php
            ^<HOST> .* "POST .*/xmlrpc\.php
ignoreregex =
# jail.local'a ekle
[wordpress]
enabled  = true
filter   = wordpress
port     = http,https
logpath  = /var/log/nginx/access.log
maxretry = 5
findtime = 5m
bantime  = 24h

Postfix Mail Sunucusu Koruması

[postfix]
enabled  = true
port     = smtp,465,submission
logpath  = %(postfix_log)s
maxretry = 5

[postfix-sasl]
enabled  = true
port     = smtp,465,submission
logpath  = %(postfix_log)s

Fail2Ban Servisi Yeniden Başlatma

sudo systemctl restart fail2ban
sudo fail2ban-client status

Ban ve Unban İşlemleri

# Tüm aktif jail'leri listele
sudo fail2ban-client status

# Belirli bir jail'in durumunu görüntüle
sudo fail2ban-client status sshd

# Belirli bir IP'yi manuel ban et
sudo fail2ban-client set sshd banip 192.168.1.100

# Belirli bir IP'nin banını kaldır
sudo fail2ban-client set sshd unbanip 192.168.1.100

# Engellenen IP'leri listele
sudo iptables -n -L | grep "fail2ban"
# veya
sudo fail2ban-client status sshd | grep "Banned IP"

Log Dosyalarını İzleme

# Fail2Ban log dosyası
sudo tail -f /var/log/fail2ban.log

# Belirli bir IP'nin ban geçmişi
sudo grep "192.168.1.100" /var/log/fail2ban.log

# Son banlanan IP'leri göster
sudo zcat /var/log/fail2ban.log* | grep "Ban " | tail -20

Ban Süresini Kademeli Artırma

Aynı IP tekrar tekrar ban yiyorsa süresi otomatik artırılabilir:

[DEFAULT]
# İlk ban: 1 saat, ikincisi: 4 saat, üçüncüsü: 24 saat vb.
bantime.increment = true
bantime.factor = 4
bantime.formula = ban.Time * (1<<(ban.Count if ban.Count<20 else 20)) * banFactor

IP Geolocation ile Yalnızca Belirli Ülkelere İzin Verme

# GeoIP ile belirli ülkeleri engelleme örneği (iptables-geoport action ile)
# fail2ban + geoip-ipset kombinasyonu
sudo apt install ipset xtables-addons-common
# Detaylı kurulum için fail2ban wiki'ye bakın

Fail2Ban Performans Ayarları

[DEFAULT]
# Log okuma arka ucu (yüksek trafikte pyinotify daha verimli)
backend = systemd

# DB purge aralığı (saniye)
dbpurgeage = 86400  # 1 gün

# Birden fazla iş parçacığı
# threadlevel = 2

Özet

Fail2Ban, sunucu güvenliğinin vazgeçilmez bir parçasıdır. Kurulum ve temel yapılandırma yaklaşık 15 dakika alır ve anında SSH brute force saldırılarına karşı koruma sağlar. SSH dışında Nginx, Apache ve WordPress için de jail tanımlamak, sunucunuzun tüm giriş noktalarını korumanızı sağlar. Ban süresini kademeli artırma özelliği, ısrarcı saldırılar için özellikle etkilidir.

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.