Syslog-ng: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
Zeile 268: Zeile 268:
 
  iptables -A FORWARD -j LOG --log-prefix="-iptables-for-"
 
  iptables -A FORWARD -j LOG --log-prefix="-iptables-for-"
 
  ...
 
  ...
 +
 +
====Logging von IKE====
 +
destination d_ike { file("/var/log/ike"); };
 +
 +
filter f_ike { facility(auth, authpriv) and match(pluto); };
 +
 +
log { source(s_src); filter(f_ike); destination(d_ike); };
  
 
===Netzwerklogging===
 
===Netzwerklogging===

Version vom 23. Oktober 2012, 08:05 Uhr

syslog allgemein

Unter Linux verwaltet ein spezieller Daemon-Prozess ein Systemlogbuch, das von allen Programmen und insbesondere von allen anderen Daemon-Prozessen benutzt werden kann, um Meldungen abzugeben.

Jedes Programm kann also über einen Systemaufruf solche Meldungen abgeben. Der Daemon, der diese Meldungen entgegennimmt und entscheidet, was mit ihnen zu geschehen hat heißt syslogd. Damit der Systemverwalter entscheiden kann, was mit welchen Meldungen geschehen soll kann dieser Daemon über die Datei /etc/syslog.conf konfiguriert werden.

Die Datei /etc/syslog.conf

Jede Zeile dieser Datei, die nicht leer ist oder mit einem # beginnt, beschreibt eine Regel, was mit einer bestimmten Meldung passieren soll. die grundlegende Form jeder Zeile ist immer gleich und lautet:

 Herkunft.Priorität     Aktion

Herkunft, auch Syslog-Facility

kern Systemmeldungen direkt vom Kernel
auth Meldungen vom Sicherheitsdienst des Systems (login, ...)
authpriv Vertrauliche Meldungen der internen Sicherheitsdienste
mail Meldungen des Mail-Systems
news Meldungen des News-Systems
lpr Meldungen des Druckerdaemons
cron Meldungen des Cron-Daemons
syslog Meldungen des syslog-Daemons selbst
daemon Meldungen aller anderer Daemon-Prozesse
user Meldungen aus normalen Anwenderprogrammen
local0-local7 frei verwendbar

Prioritäten in absteigender Reihenfolge

emerg Der letzte Spruch vor dem Absturz
alert Alarmierende Nachricht, die sofortiges Eingreifen erforderlich macht
crit Meldung über eine kritische Situation, die gerade nochmal gut gegangen ist
err Fehlermeldungen aller Art aus dem laufenden Betrieb
warn Warnungen aller Art aus dem laufenden Betrieb
notice Dokumentation besonders bemerkenswerter Situationen im Rahmen des normalen Betriebs
info Protokollierung des normalen Betriebsablaufes
debug Mitteilungen interner Programmzustände bei der Fehlersuche
none Ist keine Priorität im eigentlichen Sinn, sondern dient zum Ausschluß einzelner Herkünfte

Eine angegebene Priorität meint immer die genannte oder eine höhere. Wenn jedoch vor der Priorität ein Gleichheitszeichen (=) steht, so ist nur die genannte Priorität gemeint.

Aktion

/var/log/auth.log schreibt in eine Datei
root, tux sendet an die Konsole der eingeloggten Bentzer root und tux
* sendet an alle eingeloggten Benutzer
@server sendet an den angegebenen Rechner


  • Ausschnitt /etc/syslog.conf , Standardlogdateien
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog 
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log  
lpr.*                           -/var/log/lpr.log   
mail.*                          -/var/log/mail.log  
user.*                          -/var/log/user.log  
                                                                                                                                                         
mail.info                       -/var/log/mail.info
mail.warning                    -/var/log/mail.warn
mail.err                        /var/log/mail.err
...
#
# Emergencies are sent to everybody logged in.
#
*.emerg                         *
...

syslog-ng

Syslog bietet erweiterte Logging-Fähigkeiten und kann die Logs von Rechnern und teilweise auch Firewalls mitlesen.

Installation

root@zero:~# apt-get install syslog-ng

Spezifisches Logging am Beispiel einer IPtables-Firewall

Sources

Um eine Source zu definieren, braucht man das Source Statement im Konfigurationsfile. Source hat die folgende Syntax:

 source <identifier> { source-driver(params); source-driver(params); ... };

Sources

internal Nachrichten, die von syslog-ng intern generiert werden
unix-stream Öffnet den angegebenen Unix Stream im SOCK_STREAM Modus und wartet nach Nachrichten
unix-dgram Öffnet den angegebenen Unix Stream im SOCK_DGRAM Modus und wartet nach Nachrichten
file Öffnet die angegebene Datei und liest Nachrichten
pipe, fifo Öffnet die angegebene named pipe und liest Nachrichten
udp Lauscht auf dem angegebenen UDP Port nach Nachrichten
tcp Lauscht auf dem angegebenen TCP Port nach Nachrichten
sun-stream, sun-streams Öffnet STREAMS device auf dem angegebenen Solaris System und liest Nachrichten

Alles was über UDP reinkommt

source s_udp { udp(); };

Alles von Port 1999 auf dem lokalen Rechner

source s_tcp { tcp(ip(127.0.0.1) port(1999)); };

Filter

Filter haben einen klar identifizierbaren (einzigartigen) Namen, damit kann man in den Log statements auf die Filter zurückgreifen.

Syntax für ein Filter statement:

 filter <identifier> { expression; };

Expression kann die Operatoren "and", "or" und "not" beinhalten, und alle von den untestehenden Funktionen.

Filterfunktionen

facility() Wählt Nachrichten aufgrund ihres Facility Codes aus
level() or priority() Wählt Nachrichten aufgrund ihrer Priorität aus
program() Versucht aufgrund des Namens (regulärer Ausdruck) im Namensfeld der Nachrichten auszuwählen
host() Versucht aufgrund des angegebenen Hostnamens (regulärer Ausdruck) im Hostfeld der Nachrichten auszuwählen
match() Versucht aufgrund eines regulären Ausdrucks in der Nachricht selbst auszuwählen
message() Ersetzt ab 3.0 match()
match("regex" value("$MACRO")) Ab 3.0

Filtert auf Nachrichten der lpr-Facility

filter f_lpr { facility(lpr); }; 

Filtert auf Nachrichten, die "iptables" enthalten

filter f_iptables { match(iptables); };

Ziele

Eine destination ist der "Ausgang", wo die Nachrichten hingesendet werden wenn eine Filter Regel zutrifft.

destination <identifier> { destination-driver(params); destination-driver(params); ... };

Verfügbare Ziele

file Schreibt Nachrichten in die angegebene Datei
fifo, pipe Schreibt in die angegebene Named Pipe
unix-stream sendet Nachrichten an den angegebenen Socket
udp Sendet Nachricht an den angegebenen Host und UDP Port
tcp Sendet Nachricht an den angegebenen Host und TCP Port
usertty Sendet Nachricht an einen eingeloggten Benutzer
program Startet das angegebene Programm und schickt die Nachrichten als Standardeingabe

Schreibt nach /var/log/syslog

destination df_syslog { file("/var/log/syslog"); };

Schreibt in eine pipe zum Auslesen mit einer Konsole unter X

destination dp_xconsole { pipe("/dev/xconsole"); };

Sendet an alle eingeloggten Benutzer

destination du_all { usertty("*"); };    

Zusammenfassung

  • /etc/syslog-ng/syslog-ng.conf

Filter definieren

filter f_iptables { match(iptables); };

Ziel definieren

destination df_firewall { file("/var/log/firewall"); };

Log-"Pfad" definieren

log {
       source(s_all);
       filter(f_iptables);
       destination(df_firewall);
};

Exclude zu altem Filter hinzufügen

filter f_syslog { not facility(auth, authpriv) and not match(iptables); };
  • Firewall
...
iptables -A INPUT -j LOG --log-prefix="-iptables-in-"
iptables -A OUTPUT  -j LOG --log-prefix="-iptables-out-"
iptables -A FORWARD -j LOG --log-prefix="-iptables-for-"
...

Logging von IKE

destination d_ike { file("/var/log/ike"); };
filter f_ike { facility(auth, authpriv) and match(pluto); };
log { source(s_src); filter(f_ike); destination(d_ike); };

Netzwerklogging

Kommentarzeichen # vor udp(); entfernen, um Log-Einträge über das Netzwerk (UDP Port 514) zu empfangen

  • /etc/syslog-ng/syslog-ng.conf
...
source s_all {
       # message generated by Syslog-NG
       internal();
       # standard Linux log source (this is the default place for the syslog()
       # function to send logs to)
       unix-stream("/dev/log");
       # messages from the kernel
       file("/proc/kmsg" log_prefix("kernel: "));
       # use the following line if you want to receive remote UDP logging messages
       # (this is equivalent to the "-r" syslogd flag)
       udp();
};

DNS erlauben für Namensauflösung der Clients (optional)

...
       use_dns(yes);
       dns_cache(yes);
...

syslog-ng neustarten

root@zero:~# /etc/init.d/syslog-ng restart

syslog auf dem Client einrichten

  • /etc/syslog.conf
...
*.*    @192.168.242.12

syslog auf dem Client neustarten

root@kallen:~# /etc/init.d/sysklogd restart

Überprüfen der Funktionalität

tcpdump

root@zero:~# tcpdump -ni eth0 udp port 514
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
11:26:08.900825 IP 192.168.242.11.514 > 192.168.242.12.514: SYSLOG authpriv.info, length: 73
11:28:04.855498 IP 192.168.242.11.514 > 192.168.242.12.514: SYSLOG authpriv.info, length: 79
11:28:04.868755 IP 192.168.242.11.514 > 192.168.242.12.514: SYSLOG cron.info, length: 104
11:28:05.247020 IP 192.168.242.11.514 > 192.168.242.12.514: SYSLOG authpriv.info, length: 68

syslog auf dem Server

root@zero:~# tail /var/log/syslog -f
Jul 10 11:23:58 kallen syslogd 1.5.0#5ubuntu3: restart.
Jul 10 11:23:58 kallen anacron[2821]: Job `cron.daily' terminated
Jul 10 11:23:58 kallen anacron[2821]: Normal exit (1 job run)
Jul 10 11:25:04 kallen /USR/SBIN/CRON[4971]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 10 11:25:58 zero kernel: [93344.288627] device eth0 entered promiscuous mode
Jul 10 11:28:04 kallen /USR/SBIN/CRON[5067]: (root) CMD ([ -x /usr/sbin/update-motd ] && /usr/sbin/update-motd 2>/dev/null)

auth.log auf zero

Loginversuch auf Kallen

root@kallen:~# login
kallen login: gast
Passwort: gast

auth.log auf zero

root@zero:~# tail /var/log/auth.log -f
...
Jul 10 11:35:43 kallen login[5320]: pam_unix(login:auth): check pass; user unknown
Jul 10 11:35:47 kallen login[5320]: FAILED LOGIN (2) on 'pts/1' FOR `UNKNOWN', Authentication failure

Weitere Log-Dateien

  • /var/log/daemon.log : Logdatei für Hintergrunddienste
  • /var/log/kern.log : Logdatei für Kernelmeldungen
  • /var/log/mail.log : Logdatei für Mails (auf Mailservern)
  • /var/log/messages : Allgemeine Meldungen