# Caser til oppgave Z10.2 (kurs i VPS og Linux-serveradministrasjon) Velg for hver case hvilken feil det er, og hva som er det beste første steget. Alle navn og adresser er eksempler. **Feil (fra leksjon 10.2):** A. Root-innlogging med passord B. En database, cache eller søkeklynge åpen mot internett C. Docker-API-et åpent eller `docker.sock` i en container D. `chmod 777` for å bli kvitt en feilmelding E. `curl ... | bash` og programvare fra hvor som helst F. Ingen oppdateringer, eller oppdateringer "senere" G. Ingen sikkerhetskopi, eller en sikkerhetskopi som aldri er testet H. Administrasjonspanel åpent for alle, uten tofaktorautentisering I. Hemmeligheter i Git eller i compose-filen din J. "Bare kort" slå av brannmuren, alt som root, ingen notater --- **Case 1.** På `web1.example.com` står det i `compose.yaml` under tjenesten `redis`: `ports: - "6379:6379"`. `ufw status` viser bare 22, 80 og 443. En skanning utenfra finner 6379 åpen. Første steg: (a) starte ufw på nytt (b) fjerne portregelen eller endre den til `"127.0.0.1:6379:6379"` og kjøre `docker compose up -d` på nytt (c) gi Redis et annet portnummer (d) starte serveren på nytt **Case 2.** Utvikleren av en webapplikasjon på `app.example.net` melder at opplastingene ikke fungerte. Han har "fikset" det, og nå står alle filene i `/var/www/app` på `-rwxrwxrwx`. Første steg: (a) la det være, det fungerer nå (b) gi webserverbrukeren skrivetilgang bare til opplastingsmappen, og sette resten tilbake til 644/755 med en annen eier (c) kjøre webserveren som root (d) slå av AppArmor **Case 3.** Et offentlig repository har siden i går inneholdt en fil `.env` med `MAIL_API_KEY=...` fra serveren `web2.example.org`. Første steg: (a) slette filen fra repositoryet (b) trekke tilbake nøkkelen hos e-posttjenesten og lage en ny, og legge `.env` i `.gitignore` (c) gi repositoryet nytt navn (d) ikke gjøre noe **Case 4.** `sudo sshd -T | grep -E "permitrootlogin|passwordauthentication"` gir `permitrootlogin yes` og `passwordauthentication yes`. I journalen er det forsøk på root hvert minutt. Første steg: (a) installere fail2ban og ikke noe mer (b) legge inn en nøkkel for en vanlig administrator med sudo, teste, og deretter slå av passordinnlogging og root-innlogging med passord (c) flytte SSH til port 2222 (d) lagre root-passordet i en tekstfil **Case 5.** `cat /etc/os-release` viser en Ubuntu-utgivelse der standardstøtten gikk ut for tre år siden, uten ESM. `apt list --upgradable` er tom. Første steg: (a) være glad, det finnes ingen oppdateringer (b) planlegge en oppgradering eller en ny server med en støttet LTS, med snapshot og sikkerhetskopi (c) installere unattended-upgrades på nytt (d) starte serveren på nytt **Case 6.** En container `portainer` har volumet `/var/run/docker.sock:/var/run/docker.sock` og kan nås på `https://beheer.example.com` med passordet `admin123`, uten tofaktorautentisering. Velg feilen som gjør størst skade mulig hvis passordet blir gjettet. Første steg: (a) legge panelet bak en SSH-tunnel eller en fast adresse og sette opp et sterkt passord med tofaktorautentisering (b) starte containeren på nytt (c) velge et annet underdomene (d) installere Docker på nytt **Case 7.** Etter en mislykket oppdatering av databasen viser det seg at den eneste sikkerhetskopien er et snapshot som er to måneder gammelt, på samme lagring som serveren. Ingen har noen gang prøvd en gjenoppretting. Første steg for fremtiden: (a) ta flere snapshots (b) sette opp krypterte sikkerhetskopier utenfor serveren (for eksempel restic), med overvåking og en gjenopprettingstest (c) aldri oppdatere databasen igjen (d) en ekstra disk i samme server **Case 8.** På serveren ligger `/usr/local/bin/tool` og en ukjent pakkekilde `extra.list` med valget `[trusted=yes]`. Ingen vet hvor de kommer fra; den forrige administratoren installerte "alt med én linje fra en nettside". Første steg: (a) la det være, det fungerer (b) finne ut hva kilden og programmet er, slå av kilden med `trusted=yes`, og bare installere fra distribusjonen eller produsentens offisielle kilde med `Signed-By` (c) starte serveren på nytt (d) fjerne alle pakkene Fyll inn for hver case: feil (A-J) og første steg (a-d).