Güvenlik

Fail2ban ile SSH koruması: kurulum, test ve engel kaldırma

Tekrarlanan başarısız SSH girişlerini sınırlandırın; kendinizi kilitlemeden jail ayarını test edip engel kaldırmayı öğrenin.

6 dakika okuma
Hatalı anahtarları engelleyen sunucu giriş kapısı

Fail2ban, başarısız giriş kayıtlarını izleyerek belirli IP adreslerine geçici engel uygular. Zayıf parolayı güçlü yapmaz ve ağ kapasitesini dolduran DDoS saldırılarını tek başına durdurmaz. Bu rehber Ubuntu 24.04 LTS üzerinde SSH içindir.

1. Kendinizi kilitlemeden başlayın

Mevcut SSH oturumunu açık tutun ve sağlayıcınızın konsoluna erişebildiğinizi doğrulayın. İkinci terminalde anahtarla giriş yapabildiğinizi test edin. Kullanılan SSH portunu kaydedin:

bashsudo sshd -T | grep '^port '
sudo journalctl -u ssh --since "10 minutes ago"

Port 22 değilse aşağıdaki jail dosyasını buna göre düzenleyin. Sunucuda bir panel zaten Fail2ban veya başka giriş koruması yönetiyorsa önce onun yapılandırmasını inceleyin; ikinci bir bağımsız politika eklemeyin.

2. Paketi kurun

bashsudo apt update
sudo apt install -y fail2ban python3-systemd

Paketle gelen jail.conf dosyasını doğrudan değiştirmek yerine yerel bir ek dosya kullanın. Böylece güncellemede kendi tercihlerinizle paket varsayılanlarını ayırabilirsiniz.

3. SSH jail dosyası

/etc/fail2ban/jail.d/sshd.local dosyasını oluşturun:

ini[sshd]
enabled = true
backend = systemd
port = 22
maxretry = 5
findtime = 10m
bantime = 1h
ignoreip = 127.0.0.1/8 ::1

Bu örnek, 10 dakikada beş eşleşen başarısız olay için bir saat engel tanımlar. Bunlar başlangıç tercihidir; ortak IP kullanan ekipler için etkisini değerlendirin. Güvenilir, sabit yönetim IP’nizi ignoreip listesine ayrıca ekleyebilirsiniz; geniş ağ aralıklarını gereksiz yere hariç tutmayın.

systemd arka ucu journal okur; bu örneğe ayrıca logpath satırı eklemeyin. Parametrelerin anlamı jail yapılandırma belgesinde ve resmi örnek yapılandırmada açıklanır.

4. Önce test, sonra etkinleştirme

bashsudo fail2ban-client -t

Hata yoksa:

bashsudo systemctl enable --now fail2ban
sudo systemctl restart fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshd

sshd jail listede bulunmalı. Servisin active olması tek başına giriş kayıtlarının eşleştiğini kanıtlamaz. Ayrı, size ait bir test bağlantısından kontrollü başarısız giriş oluşturup sayacı gözleyin; tek yönetim bağlantınızdan arka arkaya hata üretmeyin.

5. Hataları ayırın

bashsudo journalctl -u fail2ban -n 50 --no-pager

Jail görünmüyor: dosya adı, bölüm adı ve enabled ayarını inceleyin. Sayaç artmıyor: SSH olayları journal’a geliyor mu, kullanılan filtre doğru mu? IP listede ama trafik geçiyor: engel eylemi, gerçek SSH portu ve nftables/iptables entegrasyonunu kontrol edin.

6. Yanlış engeli kaldırın

Konsoldan veya hâlâ erişebilen yönetim bağlantısından, aşağıdaki örnek IP’yi gerçek adresle değiştirerek:

bashsudo fail2ban-client set sshd unbanip 203.0.113.10

Tüm güvenlik duvarını temizlemek yerine yalnız ilgili engeli kaldırın. Sonra yanlış engelin sebebini çözün. Komut seçenekleri fail2ban-client belgesinde bulunur.

Yapılandırma dosyanızı yedekleyin. Anahtar tabanlı SSH, güncellemeler ve en az yetki ilkesi için sunucu güvenliği rehberine, ağ saldırıları için DDoS rehberine geçin.