Fail2ban Kurulumu: Sunucuyu Saldırılara Karşı Koruma
Fail2ban nedir, nasıl kurulur? SSH kaba kuvvet saldırılarını engelleme, jail.local ayarları, Nginx korumaları, yasaklı IP yönetimi ve ufw ile kullanım.

İçindekiler
Fail2ban, sunucunuzdaki günlük dosyalarını izleyip art arda başarısız giriş deneyen IP adreslerini güvenlik duvarında otomatik olarak bir süre engelleyen açık kaynaklı bir araçtır. İnternete açık her sunucu, kurulduktan dakikalar sonra SSH'a yönelik otomatik şifre deneme saldırılarıyla karşılaşır. Fail2ban bu saldırganları birkaç denemeden sonra kapının dışında bırakır.
Bu rehberde Fail2ban'in nasıl çalıştığını, Ubuntu, Debian ve AlmaLinux'ta kurulumunu, SSH korumasını, jail.local ayarlarını, Nginx korumalarını ve yasaklı adresleri yönetmeyi anlatıyoruz.
Fail2ban nasıl çalışır?
Fail2ban üç parçadan oluşur:
- Filtre (filter): Günlük dosyasında başarısız bir girişi tanıyan düzenli ifadeler. Örneğin SSH için "Failed password" satırları.
- Eylem (action): Bir adres yakalandığında yapılacak iş. Genellikle güvenlik duvarına engelleme kuralı eklemektir.
- Jail: Bir filtreyi, bir eylemi ve kuralları (kaç denemede, ne kadar süreyle) bir araya getiren tanım. Her servis için ayrı bir jail açılır.
Bir IP adresi findtime süresi içinde maxretry kadar başarısız deneme yaparsa bantime süresince engellenir. Süre dolunca yasak kendiliğinden kalkar.
Fail2ban kurulumu
Ubuntu ve Debian:
sudo apt update
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
AlmaLinux ve Rocky Linux (paket EPEL deposundadır):
sudo dnf install epel-release
sudo dnf install fail2ban
sudo systemctl enable --now fail2ban
Servisin çalıştığını kontrol edin:
sudo fail2ban-client status
Ubuntu ve Debian paketlerinde SSH jail'i varsayılan olarak açık gelir; çıktıda sshd görüyorsanız temel koruma şimdiden çalışıyordur.
jail.local ile ayarlar
Ayarları paketle gelen jail.conf dosyasına değil, kendi oluşturduğunuz /etc/fail2ban/jail.local dosyasına yazın. jail.conf güncellemelerde üzerine yazılabilir; jail.local ise korunur ve onun üzerine uygulanır.
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
bantime.increment = true
ignoreip = 127.0.0.1/8 ::1 198.51.100.7
[sshd]
enabled = true
bantime: Yasak süresi.1hbir saat demektir.findtime: Denemelerin sayıldığı zaman aralığı.maxretry: Bu aralıkta izin verilen en fazla başarısız deneme.bantime.increment: Aynı adres tekrar yakalandıkça yasak süresini katlayarak uzatır. Israrcı botlara karşı çok etkilidir.ignoreip: Hiçbir zaman yasaklanmayacak adresler.198.51.100.7yerine kendi sabit IP adresinizi yazın; böylece kendinizi yanlışlıkla kilitlemezsiniz.
Ayarları uyguladıktan sonra servisi yeniden yükleyin:
sudo systemctl restart fail2ban
Debian 12 ve sonrası için not: Bu sürümlerde günlükler varsayılan olarak /var/log/auth.log yerine systemd günlüğünde tutulur. SSH jail'i başlamıyorsa [sshd] bölümüne backend = systemd satırını ekleyin.
SSH portunu değiştirdiyseniz jail'e bildirin, aksi hâlde Fail2ban engellemeyi yanlış porta uygular:
[sshd]
enabled = true
port = 2222
Yasaklı adresleri yönetmek
| Komut | Ne yapar? |
|---|---|
sudo fail2ban-client status | Açık jail'leri listeler |
sudo fail2ban-client status sshd | SSH jail'indeki yasaklı adresleri ve sayıları gösterir |
sudo fail2ban-client set sshd banip 203.0.113.50 | Bir adresi elle yasaklar |
sudo fail2ban-client set sshd unbanip 203.0.113.50 | Bir adresin yasağını kaldırır |
sudo fail2ban-client unban --all | Bütün yasakları kaldırır |
Fail2ban'in kendi günlüğü /var/log/fail2ban.log dosyasındadır; hangi adresin ne zaman ve hangi jail tarafından yasaklandığını buradan görebilirsiniz.
Nginx ve diğer servisleri korumak
Fail2ban yalnızca SSH için değildir. Paketle birlikte birçok servis için hazır filtreler gelir; bunları jail.local dosyasına ekleyerek açarsınız:
[nginx-http-auth]
enabled = true
[nginx-botsearch]
enabled = true
[recidive]
enabled = true
nginx-http-auth: Nginx'in parola korumalı sayfalarına yapılan başarısız girişleri yakalar.nginx-botsearch: Var olmayan yönetim panellerini ve bilinen açıkları tarayan botları yakalar.recidive: Fail2ban'in kendi günlüğünü izler ve farklı jail'lerde tekrar tekrar yasaklanan adresleri çok daha uzun süre engeller.
Nginx kurulumunu ve yapılandırmasını Nginx kurulumu rehberimizde anlattık. WordPress, Postfix, Dovecot ve MariaDB gibi servisler için de hazır filtreler vardır; /etc/fail2ban/filter.d/ klasöründe listeyi görebilirsiniz.
ufw ile birlikte kullanmak
Fail2ban varsayılan olarak doğrudan iptables ya da nftables kuralları ekler ve ufw ile sorunsuz çalışır. Yasakların ufw kuralı olarak görünmesini isterseniz [DEFAULT] bölümüne şunu ekleyin:
banaction = ufw
Bundan sonra yasaklı adresleri sudo ufw status çıktısında da görürsünüz. Güvenlik duvarı ve portların nasıl çalıştığını Port nedir? yazımızda anlattık.
Fail2ban'in sınırları
Fail2ban güçlü bir ek katmandır, ama her şeyi çözmez:
- Asıl koruma güçlü kimlik doğrulamadır. SSH'ta şifreli girişi kapatıp yalnızca anahtarla girişe izin verin; bunu SSH nedir? yazımızda adım adım anlattık.
- Dağıtık saldırıları yavaşlatır ama durduramaz. Her biri yalnızca birkaç deneme yapan binlerce farklı adres Fail2ban'in eşiğinin altında kalabilir.
- DDoS koruması değildir. Bağlantınızı trafikle dolduran saldırılara karşı ağ düzeyinde koruma gerekir; farkı DDoS nedir? yazımızda anlattık.
Nodesty sunucularında güvenlik
Nodesty AMD Ryzen 9 9950X VDS ve AMD EPYC 7763 VDS paketlerinde tam root erişimiyle Fail2ban'i dakikalar içinde kurabilirsiniz. Fail2ban sunucunuzun içindeki giriş denemelerini durdururken, L3–L7 nShield DDoS koruması ağ düzeyindeki saldırıları sunucunuza ulaşmadan süzer. Bir yasak yüzünden SSH erişiminizi kaybederseniz panelinizdeki web konsolu üzerinden sunucunuza her zaman ulaşabilirsiniz.
Sıkça Sorulan Sorular
SSH anahtarı kullanıyorsam Fail2ban'e gerek var mı?
Anahtarla giriş, şifre deneme saldırılarını zaten etkisiz kılar; asıl koruma budur. Fail2ban yine de faydalıdır; günlüklerdeki gürültüyü azaltır, sunucunun her denemeye cevap vermek için harcadığı kaynağı düşürür ve Nginx ya da diğer servisler gibi anahtar kullanılamayan yerlerde de koruma sağlar.
Fail2ban DDoS saldırılarını engeller mi?
Hayır. Fail2ban, günlük dosyalarını okuyup belirli IP adreslerini engeller; binlerce farklı adresten gelen ve bağlantınızı dolduran bir DDoS saldırısına karşı tasarlanmamıştır. Bu tür saldırılara karşı ağ düzeyinde, sunucunun önünde çalışan bir DDoS koruması gerekir.
Kendimi yanlışlıkla yasakladım, ne yapmalıyım?
Başka bir IP adresinden, örneğin telefonunuzun mobil bağlantısından ya da sağlayıcınızın web konsolundan sunucuya bağlanın ve sudo fail2ban-client set sshd unbanip IP-adresiniz komutunu çalıştırın. Bunun tekrarlanmaması için kendi sabit IP adresinizi ignoreip satırına ekleyin.
Yasak ne kadar sürer?
Varsayılan yasak süresi bantime ayarıyla belirlenir ve genellikle 10 dakikadır. Bu rehberdeki gibi 1 saat iyi bir başlangıçtır. bantime.increment ayarını açarsanız tekrar tekrar yakalanan adreslerin yasak süresi her seferinde katlanarak uzar.
Fail2ban ile ufw birlikte kullanılabilir mi?
Evet. Fail2ban varsayılan olarak iptables ya da nftables kurallarıyla engelleme yapar ve ufw ile çakışmaz. İsterseniz banaction = ufw ayarıyla yasakların ufw kuralı olarak eklenmesini sağlayabilir, böylece yasaklı adresleri ufw status çıktısında görebilirsiniz.
jail.conf dosyasını mı düzenlemeliyim?
Hayır. jail.conf paket güncellemelerinde üzerine yazılabilir. Kendi ayarlarınızı her zaman jail.local dosyasına ya da jail.d klasöründeki ayrı bir dosyaya yazın; Fail2ban bu dosyalardaki ayarları jail.conf'un üzerine uygular.
Yazar hakkında
Nodesty Ekibi · Altyapı ve Destek
Nodesty ekibi sunucularımızı, ağımızı ve DDoS korumamızı her gün işletir ve müşteri destek taleplerini 7/24 yanıtlar. Bu rehberler o deneyimden yazılır.
İlgili yazılar

Web Siteniz Hacklendi mi? Adım Adım Ne Yapmalısınız?
Web siteniz hacklendiyse ne yapmalısınız? Belirtiler, ilk müdahale, şifreler, zararlı dosyaları bulma, temiz yedekten dönme, WordPress ve önlemler.

Linux Sunucu Güvenliği: Adım Adım Kontrol Listesi
Linux sunucu güvenliği kontrol listesi: otomatik güncellemeler, SSH anahtarı, güvenlik duvarı, Fail2ban, gereksiz servisler, izolasyon, yedek ve denetim.

WireGuard Kurulumu: Kendi VPN Sunucunuzu Kurun
WireGuard nedir, nasıl kurulur? Ubuntu sunucuda kendi VPN sunucunuz: anahtar oluşturma, wg0.conf, yönlendirme ve NAT, istemci ayarları ve QR kod.