Ana içeriğe geç

Şifre Brute‑Force Protection with Fail2ban

Bu makalede

Eğer sunucuya şifreyle giriş yaparsanız, saldırganlar otomatik olarak tahmin etmeye çalışabilir — bu brute‑force attack olarak adlandırılır. En iyi koruma, key‑based authentication (şifre yok) kullanmaktır. Ancak bazı nedenlerden dolayı hâlâ şifre kullanıyorsanız, ek güvenlik önlemleri eklemelisiniz. Bunun için en basit ve etkili araçlardan biri Fail2ban'dır.

Fail2ban, logları (sunucu etkinlik kayıtları) izleyen bir programdır. Bir kişi ardışık olarak çok fazla giriş yapmaya çalışır ve başarısız olursa, Fail2ban IP adresini bir süre için otomatik olarak engeller.

Fail2ban Kurulumu

Ubuntu / Debian:

sudo apt update
sudo apt install fail2ban -y

CentOS / Rocky Linux:

sudo yum update
sudo yum install epel-release
sudo yum install fail2ban

Doğru çalışması için bir güvenlik duvarı kurulmalıdır. Örneğin, iptables kurabilirsiniz:

Ubuntu / Debian:

sudo apt install iptables

CentOS / Rocky Linux:

sudo yum install iptables-services

Kurulumdan sonra Fail2ban otomatik başlatmayı etkinleştirin:

sudo systemctl enable fail2ban

Ubuntu'da, Fail2ban hemen SSH'yi korur: varsayılan olarak 10 dakikada 5 failed login attempts within 10 minutes yapılmışsa bir IP'yi 10 dakika bloklar.

Fail2ban Nasıl Doğru Bir Şekilde Yapılandırılır

Ana ayarlar /etc/fail2ban/jail.conf dosyasında saklanır ve bölümlere ayrılmıştır.
[DEFAULT] bölümü, tüm hizmetlere varsayılan olarak uygulanacak ortak kuralları belirler.
Bireysel hizmetler (örneğin, SSH, Apache web sunucusu veya FTP) kendi bölümlerinde kendi parametrelerine sahiptir — örneğin [sshd], [apache‑auth], [vsftpd], vb.

Bu dosyadaki temel ayarları değiştirmeyi önermeziz. Bunun yerine kendi yapılandırma dosyanızı oluşturun — jail.local:

sudo nano /etc/fail2ban/jail.local

Boş olarak oluşturabilirsiniz — Fail2ban, belirtilmemiş seçenekleri varsayılanlarla doldurur.

SSH Koruma için Örnek Yapılandırma

İşte basit bir jail.local dosyası örneği:

[DEFAULT]
ignoreip = 123.45.67.89
[sshd]
enabled = true
maxretry = 3
findtime = 120
bantime = 43200

Bu ne anlama geliyor:

  • ignoreip — “beyaz liste” IP adresiniz. Fail2ban, şifrenizi yanlış yazsanız bile asla engellemez. IP'nizi buraya girin (statikse). Birden fazla adresi boşlukla ayırarak ekleyebilirsiniz.
  • enabled = true — SSH korumasını etkinleştir.
  • maxretry = 3 — en fazla 3 başarısız giriş denemesi.
  • findtime = 120 — son 120 saniye içinde (2 dakika).
  • bantime = 43200 — 12 saat (43200 saniye) engelleme.

Başka bir deyişle: IP'niz (sizin dışındaki) 2 dakika içinde 3 kez giriş yapmayı başarısız olursa, 12 saat boyunca engellenir.

Not

Kullanılan sistemden bağlı olarak, bölüm [sshd], [ssh] veya [ssh‑iptables] olabilir — bunu jail.conf dosyasında doğrulayın.

Ek Ayarlar

  • SSH portunu değiştirdiyseniz (örneğin 22’den 2222’ye), [sshd] bölümüne ekleyin:
    port = 2222
    
  • iptables yerine UFW veya firewalld kullanıyorsanız, belirtin:
  • UFW için: action = ufw
  • firewalld için: action = firewallcmd-ipset

Ancak çoğu durumda her şeyi varsayılan bırakabilirsiniz — Fail2ban uygun engelleme yöntemini otomatik olarak seçer.

Ayarları Uygula

Dosyayı kaydettikten sonra Fail2ban’ı yeniden başlatın:

sudo systemctl restart fail2ban

Her Şeyin Çalıştığını Nasıl Doğrularım

  1. SSH engelleme durumunu kontrol edin:
    sudo fail2ban-client status sshd
    
    Engellenen IP adreslerinin bir listesini görürsünüz.
  2. Fail2ban loglarını inceleyin:
    sudo tail /var/log/fail2ban.log
    
  3. iptables engellemelerini kontrol edin (kullanılıyorsa):
    sudo iptables -L
    

İpucu: Kendi IP'nizden kasıtlı olarak yanlış şifre girerek korumayı test etmeyin — kendinizi engelleyebilirsiniz! Biraz beklemek daha iyidir: botlar genellikle lansmandan sonraki ilk saat içinde sunuculara saldırmaya başlar.

Not

Fail2ban ek bir güvenlik önlemidir, ancak SSH için şifre kullanmamak en iyisidir. SSH‑key girişi kurun — bu daha güvenli ve pratiktir. Kendinizi engellememek için IP'nizi ignoreip’ye ekleyin.