Skip to main content
  1. Posts/

Implementasi Traefik dengan CrowdSec

·3 mins·
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
    [email protected]
    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