syslog-ng, pflog - tcpdump: bad format

halloICKEbins2

Active Member
Mahlzeit,

ich lasse mir mittels Stream(per syslog-ng 1.2.3.4 port 514 udp) die binären Daten von pflog an meinen Log-Server schicken , welche auf dem Port lauscht und die Daten in eine Datei schreibt.

Jetzt hatte ich gehofft diese Informationen mit tcpdump -netttr /var/log/mydata in Klartext zu übersetzen. Leider bekomme ich immer die Fehlermeldung:

tcpdump: bad dump file format

Wie muss ich den Stream bearbeiten bzw. senden bzw. empfangen, damit er lesbar wird?

PS: Ich möchte tcpdump nur auf dem Log-Server ausführen!
 
....
Aug 16 12:41:11 Server01 <A7><97>V^By!<98>L><B9><B1>Zb<8C>)<D2><B3><A5>^B^Su<B1>D^S<E7><CD>n<A1>,^X^Y^ZESC^\^]^^^_^T<88>V]<AB><BB>^A
Aug 16 12:41:11 Server01 <A0>
Aug 16 12:41:11 Server01 <B8>
....

Wenn ich aber "Aug 16 12:41:11 Aug 16 12:41:11 Server01" wegnehmen, sagt er immer noch falsches Format...

Ich denke die Lösung ist es den Sender dazu zu bewegen diesen Anfangsstring nicht zu senden!
Aber wie? Ich kenne die Syntax dazu leider nicht und habe auch nichts gefunden.
 
Port 514 ist halt wohldefiniert und muss einem bestimmten Protokoll entsprechen. Wie kommst du auf die Idee, da irgendwelchen Binärmüll hinzuschicken?

pflog(4) hat absolut nicht das Geringste mit syslog zu tun.
 
@TCM

Vielleicht habe ich mich unklar ausgedrückt. Ich nutze syslog-ng um pflogd-Logging von meiner Firewall an einen Server zu senden. In meinem Beispiel vielleicht ungünstig gewählt mit udp 514. Ich werde hier richtigkeitshalber eine nicht reservierten Port nehmen um meine Stream an den Server zu übertragen.

Mein Anliegen besteht eher darin, wie ich die geschickten Binärdaten von pflogd auf dem Server mit TCPDUMP richtig in Klartext übersetzen kann und zum Anderen mittels syslog-ng auf der Firewall die Daten direkt von pflog0-Interface abzugreifen und nicht aus /var/log/pflog.


@KobRheTilla

Ich kann es leider erst am Montag testen, ob ich damit weiterkommen...aber schon einmal schönen Dank für den Tipp.
 
Das ergibt alles keinen Sinn.

pflog(4) und pflogd(8) behandeln ausschließlich Daten im tcpdump-Format. Der Punkt ist nicht, einen anderen Port zu verwenden, die Daten passen überhaupt nicht zu syslog. Syslog ist kein Protokoll für beliebige Binärdaten. Da kannst du gleich netcat nehmen.

Das Einzige, was du machen kannst: Auf der Firewall ein tcpdump laufen lassen, was die Daten vom pflog-Interface greift und als Klartext wegloggt und den Klartext dann per Syslog übertragen.

Edit: Oder aber ganz anderer Ansatz: https://bsdly.blogspot.com/2014/02/yes-you-too-can-be-evil-network.html
 
Aber das ist ja schon Mal eine Aussage, die ich bis jetzt noch nirgends gefunden habe, dass ich die Binärdaten nicht mit syslog-ng übertragen kann...Danke

Das Andere werde ich mir Montag in Ruhe anschauen.
 
@TCM

Habe mir den Ansatz https://bsdly.blogspot.com/2014/02/yes-you-too-can-be-evil-network.html einmal angeschaut - kann ich leider nicht so nutzen, wie ich es gerne hätte, da ich "keep state (pflow)" nur auf pass Regel setzen kann und mein Fokus aber auf den Blocks liegt.

@KobRheTilla

Die zusätzlichen Flags aber ich durchgetestet, aber leider ohne Erfolg - immer tcpdump: bad format (siehe TCM's Post über die binäre Lesbarkeit).


Meine Lösung ist jetzt mir die Logs zu mounten und alle 5 Sekunden rotieren zu lassen. Nicht Echtzeit aber besser als nichts!

Es sei denn jemand kennt sich mit der Programmierung von C und pflogd aus, um es so umzuschreiben, dass es öfters rotiert?!
 
Die zusätzlichen Flags aber ich durchgetestet, aber leider ohne Erfolg - immer tcpdump: bad format

Auch wenn ich die Kritik von den anderen nachvollziehen kann, sollte es dennoch möglich sein, syslog(-ng) für den Transport der Daten nutzen zu können. Das Problem ist eben, dass du hier keine Infos bringst, wie genau du syslog-ng konfiguriert hast, sowohl client- als auch serverseitig. Du musst syslog-ng natürlich auch noch so konfigurieren, dass es die raw-Daten entsprechend rausschreibt. Dafür hilft dir die Suchmaschine deines Vertrauens mit Hilfe der Stichworte, die ich bereits geschrieben hatte.

Wenn du Hilfe willst, musst du auf jeden Fall mehr Informationen liefern - das sollte eigentlich klar sein, wenn man ein Forum besucht.

Rob
 
Firewall:
/etc/syslog-ng/syslog-ng.conf
source d_pflogd { unix-stream ("/var/log/pflog"); internal(); };
destination logserver { udp(ip (1.2.3.4) port(5550)); };
log { source(d_pflogd); destination(d_logserver); }

Logserver:
/etc/syslog-ng/syslog-ng.conf
source s_stream { udp(port(5550)); };
destination d_file { file("/var/log/firewall1" owner(root) group(wheel) perm(0644)); };
log { source(s_stream); destination(d_file); };
 
Hi,

source d_pflogd { unix-stream ("/var/log/pflog"); internal(); };

Bitte lies dir mal das Handbuch durch. Das Stichwort internal() ergibt keinen Sinn, denn:
internal(): Messages generated internally in syslog-ng.

Du willst aber Daten weiterschicken, die nicht von syslog-ng kommen.
unix-stream() ist ebenso Humbug, du liest hier von keinem Socket, sondern von einer Datei (/var/log/pflog).

https://www.syslog-ng.com/technical...ion/3.16/administration-guide/16#TOPIC-956447

Rob
 
Pflogd schreibt kein Klartext , man muss immer einen Umweg via pcap / tcpdump nehmen , deswegen kann man die /var/Log/pflog NICHT ! Direkt in syslog , welcher Dämon auch immer , einbinden.

Holger
 
Ach sorry...habs nur schnell reinkopiert...hatte es vorher so zu stehen: source d_pflogd { unix-stream ("/dev/pf_test"); internal(); }; - hatte mir pflogd -f /dev/pf_test gegegben, was wenn ich es richtig lese auch falsch war ... war wahrscheinlich noch aus dem Versuch das pflog0 direkt zu streamen übrig geblieben... also müsste ich dann schreiben: source d_pflogd { file("/var/log/pflog"); };
 
Was verstehst du unter transportieren ?

Einen kontenuirlichen pcap Daten Stream via syslog ?

Während mir neu , das das geht , und wenn spraechen viele Punkte dagegen es
Mit udp/512 zu machen.

Holger
 
Zurück
Oben