İçeriğe geç
Yazılara dön

~/writing saha notu

  • coolify
  • fail2ban
  • security
  • self-hosting
  • ubuntu

Coolify Sunucusunu Fail2Ban ile Güvenceye Alma

Mustafa Ramx pixel avatar Mustafa Ramx15 Haz 20252 dk okumaGüncellendi 9 Kas 2025
Kapak görseli: Coolify Sunucusunu Fail2Ban ile Güvenceye Alma
Bu sayfada6 bölüm
  1. Fail2Ban neden kullanılır?
  2. Fail2Ban kurulumu
  3. Traefik erişim loglarını açın
  4. Traefik için Fail2Ban filtresi oluşturun
  5. SSH engellemelerini Traefik’e aktarın
  6. Sonuç

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

Coolify tarafından yönetilen Traefik compose komutunda erişim logları

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"

Fail2Ban Traefik plugin middleware yapılandırması

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.

// bu yazıyı paylaş

X’te paylaşLinkedIn