İçeriğe geç

GüvenlikSunucu sıkılaştırma

Fail2ban veya CrowdSec ile kaba kuvvet saldırılarını engelleyin

Linux sunucunuzdaki tekrarlanan giriş denemelerini durdurun: Fail2ban'ı veya güvenlik duvarı bouncer'lı CrowdSec'i kurun, engelleri test edip kaldırın.

  • Orta
  • 20 dk okuma
  • Güncellendi

Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13

Bu sayfada
  1. Başlamadan önce
  2. A seçeneği: Fail2ban
  3. Kurulum
  4. Yapılandırma
  5. Doğrulama
  6. Bir adresin engelini kaldırın
  7. B seçeneği: CrowdSec
  8. Kurulum
  9. Doğrulama
  10. Kararları görün ve kaldırın
  11. SSH'den fazlasını koruyun
  12. Sorun giderme
  13. Sonraki adımlar

İnternetteki her sunucu sürekli bir giriş denemesi akışı görür. Fail2ban ve CrowdSec kayıtlarınızı okur, tekrarlanan başarısızlıkları tanır ve sorunlu adresleri güvenlik duvarında bir süreliğine engeller. Bu rehber araçlardan birini Ubuntu 24.04/26.04 veya Debian 12/13 üzerinde kurar ve engellerin nasıl test edilip geri alınacağını gösterir.

Başlamadan önce

  • SSH ve güvenlik duvarınız zaten kurulu: bkz. yeni bir Linux sunucuyu güvenli hale getirin.
  • Engellerden hariç tutabilmek için kendi genel IP adresinizi bilin.
  • SSH için iki araçtan birini seçin. Farklı kayıt kaynakları için birleştirebilirsiniz, aynı kaynakta değil.

A seçeneği: Fail2ban

Kurulum

Bash
sudo apt update
sudo apt install fail2ban python3-systemd

Yapılandırma

jail.conf dosyasını asla düzenlemeyin; ayarlarınızı onu geçersiz kılan jail.local dosyasına yazın:

Bash
sudo nano /etc/fail2ban/jail.local
INI
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 ::1 198.51.100.7

[sshd]
enabled = true
backend = systemd
  • backend = systemd, SSH olaylarını günlükten (journal) okur. Debian 12 ve sonrası artık varsayılan olarak /var/log/auth.log yazmadığından orada bu ayar gerekir; Ubuntu'da da çalışır.
  • ignoreip: 198.51.100.7 yerine kendi IP adresinizi yazın.
  • SSH'yi başka bir porta taşıdıysanız [sshd] bölümüne port = 2222 ekleyin.

Yeniden başlatın ve etkinleştirin:

Bash
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban

Doğrulama

Bash
sudo fail2ban-client status
sudo fail2ban-client status sshd

İkinci komut jail'in filtre sonuçlarını listeler: Currently failed, Total failed ve Banned IP list. Başka bir ağdan (yok sayılan adresiniz dışından) birkaç hatalı giriş deneyin; Total failed sayacı artar ve maxretry başarısızlıktan sonra adres engellenenler listesinde görünür.

Bir adresin engelini kaldırın

Bash
sudo fail2ban-client set sshd unbanip 203.0.113.50

B seçeneği: CrowdSec

CrowdSec iki parçadan oluşur: güvenlik motoru kayıtları okuyup kararlar verir, bir bouncer ise bunları burada güvenlik duvarında uygular.

Kurulum

CrowdSec belgeleri, Debian ve Ubuntu için resmî paket deposunun nasıl ekleneceğini anlatır; onu izleyin, ardından motoru kurun:

Bash
sudo apt update
sudo apt install crowdsec

Kurulum programı SSH ve web sunucuları gibi yaygın servisleri algılar ve uygun koleksiyonları kurar. Güvenlik duvarı altyapınıza uyan bouncer'ı ekleyin:

nftables

Bash
sudo apt install crowdsec-firewall-bouncer-nftables

iptables

Bash
sudo apt install crowdsec-firewall-bouncer-iptables

Doğrulama

Bash
sudo cscli collections list
sudo cscli bouncers list
sudo cscli metrics

collections list çıktısında crowdsecurity/sshd (ve crowdsecurity/linux) bulunmalı, bouncers list güvenlik duvarı bouncer'ınızı geçerli olarak göstermeli, metrics ise hangi kayıt dosyalarının okunduğunu ve kaç satırın çözümlendiğini göstermelidir.

Kararları görün ve kaldırın

Bash
sudo cscli decisions list
sudo cscli decisions delete --ip 203.0.113.50

Asla engellenmemek için adresinizi CrowdSec belgelerinde anlatıldığı gibi bir izin listesine ekleyin.

SSH'den fazlasını koruyun

  • Fail2ban nginx kimlik doğrulaması, Postfix ve Dovecot gibi birçok servis için filtrelerle gelir. Bir jail'i jail.local dosyasına bölümünü enabled = true ve doğru kayıt yolu veya arka uçla ekleyerek etkinleştirin.
  • CrowdSec, koleksiyonları sudo cscli collections install ve koleksiyon adıyla (örneğin nginx veya WordPress için) kurar ve sudo systemctl reload crowdsec ile yeniden yükler.

Sorun giderme

Fail2ban başlamıyor: "Have not found any log file for sshd jail". Debian 12 ve sonrasının oluşturmadığı /var/log/auth.log dosyasını arıyor. [sshd] bölümünde backend = systemd ayarlayın ve python3-systemd paketini kurun.

Sayaçlar sıfırda kalıyor. Jail yanlış kaynağı okuyor ya da SSH kayıt biçimi değişmiş. sudo fail2ban-client status sshd ile kontrol edin ve filtreyi günlüğe karşı test edin: sudo fail2ban-regex systemd-journal sshd.

CrowdSec kararları var ama hiçbir şey engellenmiyor. Bouncer eksik veya kayıtlı değil. sudo cscli bouncers list ve sudo systemctl status crowdsec-firewall-bouncer ile kontrol edin.

Kendinizi engellediniz. Konsolu ve yukarıdaki engel kaldırma komutlarını kullanın, ardından adresinizi ignoreip veya CrowdSec izin listesine ekleyin. Bkz. güvenlik duvarı değişikliğinden sonra erişimi kaybetmek.

Sonraki adımlar

Sık sorulan sorular

SSH yalnızca anahtar kabul ediyorsa Fail2ban gerekli mi?

Yalnızca anahtarlı SSH'ye kaba kuvvet uygulanamaz; bu yüzden Fail2ban orada esas olarak kayıt gürültüsünü azaltır. En çok posta, FTP veya web giriş sayfaları gibi hâlâ şifre kabul eden servislerde işe yarar.

Fail2ban mı, CrowdSec mi seçmeliyim?

Fail2ban küçük, yerel ve anlaşılması kolaydır. CrowdSec kutudan çıktığı haliyle daha fazla kayıt türünü çözümler ve topluluk engelleme listelerini kullanabilir. Her kayıt kaynağı için birini seçin; ikisini aynı kayıtlarda çalıştırmak yalnızca işi tekrarlar.

Kendimi engelledim. Nasıl geri girerim?

Başka bir ağdan veya web konsolundan bağlanın, ardından engeli adresinizle fail2ban-client set sshd unbanip ya da cscli decisions delete --ip ile kaldırın. Kendi IP'nizi yok sayma veya izin listesine ekleyin.

Bu araçlar DDoS saldırılarına karşı korur mu?

Hayır. Tek tek adreslerden gelen kayıt satırlarına tepki verirler; bu şifre tahminine ve kötüye kullanan istemcilere karşı işe yarar, büyük trafik sellerine karşı değil. Bunlar için DDoS temelleri rehberimize bakın.

Docker container'larıyla çalışırlar mı?

Engeller ana makinenin güvenlik duvarına uygulanır, Docker ise portları kendi kurallarıyla yayınlar; bu yüzden container'lara giden trafik engelleri atlayabilir. Engelleme eylemini Docker için yapılandırın ya da trafiği ana makinedeki bir ters proxy'ye bırakın.

Kaynaklar

Şifre Oluştur

Lütfen onaylayın