Coolify’ı bir VPS üzerinde self-hosting yapmak size tam kontrol sağlar; ancak sunucu brute-force denemelerine, port taramalarına ve botlara açık hâle de gelebilir. Bu rehberde Traefik reverse proxy olarak çalışırken Coolify sunucusunu Fail2Ban ile güvenceye alacağız.
Fail2Ban neden kullanılır?
Fail2Ban şüpheli log desenlerini, başarısız SSH girişlerini ve hatalı HTTP isteklerini izler. Saldırgan IP’lerini iptables veya nftables firewall kurallarıyla engeller.
Fail2Ban kurulumu
sudo apt update
sudo apt install fail2ban -y
sudo systemctl status fail2ban
Varsayılanları ezmek için yerel yapılandırma oluşturun:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
bantime = 1d
findtime = 10m
maxretry = 5
SSH bölümünün etkin olduğundan emin olun:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Değişiklikleri uygulayın:
sudo systemctl restart fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshd
Traefik erişim loglarını açın
Traefik yapılandırmasına şu seçenekleri ekleyin:
- '--accesslog=true'
- '--accesslog.filepath=/traefik/access.log'
- '--accesslog.format=json'
Logların yazıldığını kontrol edin:
tail -f /data/coolify/proxy/access.log

Traefik için Fail2Ban filtresi oluşturun
/etc/fail2ban/filter.d/traefik-http.conf dosyasını oluşturun:
[Definition]
failregex = .*"ClientHost":"<HOST>".*"OriginStatus":(404|403|401|429|502|503|504)
ignoreregex =
Ardından /etc/fail2ban/jail.d/traefik-http.conf dosyasını oluşturun:
[traefik-http]
enabled = true
backend = auto
filter = traefik-http
logpath = /data/coolify/proxy/access.log
maxretry = 5
findtime = 60
bantime = 3600
banaction = nftables
sudo systemctl restart fail2ban
sudo fail2ban-client status traefik-http
sudo cat /var/log/fail2ban.log
SSH engellemelerini Traefik’e aktarın
Traefik Fail2Ban plugin’ini etkinleştirin:
- '--experimental.plugins.fail2ban.modulename=github.com/tomMoulard/fail2ban'
- '--experimental.plugins.fail2ban.version=v0.8.3'
labels:
- traefik.http.routers.traefik.middlewares=fail2ban@file
- traefik.https.routers.traefik.middlewares=fail2ban@file
Middleware dosyası fail2ban.yml şöyle olabilir:
http:
middlewares:
fail2ban:
plugin:
fail2ban:
logPath: /traefik/access.log
maxretry: 5
findtime: 60
bantime: 600
statuscodes:
- 401
- 403
- 404
- 429
- 500
- 502
- 503
- 504
denylist:
files:
- "/traefik/denylist.txt"

SSH jail engellemelerini Traefik’in okuyacağı dosyaya aktarın:
fail2ban-client status sshd | grep 'Banned IP list' | cut -d ':' -f2 | tr ',' '\n' > /data/coolify/proxy/denylist.txt
Cloudflare veya Cloudflared Tunnel kullanıyorsanız Traefik’in X-Forwarded-For başlıklarına güvenecek şekilde yapılandırıldığından emin olun. Aksi durumda gerçek saldırgan yerine proxy IP’si engellenebilir.
Sonuç
Fail2Ban Coolify, SSH ve Traefik üzerinde çalışır; ancak web trafiği ve Docker tabanlı modern stack’lerde ek script’ler gerektirir. Daha kapsamlı ve dağıtık koruma için CrowdSec ile Coolify güvenlik rehberine bakabilirsiniz.
