Fail2Ban ile SSH güvenliğini sağlama

📅 15 Aralık 2025Emre Karabulut
⏱️ Yaklaşık 6 dakikalık okuma süresi

Merhaba Sistem Yöneticileri ve Güvenlik Meraklıları,

SSH Güvenliğinizi Fail2Ban ile Sağlamlaştırın

Günümüz siber güvenlik ortamında sunucuların güvenliği, sürekli dikkat gerektiren kritik bir konudur. İnternet’e açık her sunucu, özellikle de SSH (Secure Shell) servisi üzerinden, potansiyel saldırganların hedefindedir. En yaygın saldırı türlerinden biri, kullanıcı adı ve parola kombinasyonlarını deneyerek sisteme sızmaya çalışan “brute-force” (kaba kuvvet) saldırılarıdır. Bu tür saldırılar, güvenlik duvarı kuralları veya güçlü parolalar olsa bile, sistem kaynaklarını tüketebilir ve zayıf parolaların tespiti durumunda ciddi güvenlik ihlallerine yol açabilir.

İşte tam bu noktada Fail2Ban devreye girer. Fail2Ban, sunucu log dosyalarını izleyerek belirli bir zaman dilimi içinde tekrarlayan başarısız giriş denemeleri veya diğer kötü niyetli eylemleri tespit eden ve bu eylemleri gerçekleştiren IP adreslerini geçici veya kalıcı olarak engelleyen açık kaynaklı bir güvenlik aracıdır. Bu, Fail2Ban’i bir tür “Saldırı Tespit/Engelleme Sistemi” (IDS/IPS) benzeri bir araç haline getirir ve sunucunuzu brute-force saldırılarına karşı çok daha dirençli hale getirir.

Bu blog yazısında, Fail2Ban’i nasıl kuracağınızı, temel olarak nasıl yapılandıracağınızı ve SSH güvenliğinizi artırmak için nasıl kullanacağınızı adım adım inceleyeceğiz.

Kurulum Adımları

Fail2Ban’in kurulumu, kullandığınız Linux dağıtımına göre değişiklik gösterebilir ancak genel olarak oldukça basittir.

Debian/Ubuntu Tabanlı Sistemlerde Kurulum:

Öncelikle paket listelerinizi güncelleyin ve ardından Fail2Ban paketini kurun:

sudo apt update
sudo apt install fail2ban

CentOS/RHEL/Fedora Tabanlı Sistemlerde Kurulum:

EPEL deposunu (Etra Packages for Enterprise Linux) etkinleştirmeniz ve ardından Fail2Ban’i kurmanız gerekebilir:

sudo dnf install epel-release -y
sudo dnf install fail2ban -y

(Eski CentOS sürümleri için yum kullanabilirsiniz: sudo yum install epel-release -y && sudo yum install fail2ban -y)

Fail2Ban Servisini Başlatma ve Etkinleştirme:

Kurulum tamamlandıktan sonra, Fail2Ban servisinin sistem başlangıcında otomatik olarak başlamasını sağlayın ve servisi başlatın:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Servis Durumunu Kontrol Etme:

Servisin düzgün çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:

sudo systemctl status fail2ban

Çıktıda “active (running)” ifadesini görmelisiniz.

Yapılandırma

Fail2Ban’in temel yapılandırması /etc/fail2ban/jail.conf dosyasında bulunur. Ancak, bu dosyayı doğrudan düzenlemek yerine, güncellemeler sırasında değişikliklerinizin kaybolmaması için jail.local adında bir kopya oluşturup onu düzenlemeniz önerilir.

jail.local Dosyasını Oluşturma:

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

jail.local Dosyasını Düzenleme:

Şimdi jail.local dosyasını tercih ettiğiniz metin düzenleyici ile açın (örneğin, Nano veya Vim):

sudo nano /etc/fail2ban/jail.local

Bu dosyanın içinde çeşitli “jail” (hapishane) tanımları bulunur. SSH için olanı [sshd] başlığı altındadır. Aşağıdaki parametreleri bulup düzenleyebilir veya dosyanın başına genel ayarları ekleyebilirsiniz:

  • ignoreip: Fail2Ban’in asla engellememesi gereken IP adreslerini (beyaz liste) buraya virgülle ayırarak ekleyin. Kendi IP adresinizi buraya eklemeniz çok önemlidir, aksi takdirde yanlış bir yapılandırma sonucu kendi sunucunuza erişiminiz engellenebilir.
  • bantime: Bir IP adresinin engellendiği süreyi belirler (saniye, dakika veya saat cinsinden). Örneğin, 10m (10 dakika), 1h (1 saat).
  • findtime: Belirli sayıda başarısız denemenin gerçekleşmesi gereken zaman aralığı. Bu süre içinde maxretry sayısına ulaşılırsa, IP engellenir.
  • maxretry: Bir IP adresinin engellenmeden önce kaç başarısız deneme yapmasına izin verildiği.

SSH Jail’i Etkinleştirme ve Yapılandırma:

jail.local dosyasında [sshd] bölümünü bulun. Genellikle bu bölüm aşağıdaki gibi görünecektir:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log  ; Debian/Ubuntu için, CentOS/RHEL için /var/log/secure
maxretry = 3
bantime = 1h
findtime = 10m
ignoreip = 127.0.0.1/8 ::1 
  • enabled = true: Bu jail’i etkinleştirir. Varsayılan olarak false olabilir.
  • port = ssh: SSH servisini izleyeceğini belirtir. SSH genellikle 22. portta çalıştığı için ssh yazmak yeterlidir, ancak özel bir port kullanıyorsanız buraya o port numarasını (örn: port = 2222) yazmalısınız.
  • filter = sshd: Hangi filtreyi kullanacağını belirtir. Bu filtre, SSH loglarını analiz etmek için önceden tanımlanmış bir kural setidir.
  • logpath: SSH loglarının bulunduğu yol. Debian/Ubuntu için genellikle /var/log/auth.log, CentOS/RHEL için ise /var/log/secure‘dur. Kendi sisteminize göre doğrulamanız önemlidir.
  • maxretry: Varsayılan olarak 3 veya 5 olabilir. Ben 3 denemenin yeterli olduğunu düşünüyorum.
  • bantime: 1 saat (1h) oldukça makul bir başlangıç süresidir.
  • findtime: 10 dakika (10m) içinde 3 başarısız deneme yapılırsa engelleneceği anlamına gelir.
  • ignoreip: Kendi IP adresinizi ve iç ağınızdaki güvenli IP’leri eklemeyi unutmayın!

Yapılandırma dosyasını kaydettikten sonra, değişikliklerin etkili olması için Fail2Ban servisini yeniden yüklemelisiniz:

sudo systemctl reload fail2ban

Fail2Ban Durumunu Kontrol Etme:

Tüm aktif jail’leri görmek için:

sudo fail2ban-client status

Belirli bir jail’in (örneğin sshd) durumunu görmek ve engellenen IP’leri listelemek için:

sudo fail2ban-client status sshd

Bu komut, sshd jail’inin kaç IP adresini engellediğini ve bu IP’lerin listesini gösterecektir.

Sonuç

Fail2Ban, sunucunuzun SSH (ve diğer servislerinizin) brute-force saldırılarına karşı direncini önemli ölçüde artıran güçlü ve esnek bir araçtır. Kurulumu ve yapılandırması nispeten kolay olmakla birlikte, sunucunuzun güvenliği için büyük bir katkı sağlar.

Ancak unutmayın ki Fail2Ban, kapsamlı bir güvenlik stratejisinin yalnızca bir parçasıdır. SSH güvenliğini daha da artırmak için şunları da uygulamanız önerilir:

  • Zayıf parolaları engelleyin ve mümkünse sadece SSH anahtarı ile kimlik doğrulamayı kullanın.
  • Varsayılan SSH portunu (22) değiştirin.
  • Güvenlik duvarı (UFW, firewalld vb.) kuralları ile yalnızca belirli IP adreslerinden veya bölgelerden SSH erişimine izin verin.
  • SSH yapılandırmasında (/etc/ssh/sshd_config) PermitRootLogin no ve PasswordAuthentication no gibi ek güvenlik önlemleri alın.

Bu önlemleri birleştirerek, sunucunuzun güvenlik duruşunu önemli ölçüde güçlendirebilirsiniz. Güvenliğiniz için her zaman proaktif olun ve sistem loglarınızı düzenli olarak kontrol etmeyi unutmayın!

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