Sicurezza
Modello sicurezza
Perimetro, accessi, privilegi e regole di sicurezza
Confine pubblico
Porte pubbliche intenzionali:
80/tcp: HTTP pubblico per redirect e ACME HTTP challenge;443/tcp: HTTPS pubblico;22/tcp: SSH, limitato dal DigitalOcean Cloud Firewall agli IP fidati.
Porte locali intenzionali:
127.0.0.1:8080: dashboard Traefik;127.0.0.1:3333: Forgejo HTTP;127.0.0.1:3334: Obelica Docs.
Principio guida
Pubblico solo cio' che deve servire utenti finali. Tutto cio' che e' admin, Git, dashboard, docs interne o database resta privato.
Stato positivo
- Docker attivo.
- Fail2ban attivo.
- UFW attivo.
- Traefik dashboard su loopback.
- Forgejo su loopback.
- Docs su loopback.
- Postgres Forgejo non pubblica porte host.
- Config e secret sono separati.
- Gli script operativi non stampano valori secret.
- I backup sono cifrati prima del salvataggio.
- DNS/TLS staging
*.vps.obelica.comallineato al droplet.
Rischi consapevoli
| Rischio | Stato |
|---|---|
bona nel gruppo docker | accettato per modello single-operator, trattato come root-equivalent |
| Traefik monta Docker socket read-only | accettato ora, valutare socket proxy in futuro |
| SSH porta host aperta | mitigata da DigitalOcean Cloud Firewall |
| Backup locali sullo stesso droplet | utile ma non sufficiente per disaster recovery |
| Forgejo privato senza offsite backup | da hardenizzare prima di pubblicarlo |
| Produzione app ancora su Vercel | accettato finche' le app non sono validate e migrate una per una |
Controlli da non saltare
obelica security
obelica doctor
ss -tulpen
docker ps
docker compose lsCon root:
sudo ufw status numbered
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|kbdinteractiveauthentication'
sudo fail2ban-client status
sudo fail2ban-client status sshd