BYTEBOOK
Bytebook Docs • Caddy Security / Web Hardening / SSL
← Înapoi la Bytebook
PATH: DOCS / CADDY_SECURITY_GUIDE.HTML _
[00:00:00] DOCS_READY
DEMOS Main Archive JAVA LABS Enterprise PY LABS Neural Assets NODE LABS Async Runtime INFRA Control Center
SECURITY & REVERSE PROXY GUIDES • CADDY SERVER HARDENING

Ghid Securizare Avansată și Hardening pentru Caddy Server

Acest ghid descrie modul în care transformi fișierul /etc/caddy/Caddyfile de pe VPS-ul tău (63.250.40.142) într-un scut de protecție de nivel enterprise pentru toate subdomeniile *.bytebook.xyz.

1. Utilizarea Snippet-urilor în Caddyfile

În loc să repeți aceleași reguli de securitate pentru fiecare subdomeniu (Node, Python, Java, Portainer, etc.), Caddy permite definirea de blocuri de cod reutilizabile numite Snippets folosind sintaxa (nume_snippet).

2. Anteturi de Securitate HTTP (Security Headers)

Adăugarea acestor anteturi protejează aplicațiile împotriva atacurilor XSS, Clickjacking, MIME-sniffing și forțează conexiunile criptate HTTPS:

• Strict-Transport-Security (HSTS): Obligă browserele să folosească doar HTTPS timp de 1 an.

• X-Frame-Options DENY: Împiedică încărcarea site-ului în iframe-uri (protecție Anti-Clickjacking).

• X-Content-Type-Options nosniff: Blochează browserele din a ghici tipurile MIME neclare.

• Content-Security-Policy (CSP): Restricționează sursele de unde se pot executa scripturi.

(security_headers) {
    header {
        # Strict Transport Security (HSTS)
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        
        # Protecție împotriva Clickjacking
        X-Frame-Options "DENY"
        
        # Protecție împotriva MIME Sniffing
        X-Content-Type-Options "nosniff"
        
        # Referrer Policy
        Referrer-Policy "strict-origin-when-cross-origin"
        
        # Elimină antetul "Server: Caddy" pentru obfuscare
        -Server
    }
}

3. Configurare Politici CORS (Cross-Origin Resource Sharing)

Dacă aplicația ta frontend (React / Angular) apelează API-uri din alt subdomeniu (Node.js, FastAPI sau Spring Boot), poți permite doar domeniilor tale specifice accesul:

(cors_headers) {
    header {
        Access-Control-Allow-Origin "https://bytebook.xyz https://react-demo.bytebook.xyz"
        Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
        Access-Control-Allow-Headers "Content-Type, Authorization"
    }
}

4. Protejare cu Parolă HTTP (Basic Auth Hash)

Pentru subdomenii sensibile (precum dashboards sau panouri interne de administrare), poți adăuga un strat suplimentar de autentificare direct în Caddy:

  1. Generează hash-ul parolei cu ajutorul comenzii interne Caddy:
    caddy hash-password --plaintext "ParolaTaSuperSecurizata2026!"

    (Exemplu hash rezultat: `$2a$14$Z6R...`).

  2. Adaugă blocul basicauth în Caddyfile:
    basicauth / * {
        admin $2a$14$Z6R... # Hash-ul generat mai sus
    }

5. Blocare BOT-i Malțioși și Restricționare IP-uri

Poți bloca accesul scannerelor automate și botilor cunoscuți verificând antetul User-Agent sau permițând accesul doar de pe IP-ul tău personal:

(block_bad_bots) {
    @bad_bots {
        header User-Agent *sqlmap*
        header User-Agent *nikto*
        header User-Agent *censys*
        header User-Agent *nmap*
    }
    respond @bad_bots "Acces Interzis!" 403
}

6. Protocol TLS 1.3 & Compresie Zstd

Configurează Caddy să accepte doar protocoale moderne criptografice (TLS 1.2 și TLS 1.3) și activează compresia nativă ultra-rapidă zstd și gzip:

(global_hardening) {
    tls {
        protocols tls1.2 tls1.3
    }
    encode zstd gzip
}

# Exemplu de Caddyfile Complet de Producție

Iată cum arată fișierul tău /etc/caddy/Caddyfile securizat complet:

# ==========================================
# SNIPPETS REUTILIZABILE
# ==========================================
(security_headers) {
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        X-Frame-Options "DENY"
        X-Content-Type-Options "nosniff"
        Referrer-Policy "strict-origin-when-cross-origin"
        -Server
    }
}

(common_config) {
    import security_headers
    encode zstd gzip
}

# ==========================================
# CONFIGURARE SUBDOMENII
# ==========================================

# Site Portal Principale
bytebook.xyz {
    import common_config
    root * /var/www/bytebook
    file_server
}

# Subdomeniu Node.js Express
node-demo.bytebook.xyz {
    import common_config
    reverse_proxy localhost:3000
}

# Subdomeniu Python FastAPI
py-demo.bytebook.xyz {
    import common_config
    reverse_proxy localhost:8000
}

# Subdomeniu Java Spring Cloud API Gateway
api.bytebook.xyz {
    import common_config
    reverse_proxy localhost:8080
}

# Panou Administrare Portainer (Protejat cu BasicAuth)
portainer.bytebook.xyz {
    import common_config
    basicauth / * {
        admin $2a$14$Z6R... # Hash-ul generat
    }
    reverse_proxy localhost:9000
}

Comenzi de Validare și Reload

# 1. Verifică sintaxa Caddyfile fără a opri serverul
caddy validate --config /etc/caddy/Caddyfile

# 2. Reîncarcă configurația în siguranță (Zero Downtime)
systemctl reload caddy