Syslog Next Generation

Installation:

Es müssen zwei Packete geladen werden, um den Syslog-ng Server zu installieren. Einerseits benötigen wir das Packet Syslog-ng in seiner neuesten Version und zum zweiten müssen wir die Library libol, die vom gleiche Author wie Syslog-ng stammt installieren
libol-0.3.14 Installation:
./configure
make && make install
syslog-ng-1.6.5
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-tcp-wrapper
make && make install
grpadd syslog-ng
useradd syslog-ng -d /home/syslog-ng
Jetzt haben wir einen neuen Syslog Server installiert. TCP Wrapper greift auf die Dateien host.deny und host.allow zu. Habe ich zwar bis jetzt noch nicht gebraucht, da mein Server im internen LAN steht und ich da keine Befürchtungen habe. Zusätzlich werden wir den Syslog-ng Server noch als User syslog-ng starten. Das sollte genügend Security sein.
syslog-ng -u syslog-ng

Konfiguration:

Als erstes legen wir im Verzeichniss /etc einen Ordner syslog-ng und darin eine Datei mit dem Namen syslog-ng.conf an. Das ist eine einfache Konfigurationdatei von Syslog-ng.
options { sync (0);
          chain_hostnames(yes);
          time_reopen(10);
          log_fifo_size(1024);
          use_dns(yes);
          use_fqdn(yes);
          owner(root);
          group(syslog-ng);
          perm(0640);
          create_dirs(yes);
          dir_owner(syslog-ng);
          dir_group(syslog-ng);
          dir_perm(0750);
        };

source s_loc {pipe ("/proc/kmsg" log_prefix("kernel: ")); unix-stream("/dev/log"); internal(); };
source s_udp { udp(); };

destination d_local {
  file("/home/syslog-ng/$HOST/$YEAR-$MONTH-$DAY.$FACILITY.log"
  template("[$HOUR:$MIN:$SEC] $PRIORITY $FACILITY $PROGRAM $MESSAGE\n"));
};
destination d_iptables {
  file("/home/syslog-ng/$HOST/$YEAR-$MONTH-$DAY.iptables.log");
  template("[$HOUR:$MIN:$SEC] $PRIORITY $FACILITY $PROGRAM $MESSAGE\n"));
};

filter f_iptables { match("[Ii]ptables"); };

log { source(s_loc); source(s_udp); filter(f_iptables); destination(d_local); };
Desweiteren müssen wir noch den Ordner /home/syslog-ng anlegen, falls es beim useradd noch geschehen ist. In meiner Konfigurationsdatei werden die Logs in dieses Verzeichniss geschrieben. In dem Verzeichniss wird automatisch ein Ordner mit dem Namen des Servers angelegt. Wenn er die IP Auflösen kann, bekommt der Ordner den Namen vom Server. Die Logs werden im Verzeichniss mit folgender Fomatierung erstellt.
$YEAR-$MONTH-$DAY.$FACILITY.log == 2004-10-07.authpriv.log
Wie man sieht, gibt es ein paar wirklich sinnvolle Variablen, die man in der Konfiguration nutzen kann.
In der options Schleife stehen globale Einstellungen.
  • Sync: 0 Bedeutet, das er die Logs sofort auf die Platte schreibt und nicht cached.
  • log_fifo_size: Anzahl der Zeilen die Zwischengespeichert werden.
  • chain_hostnames: Wenn man die Logs weiterleitet, kann jeder Server in den Logs miteingetragen werden.
  • time_reopen:Verbindung neu herstellen.
  • use_dns: Hostname auflösen?
  • use_fqdn: Benutze vollen Domainnamen anstatt des Hostnamens.
  • owner: Wer ist der Owner der Logs.
  • group: Welcher Gruppe gehören die Logs.
  • perm: Welche Permission haben die Logfiles.
  • create_dir: Soll ein Ordner erstellt werden, wenn dieser nicht vorhanden ist.
  • dir_owner: Wenn gehört der Ordner.
  • dir_group: Welcher Gruppe gehört der Ordner.
  • dir_perm:Permission vom Ordner.

  • Mit dem Source Objekt suchen wir nach Meldungen im System. Das Device /proc/kmsg gibt uns die Kernelmeldung, /dev/log ist das Device für Syslogmeldungen und internal gibt uns Meldungen vom Syslog-ng wieder. Das zweite Source Objekt öffnet das UDP Port 514 und nimmt Logs von entfernten Rechnern an. Wobei der Syslog beim entfernten Rechner noch konfiguriert werden muss. Sieh am Ende der Dokumentaion nach.
    Das Destination Objekt, gibt den Syslog-ng Server bekannt, wo die Logs gespeichert werden. Es gibt hier sehr gute Variablen die man nutzen sollte. Mit dem Template lassen sich die Logs gestalten.
    Das Objekt Filter gibt uns die Möglichkeit nach einträgen im Log zu suchen.
    Mit dem Objekt Log werden die Objekte Source, Filter und Destination zusammengeführt.
    Zusammenfassung:
    Unsere erste Syslog-ng Konfiguration loggt alle Meldungen nach /home/syslog-ng/$HOST und legt für jeden Tag ein neues Logfiles an. Wobei alle Meldung, wo iptables vorkommen in ein eigenes File geschrieben werden.

    Weiteres:
    Wenn ich die Logs mit Syslog-ng an einen weiteren Server schicken möchte sind folgende Einträge nötig.
    destination away { udp("172.14.35.100" port(514)); };
    log { source(s_loc); source(s_udp); destination(away); };
    
    Um einen normalen Syslog - Server dazu zu bringen seine Logs an einen anderen Server zu schicken ist in der Datei /etc/syslog.conf fogender Eintrag nötig.
    *.*                                                   @172.14.35.100
    Weiterführende LinksLinks
    Umfangreiches Syslog-ng Konfigurationsfile
    Deutsche Syslog-ng Reference
    Deutsche Dokumentation
    Linux Magazin Artikel
    Original Homepage