Syslog-ng: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 8: Zeile 8:
  
 
===Die Datei /etc/syslog.conf===
 
===Die Datei /etc/syslog.conf===
Jede Zeile dieser Datei, die nicht leer ist oder mit einem # beginnt, beschreibt eine Regel, was mit einer bestimmten
+
*[[syslog.conf]]
Meldung passieren soll. die grundlegende Form jeder Zeile ist immer gleich und lautet:
 
  Herkunft.Priorität    Aktion
 
 
 
'''Herkunft, auch Syslog-Facility'''
 
{| border=1 cellpadding=2
 
|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'''
 
{| border=1 cellpadding=2
 
|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'''
 
{| border=1 cellpadding=2
 
| /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-ng==
Zeile 192: Zeile 85:
 
|-
 
|-
 
|message()   
 
|message()   
|Ersetz ab 3.0 match()
+
|Ersetzt ab 3.0 match()
 
|-
 
|-
 
|match("regex" value("$MACRO"))
 
|match("regex" value("$MACRO"))
Zeile 268: Zeile 161:
 
  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===

Aktuelle Version vom 5. September 2016, 10:03 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

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