Gentoo Logo

[ << ] [ < ] [ Home ] [ > ] [ >> ]


3. Loggen

Inhoud:

3.a. Syslogd

Syslogd is de meest gebruikte logger voor Linux en Unix algemeen. Het heeft geen logrotatie mogelijkheid. Deze mogelijkheid kan je toch implementeren door middel van /usr/sbin/logrotate in een cronjob te steken en /etc/logrotate.conf goed te configureren. De hoeveelheid van logrotaties zijn afhankelijk van het gebruik van je systeem.

Hier is een voorbeeld van hoe je syslog kan configureren:

Codevoorbeeld 1.1: /etc/syslog.conf

*.=debug                   /var/log/debug
*.err                      /var/log/syslog

#Gebruikers van wie je wil zien wanneer ze ingelogd zijn
*.=alert                   root,je gebruikers hier
*.=emerg                   root,je gebruikers hier

mail.info,mail.notice      /var/log/maillog
kern.*                     /var/log/kern.log
daemon.info;daemon.notice  /var/log/daemon.log
cron.*                     /var/log/cron.log
mail.*                     /var/log/mail.log
user.*                     /var/log/user.log
uucp.*                     /var/log/uucp.log
*.*;auth,authpriv.none     /var/log/syslog

#Plaats de logbestanden in 2 verschillende locaties
authpriv.*;auth.*          /admin/auth.log
authpriv.*;auth.*          /var/log/secure

#Schrijf alles tevens neer in een terminal
*.*                        /dev/tty12

#Stel een andere server in als logserver
*.*                        @logserver

De aanvaller zal waarschijnlijk proberen om zijn voetsporen te wissen door logbestanden aan te passen of te verwijderen. Je kan het hem moeilijk maken door de logs naar een of meer logservers op verschillende machines te sturen.

Meer informatie over syslogd kan je vinden in de manpage (man syslog).

3.b. Metalog

Metalog door Frank Dennis heeft niet de mogelijkheid om naar een andere server te loggen, maar heeft wel voordelen op gebied van performantie en logflexibiliteit.

Het kan per proces loggen of per faciliteit (zoals syslogd werkt) en komt met een eigen expressietaal en uitvoering van commandos. Zeer goed om akties te ondernemen indien nodig.

Codevoorbeeld 2.1: /etc/metalog.conf

maxsize  = 1000000
maxtime  = 86400
maxfiles = 7
minimum  = 7

Kernel messages :

  facility = "kern"
  logdir   = "/var/log/kernel"

Auth messages :
  facility = "auth"
  logdir   = "/var/log/auth"

Emergencies :
  facility = "emerg"
  command  = "/usr/local/sbin/pwdfail.sh"  

Crond :

  program  = "crond"
  logdir   = "/var/log/crond"
  
Password failures :

  regex    = "(password|login|authentication)\s+(fail|invalid)"
  regex    = "(failed|invalid)\s+(password|login|authentication)"
  regex    = "ILLEGAL ROOT LOGIN"
  logdir   = "/var/log/pwdfail"
  command  = "/usr/local/sbin/pwdfail.sh"

SSH Server :

  program  = "sshd"
  logdir   = "/var/log/sshd"

Mail :

  facility = "mail"
  logdir   = "/var/log/mail"

Snort:
  program   = "snort"
  command  = "/usr/local/sbin/pwdfail.sh"

Everything important :

  facility = "*"
  logdir   = "/var/log/everything"

Everything very important :

  facility = "*"
  logdir   = "/var/log/critical"

Dit is een default configuratie met enkele aanpassingen, zoals een minimum logniveau van 7, wat wil zeggen dat alles gelogged zal worden.

pwdfail.sh voor postfix:

Codevoorbeeld 2.2: pwdfail.sh voor Postfix

#! /bin/sh
echo "$3" | mail -s "Warning (program : $2)" root

pwdfail.sh voor netqmail:

Codevoorbeeld 2.3: pwdfail.sh voor netqmail

#!/bin/sh
echo "To: root
Subject:Failure (Warning: $2) 
$3
" | /var/qmail/bin/qmail-inject -f root

Meer informatie kan je vinden op de metalog website.

3.c. Syslog-ng

Syslog-ng levert sommige features van syslog en metalog met enkele kleine verschillen. Het kan berichten filteren op niveau en inhoud (net zoals metalog), ondersteunt logservers zoals syslog, kan syslogd logs aan (zelfs deze van Solaris), kan naar een TTY schrijven en programmas uitvoeren en zelf als logserver fungeren. Dit is dus eigenlijk het beste van beide andere loggers met extra mogelijkheden.

Een klassiek configuratiebestand mits wat kleine aanpassingen.

Codevoorbeeld 3.1: /etc/syslog-ng/syslog-ng.conf

options { long_hostnames(off); sync(0); };

#bron van waar de log ingelezen dient te worden
source src { unix-stream("/dev/log"); internal(); };
source kernsrc { file("/proc/kmsg"); };

#doelen definieren
destination authlog { file("/var/log/auth.log"); };
destination syslog { file("/var/log/syslog"); };
destination cron { file("/var/log/cron.log"); };
destination daemon { file("/var/log/daemon.log"); };
destination kern { file("/var/log/kern.log"); };
destination lpr { file("/var/log/lpr.log"); };
destination user { file("/var/log/user.log"); };
destination mail { file("/var/log/mail.log"); };

destination mailinfo { file("/var/log/mail.info"); };
destination mailwarn { file("/var/log/mail.warn"); };
destination mailerr { file("/var/log/mail.err"); };

destination newscrit { file("/var/log/news/news.crit"); };
destination newserr { file("/var/log/news/news.err"); };
destination newsnotice { file("/var/log/news/news.notice"); };

destination debug { file("/var/log/debug"); };
destination messages { file("/var/log/messages"); };
destination console { usertty("root"); };
destination console_all { file("/dev/tty12"); };
destination xconsole { pipe("/dev/xconsole"); };

#filters aanmaken
filter f_auth { facility(auth); };
filter f_authpriv { facility(auth, authpriv); };
filter f_syslog { not facility(authpriv, mail); };
filter f_cron { facility(cron); };
filter f_daemon { facility(daemon); };
filter f_kern { facility(kern); };
filter f_lpr { facility(lpr); };
filter f_mail { facility(mail); };
filter f_user { facility(user); };
filter f_debug { not facility(auth, authpriv, news, mail); };
filter f_messages { level(info..warn) 
	and not facility(auth, authpriv, mail, news); };
filter f_emergency { level(emerg); };

filter f_info { level(info); };
filter f_notice { level(notice); };
filter f_warn { level(warn); };
filter f_crit { level(crit); };
filter f_err { level(err); };
filter f_failed { match("failed"); };
filter f_denied { match("denied"); };

#filter en doel linken
log { source(src); filter(f_authpriv); destination(authlog); };
log { source(src); filter(f_syslog); destination(syslog); };
log { source(src); filter(f_cron); destination(cron); };
log { source(src); filter(f_daemon); destination(daemon); };
log { source(kernsrc); filter(f_kern); destination(kern); };
log { source(src); filter(f_lpr); destination(lpr); };
log { source(src); filter(f_mail); destination(mail); };
log { source(src); filter(f_user); destination(user); };
log { source(src); filter(f_mail); filter(f_info); destination(mailinfo); };
log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); };
log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };

log { source(src); filter(f_debug); destination(debug); };
log { source(src); filter(f_messages); destination(messages); };
log { source(src); filter(f_emergency); destination(console); };

#default log
log { source(src); destination(console_all); };

Het is gemakkelijk om te configureren maar tevens zeer gemakkelijk om fouten te maken aangezien het configuratiebestand groot is. De auteur heeft belooft om nog extra mogelijkheden zoals encryptie, identiteits verificatie, compressie en MAC (Mandatory Access Control) in te bouwen. Met deze opties zal dit de perfecte logger worden, aangezien de aanvaller de logs dan niet meer kan bekijken en aanpassen.

En syslog-ng heeft nog een andere mogelijkheid: het moet niet als root werken!

3.d. Logs analyseren met logcheck

Natuurlijk, zijn logs maken en houden maar de helft; Een aplicatie als logcheck kan log-bestanden veel makkelijker controleren. logcheck is een script, en kun je uitvoeren met het commando logtail, die je best gebruikt via je cron. Na de controle op verdachte activiteit; mailt hij alles naar je root's mailbox.

Logcheck en logtail maken deel uit van het app-admin/logsentry pakket.

Logcheck gebruikt vier bestanden om te belangrijke logs te controleren. Deze bestanden zijn logcheck.hacking, die bevat gekende hack-berichten, logcheck.violations bevat patronen die veiligheid-tekortkomingen aantonen, logcheck.violations.ignore bevat sleutelwoorden die lijken als een aanval te blokkeren, en logcheck.ignore bevat regels over geblokkeerde toegang.

Waarschuwing: Laat logcheck.violations.ignore leeg, logcheck gebruikt grep om logs te parsen, sommige versies van welke lege bestanden genomen zullen worden als wildcards, Alle inbraken zouden dan worden genegeerd.


[ << ] [ < ] [ Home ] [ > ] [ >> ]


Print

View all

Upgedate op 25 november 2005

De originele versie van dit document was laatst geupdate om 2 april 2010

Korte inhoud: Gentoo Linux laat je kiezen tussen 3 verschillende loggers.

Kim Nielsen
Author

John P. Davis
Editor

Eric R. Stockbridge
Editor

Carl Anderson
Editor

Jorge Paulo
Editor

Sven Vermeulen
Editor

Benny Chuang
Editor

Sune Jeppesen
Editor

Tiemo Kieft
Editor

Zack Gilburd
Editor

Dan Margolis
Editor

Dimitry Bradt
Translator

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.