# fail2ban kurulumu: SSH koruması ve engellenen IP'yi açma

https://kervanhosting.com/bilgi-bankasi/makale/fail2ban-kurulumu-ssh-korumasi-engellenen-ip-yi-acma

İnternete açık bir SSH servisine sürekli parola denemesi gelir; bu normaldir. **fail2ban**, günlükleri izleyip kısa sürede çok sayıda başarısız giriş yapan IP adreslerini güvenlik duvarında geçici olarak engelleyen ücretsiz bir araçtır. Saldırıları tamamen önlemez ama gürültüyü ve parola tahmin riskini ciddi biçimde azaltır. En iyi koruma yine de SSH anahtarı ve parola girişinin kapatılmasıdır; fail2ban ek bir katmandır.

## Kurulum

```
sudo apt update
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status
```

Ubuntu paketinde SSH koruması (`sshd` jail'i) varsayılan olarak etkindir. Son komut etkin jail'lerin listesini gösterir.

## Ayarları kendinize göre yapın

Ana dosya `/etc/fail2ban/jail.conf`'u doğrudan düzenlemeyin (güncellemede ezilir). Bunun yerine `/etc/fail2ban/jail.local` oluşturun:

```
[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 ::1 198.51.100.7

[sshd]
enabled = true
backend = systemd
```

- `maxretry`: izin verilen başarısız deneme sayısı (5).
- `findtime`: bu sürede (10 dakika) `maxretry` aşılırsa engellenir.
- `bantime`: engelin süresi (1 saat). Tekrar eden saldırganlar için daha uzun yazabilirsiniz.
- `ignoreip`: **asla engellenmeyecek adresler**. Kendi sabit IP adresinizi buraya ekleyin ki yanlış parolayla kendinizi dışarıda bırakmayın.
- `backend = systemd`: Debian 12 ve yeni Ubuntu'da SSH günlüğü journal'dadır; fail2ban'a oradan okumasını söylersiniz.

Uygulayın: `sudo systemctl restart fail2ban`. SSH portunu değiştirdiyseniz `[sshd]` bölümüne `port = 2222` ekleyin: [SSH port değiştirme](https://kervanhosting.com/bilgi-bankasi/makale/ssh-portunu-degistirme-ubuntu-24-04-ssh-socket).

## Durumu izleme

```
sudo fail2ban-client status sshd
sudo tail -n 20 /var/log/fail2ban.log
```

İlk komut anlık engellenen adreslerin listesini ve toplam sayıları gösterir. Günlükte `Ban` ve `Unban` satırlarını görürsünüz.

## Engellenen bir IP'yi açma

Kendiniz ya da bir ekip arkadaşınız engellendiyse (SSH'ta "Connection timed out" görürsünüz: [zaman aşımı](https://kervanhosting.com/bilgi-bankasi/makale/ssh-connection-timed-out-zaman-asimi-nedenleri-ve-cozumu)), sunucuya **VNC Konsol** ya da başka bir IP'den girip:

```
sudo fail2ban-client set sshd unbanip 198.51.100.7
```

Kalıcı çözüm olarak adresi `ignoreip` listesine ekleyin. IP adresiniz sık değişiyorsa (ev interneti) yanlış parolayla engellenmemek için SSH anahtarı kullanmak daha pratiktir: [SSH anahtarı](https://kervanhosting.com/bilgi-bankasi/makale/ssh-anahtari-nedir-parola-yerine-nasil-kullanirim).

## Sınırlar ve ipuçları

- fail2ban yalnızca günlüklerde iz bırakan saldırıları görür. Dağıtık saldırılarda (her biri birkaç deneme yapan çok sayıda IP) etkisi sınırlıdır; asıl çözüm parola girişini kapatmaktır.
- Başka servisler için de jail açılabilir (Nginx kimlik doğrulama, Postfix); her biri için doğru filtre gerekir.
- Çok sayıda engel güvenlik duvarı tablosunu şişirebilir; yine de pratikte sorun çıkarmaz.
- Docker ve fail2ban birlikte kullanılırsa engeller konteyner trafiğine uygulanmayabilir.

Genel koruma için: [brute force koruması](https://kervanhosting.com/bilgi-bankasi/makale/bilinmeyen-girisleri-brute-force-nasil-engellerim) ve [yetkisiz erişim kontrol listesi](https://kervanhosting.com/bilgi-bankasi/makale/sunucuma-yetkisiz-erisim-oldu-mu-kontrol-listesi).

## Sık sorulanlar

### Kendi IP'mi engelledim ve konsola da erişemiyorum.

VNC Konsol IP'den bağımsız çalıştığı için panelden her zaman girebilirsiniz: [VNC Konsol](https://kervanhosting.com/bilgi-bankasi/makale/konsol-vnc-nedir-baglanamadigimda-sunucuya-nasil-girerim).

### fail2ban ile UFW birlikte çalışır mı?

Evet; fail2ban kurallarını iptables/nftables üzerinden ekler ve UFW ile birlikte sorunsuz çalışır.

### Engeller yeniden başlatınca kayboluyor.

Varsayılan olarak engeller bellekte tutulur ve fail2ban yeniden başlayınca günlükten yeniden hesaplanır. Kalıcı engel için tekrar eden saldırganlara uzun `bantime` verebilirsiniz.

**İlgili makaleler**

- [Bilinmeyen girişleri (brute force) nasıl engellerim?](https://kervanhosting.com/bilgi-bankasi/makale/bilinmeyen-girisleri-brute-force-nasil-engellerim)
- [SSH "Connection timed out" hatası: nedenleri ve çözümü](https://kervanhosting.com/bilgi-bankasi/makale/ssh-connection-timed-out-zaman-asimi-nedenleri-ve-cozumu)
- [SSH anahtarı nedir? Parola yerine nasıl kullanırım?](https://kervanhosting.com/bilgi-bankasi/makale/ssh-anahtari-nedir-parola-yerine-nasil-kullanirim)

*Sorununuz çözülmediyse [destek talebi açın](https://kervanhosting.com/destek-taleplerim). Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.*
