# 👁️ Daglig check-in – Hold øje med din server > [!info] Dette er ikke en formel rapport > I behøver ikke skrive en struktureret opgave eller følge et bestemt format. > Skriv bare hvad I har **set og bemærket** siden sidst – som om I fortalte det til en kollega ved kaffemaskinen. > To til fem sætninger er fint. Det vigtige er at I faktisk logger ind og kigger. --- ## Hvad skal I gøre? Log ind på jeres server og kig i `auth.log`. Brug de kommandoer I allerede kender: **Hurtig status – hvad er sket de seneste timer?** ```bash tail -50 /var/log/auth.log ``` I skulle gerne kunne finde jer egen login på følgende måde ```bash grep "Accepted publickey" /var/log/auth.log | tail -30 ``` En rigtig god ide lige at lave en kontrol af at det stemmer overens med de IP adresser i har kendskab til, altså jeres egen respektive IP og fx. skolens IP adresse hvis I logger ind fra EDU netværket. **Filtrér for mislykkede forsøg:** ```bash grep "Invalid user" /var/log/auth.log | tail -30 ``` **Tæl hvor mange unikke IP-adresser der har forsøgt sig:** ```bash grep "Invalid user" /var/log/auth.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -10 ``` Er der en IP adresse der er særlig aktiv? --- ## 🔍 Ekstraopgave – bryd kommandoen ned Ovenstående kommando er et godt eksempel på hvordan man i Linux kan kæde (pipe) simple værktøjer sammen til noget kraftfuldt. Prøv at forstå hvad hvert enkelt led gør: ``` grep "Invalid user" /var/log/auth.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -10 [1] [2] [3] [4] [5] [6] [7] ``` En linje i `auth.log` ser sådan ud – læg mærke til at hvert ord er et felt: ``` 2026-02-25T10:07:11.522664+00:00 ubuntu-1cpu-1gb-dk-cph1 sshd[18751]: Invalid user guest from 91.202.233.33 port 28006 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 ``` **Spørgsmål – diskutér og svar:** **1.** Hvad gør hvert led i kommandoen? Udfyld tabellen: | Led | Kommando | Hvad gør den? | | --- | --------------------- | ------------- | | 1 | `grep "Invalid user"` | | | 2 | `/var/log/auth.log` | | | 3 | `awk '{print $7}'` | | | 4 | `sort` | | | 5 | `uniq -c` | | | 6 | `sort -rn` | | | 7 | `head -10` | | **2.** Kommandoen bruger `$7` til at udtrække IP-adressen. Hvilket felt-nummer (`$?`) skal du bruge for at udtrække **brugernavnet** i stedet? Prøv det af og verificér at du får det rigtige ud. > [!tip]- Hint > Kig på feltinddelingen i eksemplet ovenfor. Brugernavnet er `$6`. ```bash sudo grep "Invalid user" /var/log/auth.log | awk '{print $?}' | sort | uniq -c | sort -rn | head -10 ``` **3.** Hvad skal der **ændres eller tilføjes** i kommandoen for at få en **sammentælling af brugernavne** – altså en liste over hvilke brugernavne der er forsøgt flest gange? Skriv den færdige kommando i din korte observationsrapport **4.** Hvad fortæller en sammentælling af brugernavne dig som sikkerhedsansvarlig – som en sammentælling af IP-adresser ikke gør? --- ## Hvad skal I rapportere? Skriv jeres observationer i **Canvas-grupperummet** – kort og uformelt. Prøv at svare på disse spørgsmål hvis I kan: - Har der været forsøg på login siden sidst? - Hvilke brugernavne er forsøgt – er der noget der skiller sig ud? - Fra hvilke IP-adresser? Er der én der går igen? - Er der noget der virker anderledes eller mærkeligt end hvad I forventer? --- > [!tip] Husk > I behøver ikke kende svaret på alt. Hvis I ser noget I ikke forstår – skriv det ned alligevel. Det er præcis sådan rigtig sikkerhedsovervågning fungerer: man logger hvad man ser, også selv om man ikke ved hvad det betyder endnu. --- > [!example] Eksempel på en god check-in (uformel stil) > *"Vi loggede ind kl. 10:30. Der har været ca. 40 mislykkede loginforsøg siden i går – primært på brugernavne som root og admin. Én IP dukker op rigtig mange gange: `176.120.22.13` > Vi ved ikke hvem det er endnu. Ellers intet nyt."* ## Overførsel af logdata fra server til klient Hvis vi har brug for at analysere vores logdata, kan det være en fordel at hente dem ned på en lokal maskine og foretage analysen der. Det er god praksis af to grunde: vi undgår unødvendig ressourcebelastning på produktionsserveren, og vi sikrer bevismateriale til en eventuel efterforskning ved at have en lokal kopi der ikke kan manipuleres fra serveren. Vi starter med at danne os et overblik over `auth.log`-filens størrelse. Kommandoen `wc` (_word count_) kan tælle linjer, ord og tegn i en fil – med flaget `-l` tæller den udelukkende linjer: ```bash wc -l /var/log/auth.log ``` ``` Output vil se nogenlunde sådan ud: ```bash 37039 /var/log/auth.log ``` Der er altså pt. 37.039 linjer i logfilen – det svarer til 37.039 registrerede hændelser siden serveren blev sat op. Da vi allerede har opsat et SSH-nøglepar og har adgang til serveren, kan vi benytte **SFTP** (_SSH File Transfer Protocol_) til at overføre filen. SFTP kører over den samme krypterede SSH-forbindelse vi allerede bruger, så vi behøver ikke konfigurere noget nyt. **Opret forbindelse til serveren via SFTP:** ```bash sftp ubuntu@<IP-ADRESSE> ``` Når forbindelsen er oprettet, skifter prompten til `sftp>`. Du er nu i en interaktiv filoverførsels-session. Hent filen ned til din lokale maskine: ```bash sftp> get auth.log ``` Filen gemmes i den mappe du stod i på din lokale maskine da du startede SFTP-sessionen – typisk din hjemmemappe. **Afslut sessionen:** ```bash sftp> exit ``` ![[WindowsTerminal_20Gc9zOQWO.gif]] >[!tip] Hent i one-liner >Vil du hente filen i én kommando uden interaktiv session? Det kan gøres direkte fra din lokale terminal uden at åbne en SFTP-session: >```bash >sftp ubuntu@<IP-ADRESSE>:/var/log/auth.log ./auth.log >``` ![[WindowsTerminal_5DQhKje1r5.gif]] --- Vi samler op i klassen HH-out