# Casi per l'esercizio Z10.2 (corso VPS e gestione di server Linux) Per ogni caso, scelga di quale errore si tratta e qual è il miglior primo passo. Tutti i nomi e gli indirizzi sono esempi. **Errori (dalla lezione 10.2):** A. Login di root con una password B. Un database, una cache o un cluster di ricerca aperto verso Internet C. L'API di Docker aperta oppure `docker.sock` in un container D. `chmod 777` per far sparire un messaggio di errore E. `curl ... | bash` e software da qualsiasi fonte F. Nessun aggiornamento, oppure aggiornamenti "più tardi" G. Nessun backup, oppure un backup mai testato H. Pannello di amministrazione aperto a tutti, senza verifica in due passaggi I. Segreti in Git o nel Suo file compose J. Disattivare "un attimo" il firewall, tutto come root, nessun appunto --- **Caso 1.** Su `web1.example.com`, in `compose.yaml`, per il servizio `redis` è presente: `ports: - "6379:6379"`. `ufw status` mostra solo 22, 80 e 443. Una scansione dall'esterno rileva la porta 6379 aperta. Primo passo: (a) riavviare ufw (b) rimuovere la regola della porta o modificarla in `"127.0.0.1:6379:6379"` ed eseguire di nuovo `docker compose up -d` (c) assegnare a Redis un altro numero di porta (d) riavviare il server **Caso 2.** Lo sviluppatore di un'applicazione web su `app.example.net` segnala che gli upload non funzionavano. Ha "risolto" il problema e ora tutti i file in `/var/www/app` sono impostati su `-rwxrwxrwx`. Primo passo: (a) lasciare tutto così, ora funziona (b) concedere all'utente del server web i permessi di scrittura solo sulla cartella degli upload, riportare il resto a 644/755 con un altro proprietario (c) eseguire il server web come root (d) disattivare AppArmor **Caso 3.** Da ieri un repository pubblico contiene un file `.env` con `MAIL_API_KEY=...` del server `web2.example.org`. Primo passo: (a) rimuovere il file dal repository (b) revocare la chiave presso il servizio di posta e crearne una nuova, e inserire `.env` in `.gitignore` (c) rinominare il repository (d) non fare nulla **Caso 4.** `sudo sshd -T | grep -E "permitrootlogin|passwordauthentication"` restituisce `permitrootlogin yes` e `passwordauthentication yes`. Nel journal compaiono ogni minuto tentativi di accesso come root. Primo passo: (a) installare fail2ban e nient'altro (b) installare una chiave per un normale amministratore con sudo, testarla e poi disattivare il login con password e il login di root con password (c) spostare SSH sulla porta 2222 (d) conservare la password di root in un file di testo **Caso 5.** `cat /etc/os-release` mostra una release di Ubuntu il cui supporto standard è terminato tre anni fa, senza ESM. `apt list --upgradable` è vuoto. Primo passo: (a) rallegrarsi, non ci sono aggiornamenti (b) pianificare un upgrade o un nuovo server con una LTS supportata, con snapshot e backup (c) reinstallare unattended-upgrades (d) riavviare il server **Caso 6.** Un container `portainer` ha il volume `/var/run/docker.sock:/var/run/docker.sock` ed è raggiungibile su `https://beheer.example.com` con la password `admin123`, senza verifica in due passaggi. Scelga l'errore che rende possibile il danno maggiore se la password viene indovinata. Primo passo: (a) mettere il pannello dietro un tunnel SSH o un indirizzo fisso e impostare una password robusta con verifica in due passaggi (b) riavviare il container (c) scegliere un altro sottodominio (d) reinstallare Docker **Caso 7.** Dopo un aggiornamento non riuscito del database risulta che l'unico backup è uno snapshot di due mesi fa, sullo stesso storage del server. Nessuno ha mai provato un ripristino. Primo passo per il futuro: (a) creare più snapshot (b) configurare backup cifrati al di fuori del server (ad esempio restic), con monitoraggio e un test di ripristino (c) non aggiornare mai più il database (d) un secondo disco nello stesso server **Caso 8.** Sul server sono presenti `/usr/local/bin/tool` e una sorgente di pacchetti sconosciuta `extra.list` con l'opzione `[trusted=yes]`. Nessuno sa da dove provengano; l'amministratore precedente installava "tutto con una sola riga presa da un sito web". Primo passo: (a) lasciare tutto com'è, funziona (b) verificare quali siano la sorgente e il programma, disattivare la sorgente con `trusted=yes` e installare d'ora in poi solo dalla distribuzione o dalla sorgente ufficiale dello sviluppatore con `Signed-By` (c) riavviare il server (d) rimuovere tutti i pacchetti Per ogni caso indichi: errore (A-J) e primo passo (a-d).