# 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.

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

İ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](/guides/secure-a-new-linux-server).
- 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](/guides/locked-out-after-firewall-change).

## Sonraki adımlar

- SSH'nin kendisini saldırıya daha dayanıklı yapın: [SSH sıkılaştırma](/guides/ssh-hardening).
- Trafik selleri farklı bir sorundur: [DDoS korumasının temelleri](/guides/ddos-protection-basics).

## 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.

---

Kaynak: <https://hyperdc.com/tr/guides/security/fail2ban-crowdsec>\
Son güncelleme: 2026-10-09
