pflog und pflog.0.gz kopieren per newsyslog

Morgen,

ich würde gerne das "Live-Log" sowie die erste Kopie von pflog als Kopie in einem Ordner eines unterpriviliegieren Nutzers per newsyslog schieben lassen, sowie die Rechte auf diesen ändern lassen und umbenennen.

Ist das überhaupt möglich und wie stelle ich es an?
 
Schreib ein kleines Script und ruf es anschließend auf. Häng es einfach an das HUP mit ran:
Code:
"pkill -HUP -u root -U root -t - -x pflogd && /home/user/bin/copy_and_chown.sh"
 
@ mapet: geht dein Vorschlag auch beim live-pflog

bei mir steht es so, dass er ein logrotate durchführt ab einer bestimmten Größe

/var/log/pflog 600 3 250 * ZB "pkill -HUP -u root -U root -t - -x pflogd"

Kann ich deinen Befehl einfach unten zusätzlich in newsyslog.conf anfügen oder gibt es dann Probleme?

*****************************************************************************************

Das mit dem cronjob ist kein Problem...diese Lösung liegt schon fertig und getestet wieder in der Schublade! Die Realisierung erfolgt mit einem Script, welche durch crontab aller 5 Sekunden aufgeführt wurde und das livelog überspielte per pull-Prinzip ...

schön wäre es jetzt wenn newsyslog oder eine andere Instanz das Live-Log bei Einträgen bzw. die pflog.0.gz per push-Prinzip in einen Ordner eines unterpriviligierten Nutzers speichert - alles aber als Kopie!

Gibt es eigentlich eine andere Möglichkeit die binäre pflog.0.gz in Textform umzuwandeln außer tcpdump?
 
@ mapet: geht dein Vorschlag auch beim live-pflog

bei mir steht es so, dass er ein logrotate durchführt ab einer bestimmten Größe

/var/log/pflog 600 3 250 * ZB "pkill -HUP -u root -U root -t - -x pflogd"

Kann ich deinen Befehl einfach unten zusätzlich in newsyslog.conf anfügen oder gibt es dann Probleme?

Die Zeile sind nur die Defaulteinstellungen. Du kannst natürlich die Berechtigungen, mit denen das Log angelegt wird auch ändern, allerdings würde ich dir empfehlen, "doas" zum Lesen zu benutzen. Mein Befehl ist als Ersatz für den vorhandene in den Anführungszeichen gedacht (ist sogar derselbe bis zum && ;)).

*****************************************************************************************

Das mit dem cronjob ist kein Problem...diese Lösung liegt schon fertig und getestet wieder in der Schublade! Die Realisierung erfolgt mit einem Script, welche durch crontab aller 5 Sekunden aufgeführt wurde und das livelog überspielte per pull-Prinzip ...

schön wäre es jetzt wenn newsyslog oder eine andere Instanz das Live-Log bei Einträgen bzw. die pflog.0.gz per push-Prinzip in einen Ordner eines unterpriviligierten Nutzers speichert - alles aber als Kopie!
Soweit ich weiss ist die minimale Ausführungszeit von cron minütlich und nicht sekündlich. Wenn du das ganze mit newsyslog machen möchtest, solltest du ein eigenes Kopierskript an den Befehl anhängen und dauerrotation einschalten (newsyslog wird standardmäßig stündlich aufgerufen; wie das geht stand in meinem Beispiel). Natürlich solltest du dann auch darauf achten, genügend Logs vorzuhalten, damit du nicht ab der 4. Stunde beginnst, die Dateien zu ersetzen.

Generell würde ich empfehlen, dass log täglich zu rotieren und ggf. 30/60/90 Tage aufzubewahren. Wenn du den tcpdump auf das aktuelle Logfile in einem tmux laufen lässt, brauchst du nur in das Fenster zu wechseln und hast dein "livelog".

Gibt es eigentlich eine andere Möglichkeit die binäre pflog.0.gz in Textform umzuwandeln außer tcpdump?
Nein. Das Logformat von pf ist nunmal mit tcpdump zu lesen.
 
schön wäre es jetzt wenn newsyslog oder eine andere Instanz das Live-Log bei Einträgen bzw. die pflog.0.gz per push-Prinzip in einen Ordner eines unterpriviligierten Nutzers speichert - alles aber als Kopie!

Gibt es eigentlich eine andere Möglichkeit die binäre pflog.0.gz in Textform umzuwandeln außer tcpdump?

Alternativ könntest Du dir auch mal z.B. syslog-ng aus den ports anschauen. Das kann die logfiles sogar übers Netzwerk auf einen anderen Server übertragen, was bei firewalls schon eine interessante Möglichkeit ist.

Warum willst Du die pflog.0.gz denn in Textform umwandeln? Du kannst die .gz-files auch einfach per ``zcat pflog.0.gz'' ausgeben lassen, ohne diese vorher jedesmal mit tar zu entpacken.
 
Alternativ könntest Du dir auch mal z.B. syslog-ng aus den ports anschauen. Das kann die logfiles sogar übers Netzwerk auf einen anderen Server übertragen, was bei firewalls schon eine interessante Möglichkeit ist.
Das können die meisten syslogs. Der von OpenBSD auch per TCP mit TLS. bluhm@ hat seine Arbeit direkt im ersten Talk am Sonntag auf der EuroBSDCon vorgestellt.
 
@ midnight: Die Textform benötige, da ich bei Änderungen der Datei die Datei kopieren und per apache/php verfügbar mache zum Auswerten!

@mapet: Gibt es hierfür eine Umsetzungsleitfaden bzw. eine Anleitung???
 
Schau mal hier, ob dir das weiterhilft. Der Post von midnight bezog sich wohl eher darauf, dass syslog-ng eine Datei von der Platte lesen und dann streamen kann. Ob das so ohne weiteres mit syslogd möglich ist, weiss ich aus dem Stehgreif nicht.
 
Da ich obigen Beitrag nicht mehr editieren darf, hier als neuer:
Ich hab mir jetzt mal den Link oben genauer angeschaut und dort wird genau das beschrieben, was du machen möchtest. Logfile nach ASCII konvertieren und per syslogd wegschreiben lassen. Das Skript kannst natürlich soweit abändern, dass er eine weitere Datei anlegt/erweitert, die dann evtl. mit anderen Rechten woanders liegt. Bedenke aber, dass sie anschließend auch rotiert werden sollte.
 
@mapet
Schau mal hier, ob dir das weiterhilft. Der Post von midnight bezog sich wohl eher darauf, dass syslog-ng eine Datei von der Platte lesen und dann streamen kann. Ob das so ohne weiteres mit syslogd möglich ist, weiss ich aus dem Stehgreif nicht.

Den Ansatz mit syslog-ng finde ich gut ... wo finde ich hier weiter Information, um es mit newsyslog umzusetzen und dann einfach per udp-stream an einen Server zu senden bzw. soll ich einen neuen Tread aufmachen!?
 
Zurück
Oben