Skip to main content
  1. Posts/

Implementasi Traefik dengan CrowdSec

·3 mins·
traefik traefik crowdsec
Table of Contents

Traefik dan CrowdSec adalah dua alat yang sangat berguna untuk mengamankan serta mengelola trafik web.

  • Traefik berperan sebagai reverse proxy untuk menangani trafik masuk.
  • CrowdSec mendeteksi dan merespons ancaman secara otomatis.

Dengan integrasi keduanya, sistem dapat memberikan respons otomatis terhadap aktivitas mencurigakan, misalnya pemblokiran IP yang mencoba melakukan serangan.

Prasyarat
#

  • Server sudah terinstal Docker. Jika belum, instal dengan perintah berikut:

    curl -L get.docker.com | bash
    
  • Sudah memiliki akun di CrowdSec Console.

Setup Traefik + CrowdSec
#

  1. Clone repository GitHub

    git clone https://github.com/devetop/crowdsec-traefik.git
    
  2. Masuk ke folder project dan buat file .env dari template .env-example:

    cd crowdsec-traefik
    cp .env-example .env
    
  3. Edit file .env untuk menentukan nama domain masing-masing:

    DOMAIN_TRAEFIK=traefik.yourdomain.com   # domain untuk dashboard Traefik
    DOMAIN_TEST=test.yourdomain.com         # domain untuk testing web
    DOMAIN_WK=captcha.yourdomain.com        # domain untuk captcha CrowdSec
    
  4. (Opsional) Gunakan Cloudflare untuk SSL (DNS Validation) Tambahkan konfigurasi berikut di .env:

    CERTRESOLVER=letsencrypt
    CLOUDFLARE_EMAIL=your-email@yourdomain.com
    CLOUDFLARE_API_KEY=your_secret
    
  5. Jalankan docker compose

    docker compose up -d
    
  6. Enroll CrowdSec ke Console Setelah container berjalan, hubungkan ke CrowdSec Console:

    docker compose exec -it crowdsec cscli console enroll -e context cmfkytjmwXXXXXXXX
    
    Ganti cmfkytjmwXXXXXXXX dengan Enrollment Key dari CrowdSec Console.
  7. Tambahkan bouncer untuk Traefik

    docker compose exec -it crowdsec cscli bouncers add traefik-bouncer
    

    Hasilnya akan menampilkan API key, misalnya:

    API key for 'traefik-bouncer':
       DPzmM+g4IvvVGYJBL5dj9p/WTHG+lJqY2jBVQRb/Z14
    
    Please keep this key since you will not be able to retrieve it!
    
  8. Update .env dengan API Key bouncer

    CROWDSEC_BOUNCER_API_KEY=DPzmM+g4IvvVGYJBL5dj9p/WTHG+lJqY2jBVQRb/Z14
    
  9. Edit file crowdsec.yml lalu sesuaikan konfigurasi berikut:

    crowdsecLapiKey: "DPzmM+g4IvvVGYJBL5dj9p/WTHG+lJqY2jBVQRb/Z14"
    captchaCustomJsURL: "https://captcha.yourdomain.com:8443/fast.js"
    captchaCustomValidateURL: "https://captcha.yourdomain.com:8443/v0/siteverify"
    
  10. Restart container

    docker compose down
    docker compose up -d
    

Test (verifikasi CrowdSec bekerja)
#

  1. Uji akses web Akses URL berikut di browser untuk memicu deteksi:

    https://test.yourdomain.com/.env
    
    test 1
  2. Uji dengan Gobuster (opsional, untuk brute-force direktori) Contoh perintah (pastikan gobuster terpasang dan file wordlist ada):

    gobuster dir -k -e -fr -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -u https://test.yourdomain.com/
    

    Opsi penjelasan singkat:

    • -k : ignore TLS certificate validation (jika sertifikat belum valid)
    • -e : tampilkan ekstensi file
    • -f : tampilkan full URL pada output
    • -r : follow redirects
  3. Lihat log CrowdSec untuk melihat IP yang dibanned Jalankan (di folder project dengan docker compose):

    docker compose logs crowdsec | grep -Ei "ban|banned|ban on ip|performed"
    
  4. Ban IP secara manual Gunakan perintah berikut (sesuaikan metode dengan cara Anda menjalankan container):

    docker compose exec -it crowdsec cscli decisions add --ip <IP>
    
  5. Unban IP

    docker compose exec -it crowdsec cscli decisions remove --ip <IP>
    

CrowdSec CLI Cheatsheet
#

Status & Info
#

cscli info                        # Tampilkan status dan ringkasan CrowdSec
cscli metrics                     # Tampilkan runtime metrics
cscli version                     # Versi CrowdSec & cscli

Bouncers
#

cscli bouncers list               # Daftar bouncer yang terdaftar
cscli bouncers add <name>         # Tambah bouncer baru (mengembalikan API key)
cscli bouncers delete <name>      # Hapus bouncer

Collections & Parsers
#

cscli collections list            # Daftar koleksi yang terpasang
cscli collections install crowdsecurity/linux   # Install koleksi
cscli parsers list                # Daftar parser yang terpasang
cscli parsers inspect <name>      # Detail parser

Scenarios & Decisions
#

cscli scenarios list              # Daftar skenario deteksi
cscli decisions list              # Daftar keputusan (ban/quarantine) aktif
cscli decisions add --ip <IP> --reason "manual ban"   # Ban IP manual
cscli decisions delete --ip <IP>                      # Hapus keputusan ban

Alerts & Logs
#

cscli alerts list                 # Daftar alert yang terpicu
cscli alerts delete --all         # Hapus semua alert
cscli console enroll              # Hubungkan ke CrowdSec Console

Configuration & Validation
#

crowdsec -c /etc/crowdsec/config.yaml -d   # Jalankan CrowdSec dengan debug
cscli config show                         # Tampilkan konfigurasi saat ini
cscli config backup                       # Backup konfigurasi & data

Update & Upgrade
#

cscli update                     # Update komponen CrowdSec (collections, parsers, scenarios)
cscli upgrade                    # Upgrade CrowdSec ke versi terbaru

Log Pipeline Debugger
#

cscli explain --file ./access.log --type nginx
cscli explain --log "Sep 29 15:41:22 sshd[1234]: Failed password for root from 1.2.3.4 port 22" --type syslog
tail -n 5 access.log | cscli explain --type nginx -f

Related

HTTP Middleware Traefik
·3 mins
traefik traefik
Kombinasikan Beberapa Middleware dengan Middleware Chain
·1 min
traefik traefik docker
Kontrol Jumlah Request di Traefik
·1 min
traefik traefik docker
Menambahkan Security Headers di Traefik
·1 min
traefik traefik docker
Basic Auth dan Digest Auth dengan Traefik
·2 mins
traefik docker traefik
Custom Error Pages on Traefik
·1 min
traefik docker traefik