# Casussen bij opdracht Z10.2 (cursus VPS en Linux-serverbeheer) Kies per casus welke fout het is, en wat de beste eerste stap is. Alle namen en adressen zijn voorbeelden. **Fouten (uit les 10.2):** A. Root-login met een wachtwoord B. Een database, cache of zoekcluster open naar internet C. De Docker-API open of `docker.sock` in een container D. `chmod 777` om een foutmelding weg te krijgen E. `curl ... | bash` en software van overal F. Geen updates, of updates "later" G. Geen back-up, of een back-up die nooit getest is H. Beheerpaneel open voor iedereen, zonder tweestapsverificatie I. Geheimen in Git of in je compose-bestand J. "Even" de firewall uit, alles als root, geen notities --- **Casus 1.** Op `web1.example.com` staat in `compose.yaml` bij de dienst `redis`: `ports: - "6379:6379"`. `ufw status` toont alleen 22, 80 en 443. Een scan van buitenaf vindt 6379 open. Eerste stap: (a) ufw opnieuw starten (b) de poortregel weghalen of veranderen in `"127.0.0.1:6379:6379"` en opnieuw `docker compose up -d` (c) Redis een ander poortnummer geven (d) de server herstarten **Casus 2.** De ontwikkelaar van een webapplicatie op `app.example.net` meldt dat de uploads niet werkten. Hij heeft het "opgelost" en nu staan alle bestanden in `/var/www/app` op `-rwxrwxrwx`. Eerste stap: (a) zo laten, het werkt nu (b) de webservergebruiker alleen schrijfrechten geven op de uploadmap, de rest terug naar 644/755 met een andere eigenaar (c) de webserver als root draaien (d) AppArmor uitzetten **Casus 3.** Een openbare repository bevat sinds gisteren een bestand `.env` met `MAIL_API_KEY=...` van de server `web2.example.org`. Eerste stap: (a) het bestand uit de repository verwijderen (b) de sleutel bij de maildienst intrekken en een nieuwe maken, en `.env` in `.gitignore` zetten (c) de repository hernoemen (d) niets doen **Casus 4.** `sudo sshd -T | grep -E "permitrootlogin|passwordauthentication"` geeft `permitrootlogin yes` en `passwordauthentication yes`. In de journal staan elke minuut pogingen op root. Eerste stap: (a) fail2ban installeren en verder niets (b) een sleutel voor een gewone beheerder met sudo plaatsen, testen, en dan wachtwoordlogin en root-login met wachtwoord uitzetten (c) SSH op poort 2222 zetten (d) het root-wachtwoord in een tekstbestand bewaren **Casus 5.** `cat /etc/os-release` toont een Ubuntu-release waarvan de standaardondersteuning drie jaar geleden is afgelopen, zonder ESM. `apt list --upgradable` is leeg. Eerste stap: (a) blij zijn, er zijn geen updates (b) een upgrade of nieuwe server plannen naar een ondersteunde LTS, met snapshot en back-up (c) unattended-upgrades opnieuw installeren (d) de server herstarten **Casus 6.** Een container `portainer` heeft het volume `/var/run/docker.sock:/var/run/docker.sock` en is bereikbaar op `https://beheer.example.com` met het wachtwoord `admin123`, zonder tweestapsverificatie. Kies de fout die de grootste schade mogelijk maakt als het wachtwoord geraden wordt. Eerste stap: (a) het paneel achter een SSH-tunnel of vast adres zetten en een sterk wachtwoord met tweestapsverificatie instellen (b) de container herstarten (c) een ander subdomein kiezen (d) Docker opnieuw installeren **Casus 7.** Na een mislukte update van de database blijkt dat de enige back-up een snapshot van twee maanden oud is, op dezelfde opslag als de server. Niemand heeft ooit een terugzetting geprobeerd. Eerste stap voor de toekomst: (a) meer snapshots maken (b) versleutelde back-ups buiten de server inrichten (bijvoorbeeld restic), met bewaking en een terugzettest (c) de database nooit meer bijwerken (d) een tweede schijf in dezelfde server **Casus 8.** Op de server staat `/usr/local/bin/tool` en een onbekende pakketbron `extra.list` met de optie `[trusted=yes]`. Niemand weet waar ze vandaan komen; de vorige beheerder installeerde "alles met één regel van een website". Eerste stap: (a) laten staan, het werkt (b) uitzoeken wat de bron en het programma zijn, de bron met `trusted=yes` uitzetten, en alleen nog uit de distributie of de officiële bron van de maker installeren met `Signed-By` (c) de server herstarten (d) alle pakketten verwijderen Vul per casus in: fout (A-J) en eerste stap (a-d).