Ş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:
CentOS / Rocky Linux:
Doğru çalışması için bir güvenlik duvarı kurulmalıdır. Örneğin, iptables kurabilirsiniz:
Ubuntu / Debian:
CentOS / Rocky Linux:
Kurulumdan sonra Fail2ban otomatik başlatmayı etkinleştirin:
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:
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:
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: - 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:
Her Şeyin Çalıştığını Nasıl Doğrularım¶
- SSH engelleme durumunu kontrol edin: Engellenen IP adreslerinin bir listesini görürsünüz.
- Fail2ban loglarını inceleyin:
- iptables engellemelerini kontrol edin (kullanılıyorsa):
İ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.