2.11. Log-filer

En Linux-installation indeholder forskellige logfiler der registrerer forskellige ting der sker med systemet. Den vigtigste logfil er /var/log/messages der sammen med andre fortæller systemets tilstand.

2.11.1. /var/log/messages

Tekstfilen /var/log/messages indeholder beskeder fra kernen og andre programmer der rapporterer til syslogd. Herunder er vist noget af det man kan se i logfilen:

Jun 25 10:45:18 figus syslogd 1.4.1: restart (remote reception).
Jun 25 10:45:22 figus sshd: sshd startup succeeded
Jun 25 11:01:35 figus ntpdate[4053]: step time server 129.240.64.3 offset 26.235235 sec
Jun 25 14:05:42 figus su(pam_unix)[4454]: session opened for user root by (uid=506)
Jun 25 14:08:45 figus sshd[4521]: Failed password for root from 192.168.1.2 port 1050 ssh2

Logfilen indeholder mange informationer fra mange programmer. Disse kan være lidt svære at overskue, så det kræver noget træning at hvad der er som det skal være, og hvad der ikke er. I ovenstående eksempel er det maskinen med maskinnavnet figus der ses i logfilen. Programmerne syslogd, sshd, ntpdate og su har skrevet i logfilen. Kun den sidste linje ser lidt mistænkelig ud, nogen prøvede at logge ind som root fra IP-nummer 192.168.1.2. Mistænkelig er den dog ikke, for ham der prøvede at logge ind havde ret til det, han havde bare glemt at root ikke kunne logge ind direkte, men skal først logge ind som en almindelig bruger. Så det kræver lidt træning at overskue denne logfil.

De typiske værktøjer man bruger til at se var på /var/log/messages er: less, tail og grep. Med less kan man med fordel taste 'G' for at gå til bunden af filen, og 'F' for at følge hvad der kommer af nye beskeder.

[root@linus /root]# less /var/log/messages
[root@linus /root]# tail -f /var/log/messages
[root@linus /root]# grep restart /var/log/messages | less

Se også "Friheden til sikkerhed på internettet" for mere information om /var/log/messages.

2.11.1.1. syslog remote

Der kan være flere fordele ved at logge syslog kommandoer til en anden server. En kunne være at samlet holde øje med flere servere, en anden kunne være for at sikre sig at en cracker ikke går ind og sletter /var/log/messages på den maskine der bliver kompromitteret

Først går man til den maskine der skal modtage syslog-beskeder fra andre maskiner. Her ændres syslog til at starte med kommandoen '-r' (remote). Dette kan enten gøre i /etc/sysconfig/syslog, eller /etc/init.d/syslog, afhængigt af hvilken distribution man kører.

# Filnavn: /etc/sysconfig/syslog
SYSLOGD_options="-m 0 -r"

På klienter der skal logge til syslog-serveren kan der så rettes i /etc/syslog.conf. Vil man logge alt fra klienten over til serveren minlog.domain.dk skrives:

*.*  @minlog.domain.dk

Er det kun mail-log der skal sendes over kan man skrive:

mail.*  @minlog.domain.dk

Ovenstående ændringer kræver at /etc/init.d/syslog bliver genstartet.

2.11.2. dmesg

dmesg er ikke en logfil, men et program der udskriver beskeder fra kernens ring-buffer. Her står al den information kernen skriver under boot, og hvad der efterfølgende sker af fejl i kernen. Vil man vide noget om hvilke IDE-harddiske der er i systemet, kan man for eksempel bruge kommandoen dmesg | grep hd og få et output der minder om:

[root@linus /root]# dmesg | grep hd
ide0: BM-DMA at 0xfcf0-0xfcf7, BIOS settings: hda:pio, hdb:DMA
hda: FUJITSU MHM2200AT, ATA DISK drive
hdb: TOSHIBA DVD-ROM SD-C2502, ATAPI CD/DVD-ROM drive
hda: 39070080 sectors (20004 MB) w/2048KiB Cache, chs=2584/240/63, UDMA(33)
hdb: ATAPI 24X DVD-ROM drive, 128kB Cache, UDMA(33)

2.11.3. /var/log/mail/info

/var/log/mail/info er logfilen for ind- og udgående mail. Her står hvem der har modtaget filer, og hvem der er sendt filer til. Typisk er det ved fejl at man kigger i denne fil, og i mere sjældne tilfælde bruges den til at dokumenterer at en mail blevet sendt eller modtaget. Filen ses typisk med less, tail eller grep. I det viste eksempel herunder, er det fetchmail der henter mail fra en ISP, hvilket man ikke kan se, og afleverer denne mail til localhost. Afsenderen er <chlor@sslug.dk>, og modtageren er <chlor@localhost.w0.dk>.

Jun 26 07:44:44 figus postfix/smtpd[8079]: connect from localhost.localdomain[127.0.0.1]
Jun 26 07:44:44 figus postfix/smtpd[8079]: 09BEC1326AE: client=localhost.localdomain[127.0.0.1]
Jun 26 07:44:44 figus postfix/cleanup[8080]: 09BEC1326AE: message-id=<20020626054426.20973.qmail@sslug.dk>
Jun 26 07:44:44 figus postfix/qmgr[1665]: 09BEC1326AE: from=<chlor@sslug.dk>, size=804, nrcpt=1
  (queue active)Jun 26 07:44:44 figus postfix/local[8082]: 09BEC1326AE: to=<chlor@localhost.w0.dk>,
  relay=local, delay=0, status=sent ("|/usr/bin/procmail -Y -a $DOMAIN")
Jun 26 07:44:47 figus postfix/smtpd[8079]: disconnect from localhost.localdomain[127.0.0.1]