Syslog Server unter 10.4 Tiger / syslogd

raubsauger

raubsauger

Aktives Mitglied
Thread Starter
Dabei seit
09.04.2004
Beiträge
690
Reaktionspunkte
584
Hallo Community,

hab mich letzte Nacht an mein Powerbook gesetzt um syslogs von meinen Routern, Firewalls und managed Switches auf einem Mac zu sammeln und zu sichten. Läuft nun bestens, deshalb mein HowTo für Euch:

HOWTO

Syslog Server (syslogd) unter OSX 10.4 Tiger
13.08.2005 |


1. Aktivieren des Empfangs externer syslogs von Routern, Switches oder anderen Macs

Im Terminal die Starteinstellung für syslogd sichern und dann erweitern (/System/Library/LaunchDaemons/com.apple.syslogd.plist)

Zuerst ein Backup:

sudo cp /System/Library/LaunchDaemons/com.apple.syslogd.plist com.apple.syslogd.plist.bak

Mit pico die com.apple.syslogd.plist Datei öffnen:

sudo pico /System/Library/LaunchDaemons/com.apple.syslogd.plist

Suchen nach:

<string>/usr/sbin/syslogd</string>

direkt darunter einfügen:

<string>-u</string>

dann speichern (ctrl-o) und pico beenden (ctrl-x)

Dies sagt dem Prozess am UDP Port 514 Daten anzunehmen. Also falls aktiviert die OSX Firewall für diesen Port öffnen.

Nun den Mac neu starten, oder den Prozess beenden und mit den erweiterten Starteinstellungen neu starten:

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

2. Funktion nach cron-Neustart wiederherstellen

Stop und Start noch in eine cron-datei eintragen, die vom Script /etc/periodic/daily/500.daily automatisch aufgerufen wird

sudo pico /etc/daily.local

Hier eintragen:

launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
sleep 1
launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

speichern (ctrl-o) und pico beenden (ctrl-x)

3. Logdateien anlegen und zuordnen

Jedes externe Gerät sollte in eine eigene Log-Datei schreiben, diese legen wir an mit:

sudo touch /var/log/meingerät.log (z.b. firewall_home.log)

Jetzt die Preference-Datei des syslogd sichern, und bekannt geben was in den Logfile eingefügt werden soll:

sudo cp /etc/syslog.conf syslog.conf.bak
sudo pico /etc/syslog.conf

Am Ende der conf einfügen:

local1.* /var/log/meingerät.log (z.b. firewall_home.log)

speichern (ctrl-o) und pico beenden (ctrl-x)

Möglich ist local1 bis local7, nach dem Punkt steht der Filter, * für alles, mit z.b. err / emerg / notice / info / crit /alert können die Logs vor dem Speichern gefiltert werden. Zwei tabs und dann der Pfad zur Logdatei.

Am externen Gerät die Rechner-IP Nummer als Ziel für das Log eingeben, von local1 bis local7 passend zum Eintrag in der syslog.conf einstellen und speichern, ggf. neustarten.

4. Logrotation einrichten

Im Script /etc/periodic/weekly/500.weekly werden die neu angelegten Logfiles zur Rotation mit eingetragen. Auch dieses Script killt den syslogd, den wir mit unseren Starteinstellungen anschließend wieder starten. Das Terminalfenster breit aufziehen und:

sudo pico /etc/periodic/weekly/500.weekly

Suchen nach

cd /var/log
for i in ftp.log lookupd.log lpr.log mail.log netinfo.log hwmond.log ipfw.log ppp.log usw

hier die eigenen Logfiles anfügen, speichern und pico beenden.

Dieses Script ruft am Ende /etc/weekly.local auf, mit dem wir den syslogd wieder starten:

sudo cp /etc/daily.local /etc/weekly.local

5. Logfiles sichten

Logifiles dann per Terminal (tail -f /var/log/meingerät.log) aufrufen
oder im Finder mit dem Tool Konsole ansehen.


thx to all freaks on many websites who helped me to learn unix / shell, syslogging and more.


Hoffe jemand kann das brauchen!

..verd.., das weekly script hat nach dem Logrotate den syslogd neugestartet, ohne die -u Option. Hab das gefixxt und das Howto ergänzt.
 
Zuletzt bearbeitet:
Hallo raubsauger,

kann das sehr wohl brauchen :) danke für's HOWTO!

Möchte den Log von meinem Router mal genauer überwachen (Siemens SE515 dsl), aber da habe ich leider nicht die Möglichkeit die Einstellung "localx" zu machen, da kann ich nur die IP und den Port des Servers angeben.

Sonst habe ich alles exact so eingetragen wie in Deinem HOWTO, aber in der Log-Datei erscheint nichts. Kann ich den syslogd irgendwie dazu überreden die Log-Daten anzunehmen, obwohl ich im Router nicht die Einstellung localx habe?
 
Zuletzt bearbeitet:
Nachdem meine Router und Switches das können hab ich mich damit nicht befassen müssen. Denke Du musst rausfinden welche Voreinstellung der Router hat. Evtl. kann man ja auch am syslog-server über local* alles was reinkommt sammeln?
 
Danke erstmal für die schnelle Antwort!

Hab jetzt gesehen, dass das komplette Router-Log mit in /var/log/system.log geschrieben wird. Werde mich noch was damit befassen.
 
Sie mal in der /etc/syslog.conf nach ob da ein local* Eintrag drin ist. Wenn nicht verwendet der Router die gleiche localX.* wie das syslog. Genial von den Programmierern dieses Teils. Kann keiner so brauchen...
 
Es sieht so aus dass Du recht hast ...
es ist nur ein local0.* Eintrag drin, d.h. der Router mischt sein Log mit in mein System wenn ich die Überwachung starte...

von mir ist nur die letzte Zeile der /etc/syslog.conf, sonst hab ich darin nichts geändert.
Code:
# The authpriv log file should be restricted access; these
# messages shouldn't go to terminals or publically-readable
# files.
authpriv.*;remoteauth.crit                    /var/log/secure.log                                     
lpr.info                                      /var/log/lpr.log
mail.*                                        /var/log/mail.log
ftp.*                                         /var/log/ftp.log
netinfo.err                                   /var/log/netinfo.log
install.*                                     /var/log/install.log
install.*                                     @127.0.0.1:32376
local0.*                                      /var/log/ipfw.log

*.emerg                                       *

local1.*                                      /var/log/my_router.log
 
Da kannst Du wohl nur noch suchen ob sich der Siemens per Telnet einstellen lässt. Falls er eine editierbare autoexec.net oder sowas hat.

Kauf beim nächsten Mal einen Zyxel.
 
Hallo raubsauger - schöne kleine Anleitung; übersichtlich und informativ.
Gratuliere.

Ich hätte noch zwei Anmerkungen zu machen.
1. Anstatt die launchctl unload - load Kommandos durch ein "sleep 1" zu trennen, würde ich vorschagen die beiden durch && zu verknüpfen.
Code:
launchctl unload ... && launchctl load ...
So wird das load Kommando sofort ausgeführt nachdem das unload erfolgreich abgeschlossen ist.
Bei den aktuellen 10.4. Versionen ist das "reloaden" glaube ich gar nicht mehr notwendig.

2. Man sollte vielleicht noch erwähnen, dass die Option -u beim syslogd für `unsecure' steht. Nicht ganz zu Unrecht, da sie in bestimmten Situationen für einen DoS Angriff missbraucht werden kann.
 
Naja, nahezu jeder offener Eingang kann für einen Angriffsversuch verwendet werden, und was sollten wir sonst tun, um die Logs zu sammeln? Fühl mich da zumindest mit dem Mac sicherer als einen fertigen Syslogserver unter Windoof einzurichten.

Hatte in einer Anleitung gelesen das das sleep commando sinnvoll ist um nicht neu zu starten bevor wirklich alles gestoppt wurde...
 
raubsauger schrieb:
Naja, nahezu jeder offener Eingang kann für einen Angriffsversuch verwendet werden,
...
Ja, aber nicht immer ganz so einfach wie dieser.
Ich wollte Dich auch nicht kritisieren, sondern das einfach nochmal ins Bewustsein bringen.
 
@ theHobbit

Bist Du schon weitergekommen? Habe ein ähnliches Problem. Kann bei meinem zu überwachendem Gerät auch nur IP und Port einstellen.

Gibt es eine Möglichkeit zu checken, ob das Gerät auch wirklich sendet?

Viele Grüße
Lutz
 
Ja, einen Netzwerksniffer.
Im Terminal kannst Du z.B. folgendes machen:
Code:
sudo tcpdump udp port syslog
 
maceis schrieb:
Ja, aber nicht immer ganz so einfach wie dieser.
Ich wollte Dich auch nicht kritisieren, sondern das einfach nochmal ins Bewustsein bringen.

Hab das nicht als Kritik aufgefasst, sondern als sinnvollen Hinweis. Ich kenne nur keine andere Lösung als "-u".

Wie kann man da angreifen?
 
@maceis

Danke Dir, scheint zu klappen. Der empfängt ordentlich Daten. Jetzt muss ich sie nur noch irgendwie auslesen können.

Was bedeutet denn die .1024 hinter der ersten IP?

Code:
...
10:32:27.196451 IP 192.168.178.6.1024 > 192.168.178.3.syslog: UDP, length: 115
10:32:28.353865 IP 192.168.178.6.1024 > 192.168.178.3.syslog: UDP, length: 66
10:32:28.630496 IP 192.168.178.6.1024 > 192.168.178.3.syslog: UDP, length: 128
10:32:30.132497 IP 192.168.178.6.1024 > 192.168.178.3.syslog: UDP, length: 126
...

Viele Grüße
Lutz
 
Das ist der Port, den das Gerät mit der IP 192.168.178.6 (vermutlich der Router) verwendet.
raubsauger schrieb:
...
Wie kann man da angreifen?
Falsche Frage!
Die richtige Frage lautet, "Wie kann man sich schützen".
Vorschläge, bitte ;).
 
Das ist aber komisch. Ich habe doch als Port expilzit den 514 eingestellt. Müsste es dann z. B. nicht heißen:

Code:
...
10:32:28.630496 IP 192.168.178.6.517 > 192.168.178.3.syslog: UDP, length: 128
...

Habe aber auch mal den Port zum Testen auf 207 gewechselt. Da passiert mit

Code:
sudo tcpdump udp port syslog

aber gar nichts.

Noch eine Idee???

Grüße
Lutz
 
Lutz schrieb:
Das ist aber komisch. Ich habe doch als Port expilzit den 514 eingestellt. Müsste es dann z. B. nicht heißen:
...
1024 ist doch der Quellport des Syslogclients auf dem Router - 514 ist der Zielport des Servers.
92.168.178.3.syslog bedeutet das selbe wie 92.168.178.3.514

Den Port braucht man nirgends einstellen; das kann man auch gar nicht, weil der fest einkompiliert ist. Du meinst vermutlich die Freigabe des Ports auf der Firewall.
 
maceis schrieb:
Das ist der Port, den das Gerät mit der IP 192.168.178.6 (vermutlich der Router) verwendet.
Falsche Frage!
Die richtige Frage lautet, "Wie kann man sich schützen".
Vorschläge, bitte ;).

Alle Netze hängen mit einer Zywall 10W oder der neueren ZW5 am WAN. Firewalls so dicht wie möglich. Verbindungen unter den Netzen laufen über VPN. Auf den OSX Servern die Firewall handkonfiguriert, alle Clients Standardfirewall zu, nur nötige Ports offen. Logfiles der Router/WAN-Firewalls laufen auf und ich kann jederzeit mitlesen.

Netzwerküberwachung der Switches fehlt noch - steht auf dem "Wunschzettel".

Noch Vorschläge?
 
Nun ja, das ist jetzt alles sehr allgemein.

Ich wollte eigentlich nur darauf hinaus, dass man auf dem Rechner, auf dem der syslogd läuft nicht den Port 514/udp generell aufreissen soll, sondern ausschließlich für das/die Gerät/e, die auch auf dem Rechner loggen sollen.
Auf wichtigen Servern (Fileserver, Mailserver etc.) hat ein syslogd nichts zu suchen, wenn man sich nicht gerade in einem sehr vertrauenswürdigen LAN befindet. Ein Firmennetzwerk ist z.B. IMO nicht vertrauenswürdig.
 
Hallo,

Vorweg, ich habe 10.5, was aber laut Manpage kein unterschied machen soll.

Also ich hab das nu so wie in der Beschreibung gemacht (bis auf die cron-jobs, die scheinen bei 10.5 irgendwo anders zu liegen, sollten aber denk ich keinen großen Einfluss auf die Funktion haben...zumindest am anfang noch nicht), ich bekomm auch irgendwas zugesendet

Code:
12:09:18.353252 IP 10.13.37.13.syslog > 10.13.37.42.syslog: SYSLOG local3.warning, length: 174
12:09:18.353490 IP 10.13.37.13.syslog > 10.13.37.42.syslog: SYSLOG local3.warning, length: 174
12:09:18.353780 IP 10.13.37.13.syslog > 10.13.37.42.syslog: SYSLOG local3.warning, length: 174
12:09:18.354062 IP 10.13.37.13.syslog > 10.13.37.42.syslog: SYSLOG local3.warning, length: 174

nur wird es mir nicht in die log geschrieben.

Im Router local3 eingestellt die config zeigt auf local3.* /var/log/router.log.

Jmd. ne Ahnung wo das Problem liegen könnte?

MfG
 
Zurück
Oben Unten