[solved] nftables logging: eigenen file statt syslog

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
ingo2
Beiträge: 782
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

[solved] nftables logging: eigenen file statt syslog

Beitrag von ingo2 » 01.01.2019 14:39:25

Ich habe mich jetzt mal etwas mit nftables beschäftigt und (unter Buster) eine Firewall für meinen PC eingerichtet (soll später auch in Stretch laufen). Das klappt auch recht gut und man sieht auch schön, wer da alles im Heimnetz mit meinem PC sprechen möchte.

Dafür hab ich dann Logging für alle abgewiesenen Pakete am Ende der input-chain aktiviert:

Code: Alles auswählen

	# count, log and drop any other traffic
	counter log drop
Das unschöne dabei:
alles Logging geht ins syslog und ist mühsam zusammenzuklauben. Soweit ich weiß, sind die Log-Ausgaben sogar Wireshark-kompatibel, mein Wunsch daher:

ein eigenens Logfile für nftables.
Ist das einfach machbar und wenn ja, wie?

Happy New Year,
Ingo
Zuletzt geändert von ingo2 am 01.01.2019 21:52:41, insgesamt 1-mal geändert.

MSfree
Beiträge: 4553
Registriert: 25.09.2007 19:59:30

Re: nftables logging: eigenen file statt syslog

Beitrag von MSfree » 01.01.2019 15:09:14

Seit der Umstellung auf systemd wird eigentlich in das Journal geloggt, das man mit journalctl abfragen kann. Das Journal ist per Design eine einzige zusammenhängende Binärdatei, mehrere Dateien sind nicht vorgesehen.

Wem das nicht paßt (mir paßt das z.B. auch nicht) muß Debianrsyslog installieren, wobei man dann in /etc/systemd/journalctl.conf das Journal auch abschalten kann. Mit den Filteroptionen von rsyslogd kann man dann praktisch für jeden Zweck in eigene Dateien loggen,

Benutzeravatar
ingo2
Beiträge: 782
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: nftables logging: eigenen file statt syslog

Beitrag von ingo2 » 01.01.2019 18:34:37

MSfree hat geschrieben: ↑ zum Beitrag ↑
01.01.2019 15:09:14
Mit den Filteroptionen von rsyslogd kann man dann praktisch für jeden Zweck in eigene Dateien loggen,
Danke für die schnelle Antwort. Debianrsyslog ist sogar schon installiert, da es ein upgrade von Stretch ist.
Jetzt aber die große Frage:

Auschnitt aus /etc/rsyslog.conf

Code: Alles auswählen

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*			/var/log/auth.log
*.*;auth,authpriv.none		-/var/log/syslog
#cron.*				/var/log/cron.log
daemon.*			-/var/log/daemon.log
kern.*				-/var/log/kern.log
lpr.*				-/var/log/lpr.log
mail.*				-/var/log/mail.log
user.*				-/var/log/user.log
Wie filtere ich denn jetzt die Meldungen von Debiannftables raus?
einfach nft.* geht nicht, wie heißt denn die "facility"?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: nftables logging: eigenen file statt syslog

Beitrag von rendegast » 01.01.2019 18:54:51

Auschnitt aus /etc/rsyslog.conf
Das ist noch eine alte rsyslog.conf, die natürlich verarbeitet wird.
Lade das rsyslog-Paket herunter, es enthält die rsyslog.conf in neuerem Format, das an passender Stelle rsyslog.d/*.conf referenziert.
Dort können Meldungen gefiltert, in neue Dateien geleitet und weitere Verarbeitung unterbunden werden.
Es ist evtl. noch ein logrotate für diese selbstangelegten Dateien zu erstellen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

MSfree
Beiträge: 4553
Registriert: 25.09.2007 19:59:30

Re: nftables logging: eigenen file statt syslog

Beitrag von MSfree » 01.01.2019 19:33:40

ingo2 hat geschrieben: ↑ zum Beitrag ↑
01.01.2019 18:34:37
Wie filtere ich denn jetzt die Meldungen von Debiannftables raus?
einfach nft.* geht nicht, wie heißt denn die "facility"?
Ich nutze hier zwar noch iptables, aber da sollte nftables ähnliche Möglichkeiten wie iptables bieten.

Die Paketfilterung findet im Kernel statt, iptables/nftables sind nur Hilfsprogramme, um die entsprechenden Regeln im Kernel zu etablieren. Folglich kommt eine ip/nftables-Meldung als Kernelmeldug im Log an. Eine "facility" im Sinne eines Programmnamens gibt es hier also nicht.

Ich habe als letzte Regelen in meinem iptables-Skript folgendes stehen:

Code: Alles auswählen

 iptables -A OUTPUT  -m limit --limit 100/minute -j LOG --log-level info --log-prefix "outgoing: "
 iptables -A OUTPUT  -j DROP
 iptables -A INPUT   -m limit --limit 100/minute -j LOG --log-level info --log-prefix "incoming: "
 iptables -A INPUT   -j DROP
 iptables -A FORWARD -m limit --limit 100/minute -j LOG --log-level info --log-prefix "forward: "
 iptables -A FORWARD -j DROP
Ich gehe mal davon aus, daß man rsyslogd davon überzeugen kann, nach (in meinem Fall) "outgoing:", "incoming:" und "forward:" zu filtern.

Ich würde mal probieren, in rsyslogd.conf mit Regeln, die folgendermassen aussehen, zu experimentieren:

Code: Alles auswählen

kernel*outgoing.*      -/var/log/nftables.log
kernel*incoming.*      -/var/log/nftables.log
kernel*forward.*       -/var/log/nftables.log

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: nftables logging: eigenen file statt syslog

Beitrag von rendegast » 01.01.2019 20:54:03

Bei mir sowas

Code: Alles auswählen

:msg,regex,"IN=.*OUT=.*SRC=.*DST="	-/var/log/FIREWALL.log
& stop
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
ingo2
Beiträge: 782
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: nftables logging: eigenen file statt syslog

Beitrag von ingo2 » 01.01.2019 21:52:07

Dank eurer Hilfe und Probiererei hab' ich das jetzt hinbekommen - Danke.

Hier für die Mitleser:

a) Dem Log ein Prefix verpassen, hier nft.dropped mit nachfolgendem white space:
/etc/nftables.conf

Code: Alles auswählen

    counter log prefix "nft.dropped " drop
b) Filtern nach Methode @rendegast (alles andere ist bisher fehlgeschlagen):
/etc/rsyslog.conf

Code: Alles auswählen

:msg,regex,"nft.dropped"        -/var/log/nftables.log
(Achtung: die ersten 2 Satzzeichen sind Kommata, kein Punkt)

Schönheitsfehler: die Zeilen landen dennoch im syslog un füllen es!

Interessantes Ergebnis und Tipp so far:
Port udp 5353 kommt von AVAHI anderer Rechner, einfach droppen (ohne logging)
Port tcp 80 sind regelmäßige Scans der FritzBox, einfach droppen (ohne logging)

Code: Alles auswählen

kernel: [ 6140.193787] nft.dropped IN=eno1 OUT= MAC=00:22:4d:83:64:41:38:10:d5:d2:23:55:08:00 SRC=192.168.xx.1 DST=192.168.xx.12 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=43657 DF PROTO=TCP SPT=43956 DPT=80 WINDOW=14600 RES=0x00 SYN URGP=0
Wozu das gut sein soll?

Alles andere ungebetene logge ich bis ich die Quelle/Ursache gefunden habe.

Ingo

MSfree
Beiträge: 4553
Registriert: 25.09.2007 19:59:30

Re: nftables logging: eigenen file statt syslog

Beitrag von MSfree » 01.01.2019 22:02:21

ingo2 hat geschrieben: ↑ zum Beitrag ↑
01.01.2019 21:52:07
Schönheitsfehler: die Zeilen landen dennoch im syslog un füllen es!
Das liegt daran, daß in deiner rsyslogd.conf oben die Zeile:

Code: Alles auswählen

*.*;auth,authpriv.none		-/var/log/syslog
steht. Das *.* bewirkt, daß alle Meldungen (auch) ins syslog fließen.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [solved] nftables logging: eigenen file statt syslog

Beitrag von rendegast » 02.01.2019 00:11:38

Schönheitsfehler: die Zeilen landen dennoch im syslog un füllen es!
Um das zu unterbinden gibt es die Anweisung '& stop',
damit die Meldungen von rsyslog nicht noch von anderen Regeln abgearbeitet werden.

Andere Meldungen des iptables-Apparats:
Der iptables-Apparat erzeugt nicht nur die Messages, die explizit per LOG-Target erzeugt werden.
Daher bei mir der Regex "IN=.*.........", um alle Messages in die separate Datei zu verschieben.
Genauso könnten sie aber auch ins Nirvana geschickt werden, Bsp:

Code: Alles auswählen

:msg,regex,"nft.dropped"        -/var/log/nftables.log
& stop


:msg,regex,"IN=.*OUT=.*SRC=.*DST="        stop


Das passiert alles ja erst nach der Erzeugung durch den Kernel.
Der iptables-Apparat überflutet den Kernelpuffer, 'dmesg' wird dadurch zu einem nutzlosen Tool.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
ingo2
Beiträge: 782
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: [solved] nftables logging: eigenen file statt syslog

Beitrag von ingo2 » 02.01.2019 17:04:00

rendegast hat geschrieben: ↑ zum Beitrag ↑
02.01.2019 00:11:38
Schönheitsfehler: die Zeilen landen dennoch im syslog un füllen es!
Um das zu unterbinden gibt es die Anweisung '& stop',
damit die Meldungen von rsyslog nicht noch von anderen Regeln abgearbeitet werden.
Das funktioniert.
Aber nur, wenn ich die Anweisung '& stop' und die Filterzeile vor die syslog-Zeile setze. Die rsyslog.conf wird demnach sequenziell abgearbeitet.
Noch eine Frage dazu:
Bezieht sich das '& stop' nur auf die vorhergehende Zeile? Mit anderen Worten: muß ich die Anweisung hinter jede Zeile mit einer "aussortierenden Regel" setzen?
rendegast hat geschrieben: ↑ zum Beitrag ↑
02.01.2019 00:11:38
Das passiert alles ja erst nach der Erzeugung durch den Kernel.
Der iptables-Apparat überflutet den Kernelpuffer, 'dmesg' wird dadurch zu einem nutzlosen Tool.
Danke für den Hinweis - ist wirklich schade :( Aber da ist dann wohl kein Kraut gegen gewachsen, es sei denn:

nftables führt ein unabhängiges eigenständiges Loggen durch, welches wie andere Anwendungen auch einen eigenen zu konfigurierenden Logfile nutzt.

Nochmal Dank für die Hilfe - wieder was gelernt,
Ingo

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [solved] nftables logging: eigenen file statt syslog

Beitrag von rendegast » 02.01.2019 21:28:27

Bezieht sich das '& stop' nur auf die vorhergehende Zeile?
Mit anderen Worten: muß ich die Anweisung hinter jede Zeile mit einer "aussortierenden Regel" setzen?
Zumindest hier habe ich das so gemacht.

Aber nur, wenn ich die Anweisung '& stop' und die Filterzeile vor die syslog-Zeile setze.
Die rsyslog.conf wird demnach sequenziell abgearbeitet.
Aus dem Grund habe ich auf die erneuerte rsyslog.conf aus dem Paket hingewiesen,
die eine Include-Anweisung an passender Stelle besitzt.

Code: Alles auswählen

apt-get download 
dpkg -x   rsyslog*.deb   rsyslog.entpackt
cat rsyslog.entpackt/etc/rsyslog.conf
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

ReturnToSender
Beiträge: 120
Registriert: 23.10.2018 18:06:09

Re: [solved] nftables logging: eigenen file statt syslog

Beitrag von ReturnToSender » 02.01.2019 22:18:41

ingo2 hat geschrieben: ↑ zum Beitrag ↑
01.01.2019 14:39:25
Das unschöne dabei:
alles Logging geht ins syslog und ist mühsam zusammenzuklauben.
Das geht mit journald eigentlich relativ einfach und erfordert, wenn man sein nftables-Regelwerk auf andere Maschinen überträgt, keinerlei Nacharbeiten, wie sie bei rsyslog notwendig sind. Das geht, wenn man auf rsyslog verzichtet und Journald verwendet. Journald ist sowieso das führende Log, was immer läuft. Lass einfach vom Paketfilter Log-Einträge mit Level 1 wegschreiben und schon kannst Du die Meldungen ganz einfach filtern lassen:

journalctl -b -k zeigt wie dmesg alle Kerneleinträge
journalctl -b -k --priority=0..7 dto.
journalctl -b -k --priority=2..7 zeigt die Einträge ohne Paketfilter
journalctl -b -k --priority=1 zeigt dann nur die Paketfilter-Logeinträge

Imn Regelfall wird der Log-Level 1 gar keine oder allenfalls nur sehr wenige Einträge listen. Wer da viele Einträge hat, hat größere Probleme, deshalb kann man den zuhause ruhig dafür verwenden, auch wenn es ein wenig missbräuchlich ist.

Benutzeravatar
ingo2
Beiträge: 782
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: [solved] nftables logging: eigenen file statt syslog

Beitrag von ingo2 » 02.01.2019 22:39:12

rendegast hat geschrieben: ↑ zum Beitrag ↑
02.01.2019 21:28:27
Aber nur, wenn ich die Anweisung '& stop' und die Filterzeile vor die syslog-Zeile setze.
Die rsyslog.conf wird demnach sequenziell abgearbeitet.
Aus dem Grund habe ich auf die erneuerte rsyslog.conf aus dem Paket hingewiesen,
Ja, das ist schon klar. Die include-Anweisung auf das Subdir /etc/rsyslog.d/*.conf habe ich ja, aber darin ist alles leer.

Wenn ich da eine *.conf Datei reinschreibe, frage ich mich nur: wie bzw. in welcher Reihenfolge wird dann das Ganze abgearbeitet? Werden die Regeln im Subdir genau an der Stelle, wo die include-Anweisung steht (also vor den "RULES" bzw. Standard-Logfiles) angewendet? Und was passiert, wenn ich mehrere *.conf dort erstelle - alphabetische Reihenfolge?

Code: Alles auswählen

....
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf


###############
#### RULES ####
###############
....
Sorry und Danke für die Geduld, aber ich versuche das Ganze auch wirklich zu verstehen und Doku zu solchen Details ist schwer zu finden,
Ingo

EDIT:
Erledigt und geht - zumindest mit einem file in /etc/rsyslog.d/

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [solved] nftables logging: eigenen file statt syslog

Beitrag von rendegast » 03.01.2019 00:15:57

Werden die Regeln im Subdir genau an der Stelle, wo die include-Anweisung steht (also vor den "RULES" bzw. Standard-Logfiles) angewendet?
Ja, die rsyslog.conf wird sequentiell abgearbeitet.
Und was passiert, wenn ich mehrere *.conf dort erstelle - alphabetische Reihenfolge?
Es trifft wohl das globale Sortieren zu, also ungefähr
cat /etc/rsyslog.d/*.conf
Meine selbsterstellten Dateien dort sind sicherheitshalber und der Übersicht wegen mit einem Index versehen
rsyslog.d/01_blafoo.conf
rsyslog.d/02_blafoo.conf
usw.
wobei meine Regeln auch unabhängig voneinander sind, die Reihenfolge also auch egal wäre.
(Zumindest postfix hat dort auch eine Datei)


------------------------------------------------
systemd-journal <-> rsyslog:
Habe gerade eine
/etc/rsyslog.d/zzzzzz_STOP.conf
erstellt

Code: Alles auswählen

*.*   stop
sodaß bis auf meine eigene Sortierung keine weitere Ablage stattfindet.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

ren22
Beiträge: 503
Registriert: 26.11.2006 09:05:14

Re: nftables logging: eigenen file statt syslog

Beitrag von ren22 » 07.03.2019 23:09:42

rendegast hat geschrieben: ↑ zum Beitrag ↑
01.01.2019 20:54:03
Bei mir sowas

Code: Alles auswählen

:msg,regex,"IN=.*OUT=.*SRC=.*DST="	-/var/log/FIREWALL.log
& stop
:THX: Perfekt, Danke rendegast

Antworten