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