Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Ubuntu Sunucuda Fail2ban ile SSH Brute Force Saldırılarına Karşı Koyun 🛡️

stackor

Üye
Katılım
14 Mart 2026
Mesajlar
7
Ubuntu Sunucuda Fail2ban ile SSH Brute Force Saldırılarına Karşı Koyun 🛡️

Selam sistemciler! 🐧 Bugün, özellikle yeni açılmış ve internete maruz kalan sunucuların en büyük kabuslarından biri olan SSH brute force saldırılarına karşı nasıl etkili bir savunma hattı oluşturacağımızı konuşacağız. Sürekli yanlış parola denemeleriyle sunucunuzu yormaya çalışan bu otomatik botlara karşı, Fail2ban adlı harika bir araçla cevap vereceğiz. Hem de oldukça basit bir şekilde!

Fail2ban Nedir ve Nasıl Çalışır?

Fail2ban, temelde bir log dosyası izleyicisi ve iptables/firewalld yöneticisidir. Sürekli olarak belirlediğiniz servislerin (SSH, Nginx, Apache vs.) loglarını tarar. Örneğin, SSH için "Failed password" gibi belirli desenleri (pattern) arar. Bu deseni belirli bir IP adresinden belirli bir süre içinde (örn: 10 dakikada 5 kez) görürse, o IP adresini geçici veya kalıcı olarak sunucunuzun güvenlik duvarında engeller (banlar). Böylece saldırganın deneme yapmasını fiziksel olarak imkansız hale getirir. Akıllıca, değil mi? ⚙️

Adım 1: Fail2ban'ı Kuruyoruz

İlk iş, paket listemizi güncelleyip Fail2ban'ı kurmak. Ubuntu'nun varsayılan depolarında mevcut.

Bash:
sudo apt update
sudo apt install fail2ban -y

Kurulum bittiğinde, Fail2ban servisi otomatik olarak başlayacaktır. Durumunu kontrol etmek için:

Bash:
sudo systemctl status fail2ban

Active (running) yazısını görmelisiniz. 🖥️

Adım 2: Yapılandırma Dosyamızı Oluşturuyoruz

Fail2ban'ın ana yapılandırma dosyası `/etc/fail2ban/jail.conf`'dir. Ancak, bu dosyayı ASLA doğrudan düzenlemeyin! Paket güncellemeleriyle üzerine yazılabilir. Bunun yerine, kendi özel ayarlarımızı bir `local` dosyasında yapacağız.

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

Şimdi, bu `jail.local` dosyasını favori metin editörünüzle (nano, vim) açabiliriz.

Bash:
sudo nano /etc/fail2ban/jail.local

Adım 3: Temel SSH Koruma Ayarlarını Yapılandırıyoruz

Dosyayı açtığınızda bir sürü ayar göreceksiniz. En temel ve gerekli olanları değiştirelim. Aşağıdaki bölümleri bulun veya dosyanın sonuna ekleyin:

[DEFAULT] bölümü, tüm "jail"ler (hapishaneler/hizmetler) için geçerli genel ayarları içerir. Şunları ayarlamak iyi olur:

NGINX:
[DEFAULT]
# Yasaklanacak IP'nin adresini hangi arayüzde arayacağı.
ignorecommand = /path/to/script/ignorecommand
# Ban süresi (seconds, minutes, hours, days). 10 dakika iyi bir başlangıç.
bantime = 10m
# Bir IP'nin kaç başarısız denemeden sonra yasaklanacağı.
maxretry = 5
# Bu süre penceresi içindeki hatalar sayılır (seconds, minutes, hours, days).
findtime = 10m
# E-posta bildirimi almak isterseniz bu satırları düzenleyin.
# destemail = admin@bingunluk.com
# action = %(action_mwl)s

Şimdi asıl önemli kısım, SSH servisi için olan [sshd] jail'ini etkinleştirmek ve özelleştirmek. Dosyada [sshd] bölümünü arayın ve şu şekilde ayarlayın:

NGINX:
[sshd]
# SSH korumasını aç.
enabled = true
# Hangi portu dinleyecek? Varsayılan SSH portu 22'dir. Değiştirdiyseniz buraya yazın.
port = ssh
# Hangi log dosyasını izleyecek? Genellikle doğru yoldur.
logpath = %(sshd_log)s
# Sunucunuzda systemd journal kullanıyorsanız backend'i değiştirmek daha verimli olabilir.
backend = %(sshd_backend)s

Değişiklikleri kaydedip (nano için Ctrl+X, sonra Y, sonra Enter) çıkın.

ÖNEMLİ NOT: Eğer SSH portunuzu varsayılan 22'den (örneğin 2222'ye) değiştirdiyseniz, `port = ssh` satırını `port = 2222` olarak güncellemeniz ŞART. Aksi takdirde Fail2ban doğru portu engelleyemez! 🌐

Adım 4: Fail2ban Servisini Yeniden Başlatıyoruz

Ayarlarımızın etkili olması için servisi yeniden başlatalım.

Bash:
sudo systemctl restart fail2ban

Adım 5: Durumu Kontrol Ediyoruz

Her şeyin yolunda gidip gitmediğini birkaç komutla kontrol edelim.

* Fail2ban servis durumu:
Bash:
sudo systemctl status fail2ban

* Aktif olan jail'leri (koruma altındaki servisleri) listelemek için:
Bash:
sudo fail2ban-client status

Çıktıda `sshd` jail'inin "Status for the jail: sshd" başlığı altında listelendiğini ve "Currently banned:" IP sayısını (henüz yasak yoksa 0) göreceksiniz.

* SSH jail'inin detaylı durumunu görmek için:
Bash:
sudo fail2ban-client status sshd

Bu komut, yasaklanmış IP listesini de gösterecektir.

Birkaç İleri Seviye İpucu

  • Beyaz Liste (ignoreip): `jail.local` dosyasındaki `[DEFAULT]` bölümünde `ignoreip` satırını bulun. Kendi sabit IP'nizi veya güvendiğiniz ağları buraya ekleyin (boşlukla ayırarak). Örn: `ignoreip = 127.0.0.1/8 192.168.1.0/24 88.255.100.50`. Bu IP'ler asla yasaklanmaz.
  • Ban Süresini Uzatmak: Çok agresif saldırılarda `bantime = 24h` veya `bantime = 1d` yapabilirsiniz. Hatta kalıcı yasak için `bantime = -1` (eksi bir) kullanılır.
  • E-posta Bildirimi: Yukarıda yorum satırı olan `destemail` ve `action` satırlarının başındaki `#` işaretini kaldırıp e-posta adresinizi girerseniz, bir IP yasaklandığında size e-posta ile bilgi gelir.
  • Daha Fazla Jail: Fail2ban sadece SSH için değil; Nginx, Apache, MySQL, vs. için de yapılandırılabilir. `/etc/fail2ban/jail.local` dosyasında örnekleri mevcuttur.

İşte bu kadar! Artık sunucunuz, otomatik parola deneme saldırılarına karşı çok daha güçlü bir korumaya sahip. 🛡️ Fail2ban, kurulumu basit ama etkisi devasa olan araçlardan biri. Unutmayın, güvenlik bir zırhtır, tek bir halkadan oluşmaz. Fail2ban, bu zincirin çok önemli bir halkası.

Peki siz, sunucularınızda brute force saldırılarına karşı başka hangi yöntemleri kullanıyorsunuz? SSH portunu değiştirmek mi, anahtar tabanlı kimlik doğrulama mı, yoksa başka harika Fail2ban ayarlarınız mı var? Yorumlarda deneyimlerinizi paylaşın, hep birlikte öğrenelim!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri