Opgave 12 - Linux log system¶
Information¶
Formålet med denne øvelse er at introducere Linux-logsystemet og præsentere de grundlæggende koncepter. Hver Linux-distribution har sine egne variationer i logsystemet, men grundlæggende fungerer de ens. I dette fag arbejdes der med logsystemet på en Ubuntu-server.
I Linux findes der overordnet to logsystemer: rsyslog (som er en nyere version af syslog) og journalctl. Begge systemer bruges til at håndtere logfiler, men der er forskelle:
- rsyslog skriver logs til filer i
/var/log/. - journalctl håndterer logs via systemd’s journal og kan bruges til at søge i logs uden at åbne filer direkte.
I denne opgave fokuserer vi på rsyslog og logfilerne i Ubuntu (baseret på Debian).
Logfiler i Ubuntu¶
Systemets logfiler opbevares i mappen /var/log/. To af de vigtigste logfiler er:
- syslog – Den primære logfil, der indeholder systemets aktiviteter.
- auth.log – Log over autentificering og sikkerhedshændelser.
rsyslog vs. journalctl¶
Både rsyslog og journalctl bruges til loghåndtering i Linux, men de har forskellige tilgange og formål:
rsyslog¶
- En ældre, filbaseret logningsmekanisme, der skriver logs til filer i /var/log/ (f.eks.
syslog,auth.logosv.). - Bruger en konfigurationsfil (
/etc/rsyslog.conf) til at bestemme, hvordan logs behandles og sendes videre (fx til eksterne servere). - Fordele:
- Let at filtrere og analysere med standard Unix-værktøjer (
grep,awk,sed). - Kan sende logs til eksterne systemer via netværksprotokoller.
- Lavt ressourcetræk.
journalctl (systemd-journal)¶
- En nyere, binær logmekanisme, der er integreret i systemd.
- Logs gemmes i et binært format og kan kun læses med
journalctl. - Tillader mere avanceret søgning og filtrering (fx logs for en specifik service eller tid).
- Fordele:
- Bedre filtrerings- og søgemuligheder (
journalctl -u sshfor kun at se SSH-relaterede logs). - Metadata såsom PID, UID og cgroup gemmes automatisk.
- Understøtter persistente og volatile logs.
Hvornår bruger man hvad?¶
- rsyslog er bedst, hvis du arbejder med traditionelle logfiler eller sender logs til eksterne systemer. Fordelen ved rsyslog er, at den skriver loglinjerne som almindelig tekst direkte til logfilerne, hvilket gør det nemmere at integrere logfiler fra rsyslog med andre systemer (såsom SIEM, IDS, log-aggregeringsværktøjer osv.).
- journalctl er praktisk til systemd-styrede systemer, da det giver mere avancerede søgefunktioner og bedre integration med services.
Mange moderne Linux-systemer bruger begge, hvor journalctl fanger alle logs, mens rsyslog sender dem videre til filbaserede logs.
Instruktioner¶
1. Primær logfil: syslog¶
Den primære logfil for systemet hedder syslog og indeholder information om stort set alt, hvad systemet foretager sig.
- Udskriv de seneste 20 linjer af
syslog: -
Studér logformatet. En typisk linje i
Identificér følgende elementer:syslogser sådan ud:- Tidsstempel (fx
Mar 12 10:15:03) - Værtsnavn (fx
hostname) - Program/Service (fx
process[1234]) - Besked (fx
This is a log message)
- Tidsstempel (fx
-
Udfra de identificeret elementer, lav et generiske log format til dit Linux cheat sheet.
-
Find ud af, hvilken tidszone loggen bruger til tidsstempling:
- Er systemets tidszone UTC, eller er den lokal?
- Alternativt kan du tjekke tidsstempler direkte i syslog ved at søge efter "time" med følgende kommando:
2. Authentication log: auth.log¶
Logfilen auth.log indeholder information om autentificering og sikkerhedshændelser.
- Udskriv de seneste 20 linjer af
auth.log: - Identificér brugerens navn (fx
rooteller en anden konto). - Skift til root og udskriv
auth.logigen: - Bemærk, at
sudo sumuligvis ikke altid efterlader en logpost. Prøv også: - Skift tilbage til din primære bruger og udskriv
auth.logigen. - Hvilke nye rækker blev tilføjet?
- Kan du se spor af dit autentificerings-forsøg?
3. Filtrering af logs¶
I stedet for at udskrive hele logfiler kan du filtrere relevante oplysninger:
- Søg efter fejlmeddelelser i
syslog: - Find autentificeringsfejl i
auth.log:
4. Bonusopgave: Find system-genstartere¶
- Søg efter alle system-genstartere i
syslog: - Hvilke tidspunkter genstartede systemet?
- Kan du identificere brugeren, der udløste genstarten, baseret på logdata? ved at samholde data fra syslog med authlog
grep -i "sudo" /var/log/auth.log | grep -E "reboot|shutdown" - Yderlige kan man også se systemets sidste genstart med kommandoen
last reboot
5. Brug af journalctl¶
Ud over rsyslog kan du også bruge journalctl til at vise logs:
- Udskriv de seneste 20 logs fra systemets journal:
Refleksion¶
- Hvad kan du lære om systemets aktivitet ud fra disse logs?
- Hvorfor er logfiler vigtige for fejlfinding og sikkerhed?