| name | architettura-fortezza |
| description | Progetta e installa un'infrastruttura di sicurezza a 4 livelli dove il cuore (dati e chiavi) è offline e staccato, lo scudo è invisibile agli scanner e il server reale è nascosto. Usare quando l'utente vuole un sistema "chiuso in una scatola", un reverse proxy invisibile, un'alternativa self-hosted a Cloudflare, server nascosto, VPN WireGuard, o backup offline irraggiungibili. Trigger - "fortezza", "scatola chiusa", "offline", "invisibile", "nascosto", "mini cloudflare", "reverse proxy", "air gap", "cassaforte", "WireGuard". |
Architettura Fortezza (4 livelli)
Quando l'utente vuole un sistema "blindato" dove il cuore è staccato e lo scudo è
invisibile, proporre e installare questa architettura. I file template completi
(proxy guardian, Caddy, docker-compose, firewall, WireGuard, backup cifrati) sono
in references/fortezza/ dentro questa skill; questa skill spiega come adattarli.
Premessa onesta da dare SEMPRE all'utente
La porta web pubblica non può essere invisibile: se i visitatori la raggiungono,
la raggiunge anche chi attacca. Invisibili possono diventare invece SSH,
l'amministrazione, il server reale e la cassaforte. E i DDoS volumetrici enormi
restano gestibili solo con un CDN/WAF esterno (es. Cloudflare free) davanti allo
scudo. Non promettere "non attaccabile": promettere "superficie ridotta al minimo,
cuore irraggiungibile, dati sempre recuperabili".
I quattro livelli
- Scudo invisibile — unica macchina pubblica. Caddy (HTTPS + rimozione
impronte) → proxy
guardian (WAF, rate limit, blocklist silenziosa, lockdown,
honeypot). Firewall stealth: solo 80/443 visibili, resto in DROP, niente ping.
- Server origine nascosto — sito + DB, nessuna porta pubblica, accetta solo
lo scudo via VPN. L'app ascolta sull'IP VPN, mai esposta dal provider.
- WireGuard — rete privata cifrata tra scudo, origine e admin. Non risponde
senza chiave valida → invisibile agli scanner. Solo gli
AllowedIPs passano.
- Cassaforte offline — air-gapped, custodisce la chiave privata. Backup
cifrati con chiave pubblica (il server cifra ma non può decifrare). La
cassaforte va a prendere i backup (sola andata); il server non la conosce.
Principi di progettazione da rispettare
- Minima superficie: ogni livello espone solo ciò che serve al livello accanto.
- Conoscenza parziale: ogni macchina conosce solo il vicino, mai l'intera catena.
- One-way verso il cuore: nessun percorso che parta dal server e arrivi alla cassaforte.
- Cifratura asimmetrica: chi può essere compromesso (il server) ha solo la chiave pubblica.
- Silenzio: agli attaccanti non si risponde (stealth), per non dare impronte né feedback.
- Difesa in profondità: questa architettura si SOMMA alle altre skill del plugin
(hardening-siti, difesa-attacchi, privacy-pagamenti, autenticazione-sicura), non le sostituisce.
Installazione (ordine)
- Cassaforte: generare le chiavi offline (
genera-chiavi.sh).
- WireGuard su scudo, origine, admin.
- Origine: avviare app su IP VPN, poi
firewall-origine.sh.
- Scudo: configurare
ORIGIN_URL e dominio, docker compose up -d --build, firewall-stealth.sh.
- Backup: cron notturno di
backup-cifrato.sh sull'origine; pull periodico dalla cassaforte.
Verifica
Da macchina esterna nmap -Pn IP_SCUDO: solo 80/443. SSH/WireGuard invisibili.
Il server origine non deve rispondere. Provare un ripristino di backup sulla
cassaforte per confermare che la catena funziona.