Fail2Ban ile SSH güvenliğini sağlama

📅 4 Şubat 2026Emre Karabulut
⏱️ Yaklaşık 6 dakikalık okuma süresi

Fail2Ban ile SSH Güvenliğini Sağlama: Otomatik Savunmanın Gücü

Sunucularınızın kalbine açılan kapı olan SSH (Secure Shell), yönetimin en kritik araçlarından biridir. Ancak, bu erişim noktası kötü niyetli saldırganların da birincil hedefidir. Sürekli tekrarlayan kaba kuvvet (brute-force) saldırıları, zayıf parolaları tahmin etmeye çalışarak sunucunuzun güvenliğini tehdit eder. İşte bu noktada, otomatik bir savunma mekanizması olan Fail2Ban devreye girer.

Bu blog yazısında, uzman bir sistem yöneticisi perspektifinden Fail2Ban’ı kullanarak SSH sunucunuzu bu tür saldırılardan nasıl koruyacağınızı, kurulumdan yapılandırmaya ve yönetime kadar adım adım inceleyeceğiz.

Fail2Ban Nedir?

Fail2Ban, sunucu günlük dosyalarını (log files) izleyen ve belirli kalıpları (örneğin, başarısız oturum açma denemeleri) tespit ettiğinde kötü niyetli IP adreslerini otomatik olarak engelleyen bir intrusion prevention framework’tür. Bu engelleme işlemi genellikle güvenlik duvarı kuralları (iptables, nftables veya firewalld) aracılığıyla yapılır ve saldırganın belirli bir süre boyunca sunucuya erişmesini engeller. Temel amacı, sürekli deneme yanılma yoluyla parola tahmin etmeye çalışan kaba kuvvet saldırılarını otomatize edilmiş bir şekilde durdurmaktır.

Kurulum

Fail2Ban’ı kurmak, çoğu Linux dağıtımında oldukça basittir.

Debian/Ubuntu tabanlı sistemlerde:

sudo apt update
sudo apt install fail2ban

RHEL/CentOS tabanlı sistemlerde (EPEL deposu kurulu olmalıdır):

sudo yum install epel-release
sudo yum install fail2ban

Kurulumdan sonra, hizmeti başlatmayı ve önyüklemede etkinleştirmeyi unutmayın:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Temel Yapılandırma

Fail2Ban’ın yapılandırması genellikle /etc/fail2ban/ dizininde bulunur. Ana yapılandırma dosyası jail.conf‘tur, ancak doğrudan bu dosyayı düzenlemek yerine jail.local adlı bir kopya oluşturup onu düzenlemek en iyi uygulamadır. Böylece yazılım güncellemeleri sırasında yapılandırmanızın üzerine yazılması engellenir.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

jail.local dosyasındaki önemli ayarlar:

  • ignoreip: Engellenmeyecek IP adresleri veya IP aralıkları. Güvenilir IP’lerinizi buraya ekleyin (örneğin, ofis IP’niz, yerel ağınız).
  • bantime: Bir IP’nin engellenmiş kalacağı süre (saniye cinsinden). Varsayılan 10 dakika (600 saniye) genellikle iyi bir başlangıçtır, ancak daha uzun süreler düşünebilirsiniz.
  • findtime: Belirli bir maxretry sayısına ulaşılması için geri sayımın başladığı zaman dilimi (saniye cinsinden). Bu süre içinde maxretry sayısına ulaşılırsa IP engellenir.
  • maxretry: Bir IP’nin engellenmeden önce kaç başarısız deneme yapabileceği sayısı.

Örnek /etc/fail2ban/jail.local yapılandırması:

Dosyayı bir metin düzenleyici ile açın:

sudo nano /etc/fail2ban/jail.local

Aşağıdaki gibi bir yapılandırma bölümü bulun veya ekleyin:

[DEFAULT]
bantime = 3600  ; 1 saat ban süresi (3600 saniye)
findtime = 600  ; 10 dakika içinde (600 saniye)
maxretry = 5    ; 5 başarısız deneme

; Güvenilir IP adreslerini virgülle ayırarak veya boşluk bırakarak ekleyin
; Örneğin: ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.10
ignoreip = 127.0.0.1/8 ::1

[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = /var/log/auth.log
maxretry = 3    ; SSH için daha agresif bir ayar, genellikle 3 yeterlidir
bantime = 86400 ; SSH saldırıları için daha uzun ban süresi (24 saat)

Yukarıdaki örnekte:

  • [DEFAULT] altında global ayarlar tanımlandı, ancak [sshd] bölümünde bu ayarlar geçersiz kılınabilir.
  • bantime global olarak 1 saate, SSH için ise 24 saate çıkarıldı.
  • findtime 10 dakikaya ayarlandı.
  • Genel maxretry 5 olarak belirlendi.
  • ignoreip kısmına yerel IP’ler eklendi. Kendi güvenilir IP adreslerinizi buraya eklemeyi unutmayın!
  • [sshd] bölümü enabled = true yapılarak SSH koruması etkinleştirildi. SSH için özel olarak maxretry 3’e düşürüldü, bu da daha erken banlanma anlamına gelir.

Yapılandırma değişikliklerini yaptıktan sonra Fail2Ban hizmetini yeniden başlatmayı unutmayın:

sudo systemctl restart fail2ban

İzleme ve Yönetim

Fail2Ban’ın durumunu ve engellenen IP adreslerini komut satırından kontrol edebilirsiniz:

Tüm aktif jail’leri listeleme:

sudo fail2ban-client status

Belirli bir jail’in (örneğin sshd) durumunu ve engellediği IP’leri görme:

sudo fail2ban-client status sshd

Bir IP adresinin engelini kaldırma (manuel olarak):

sudo fail2ban-client set sshd unbanip 203.0.113.5

Unutmayın ki bantime süresi sona erdiğinde IP’ler otomatik olarak engelden kalkacaktır. Eğer bir IP’yi kalıcı olarak engellemek isterseniz, güvenlik duvarı kurallarınıza manuel olarak eklemeniz daha uygun olacaktır.

Ek Güvenlik Önlemleri ve İyi Uygulamalar

Fail2Ban çok güçlü bir araç olsa da, kapsamlı bir güvenlik stratejisinin yalnızca bir parçasıdır. SSH güvenliğini artırmak için aşağıdaki ek önlemleri de uygulamanız şiddetle tavsiye edilir:

  • Varsayılan SSH Portunu Değiştirin: Genellikle 22 olan varsayılan portu bilinmeyen yüksek bir porta (örneğin, 2222 veya 54321) taşımak, otomatik botların ve basit taramaların hedefi olmaktan kurtulmanıza yardımcı olur.
  • Root Erişimi Devre Dışı Bırakın: Doğrudan root kullanıcısı ile SSH oturumu açmayı engelleyin. Bunun yerine, normal bir kullanıcı ile giriş yapın ve gerektiğinde sudo kullanın. (PermitRootLogin no ayarı /etc/ssh/sshd_config dosyasında)
  • Parola Kimlik Doğrulama Yerine SSH Anahtarları Kullanın: SSH anahtarları, kriptografik anahtar çiftleri ile kimlik doğrulaması yaparak parola tabanlı kimlik doğrulamasından çok daha güvenlidir. (PasswordAuthentication no ayarı /etc/ssh/sshd_config dosyasında)
  • Güçlü ve Karmaşık Parolalar Kullanın: Eğer parola kimlik doğrulamasını kullanmaya devam ediyorsanız, her zaman uzun, karmaşık ve benzersiz parolalar kullanın.
  • Güvenlik Duvarı Yapılandırın: UFW (Ubuntu) veya firewalld (CentOS/RHEL) gibi bir güvenlik duvarı kullanarak sadece gerekli portlara (örneğin, yeni SSH portunuz ve web sunucusu portlarınız) erişime izin verin.

Sonuç

Fail2Ban, sunucularınızı sürekli kaba kuvvet saldırılarına karşı korumak için vazgeçilmez bir araçtır. Kurulumu ve temel yapılandırması oldukça basit olup, kısa sürede SSH güvenliğinizi önemli ölçüde artırabilir. Ancak unutmayın, güvenlik bir katmanlar bütünüdür. Fail2Ban’ı diğer iyi uygulamalarla birleştirerek sunucularınız için sağlam bir savunma hattı oluşturabilirsiniz. Düzenli olarak günlükleri kontrol etmek ve güvenlik stratejinizi gözden geçirmek, her zaman akılda tutulması gereken önemli adımlardır.

155f52c7e9c3ea8a325b44ff056acd50611fa5e706241e72fc0165362c08111b?s=64&d=mm&r=g
Emre Karabulut
📊 Bu yazı 5 kez okundu.