nftables schreibt nicht ins Syslog

nftables schreibt nicht ins Syslog

Ausführen von Debian 10 auf einem LXC-Container:

# apt-get -y install nftables
# nft --version
nftables v0.7 (Scrooge McDuck)
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input
# nft add rule inet filter input log
# nft list ruleset
table inet filter { 
    chain input {
        log
    }
}

Dann gehe ich zu /var/log/syslog, erzeuge etwas Netzwerkverkehr und ... ich sehe keine Nachricht vonNftablesüberhaupt.

Ich habe auch (erfolglos) versucht, die Regel folgendermaßen zu definieren:

nft add rule inet filter input log prefix \"FINDME \" counter

Weitere Tests:

# logger test && tail -1 /var/log/syslog
Aug 18 20:39:53 my-server root: test
# echo "test2" | systemd-cat && tail -1 /var/log/syslog
Aug 18 20:40:52 my-server cat[1907]: test2
# uname -v
 #1 SMP PVE 5.4.34-2 (Thu, 07 May 2020 10:02:02 +0200)

Warum istNftablesschreibe nicht an meineSyslog?

Als Bonusfrage: Gibt es eine Möglichkeit, bei einer Übereinstimmung eine Aktion auszulösen? Beispielsweise das Speichern blockierter IPs in einer Datenbank.

Antwort1

Nun... Dank des Hinweises von @anx habe ich herausgefunden, dass anscheinendNetzfilterhat einige Schwierigkeiten, die Daten zu sendenrsyslog.

Es hat wahrscheinlich etwas damit zu tun, dass der Host ein LXC-Container ohne eigenen Kernel ist und derKontrollgruppenim Hypervisor ... (Buff, ich begebe mich auf dunkles Terrain) ... Nun ... was auch immer.

Falls jemand ein ähnliches Problem hat, ich habe ein Protokoll erhalten, indem ich die Daten anulogdMit diesen Schritten gelingt ein funktionierendes Basisbeispiel:

# apt-get -y install nftables ulogd2
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input '{ type filter hook input priority 0 ; }'
# nft add rule inet filter input log prefix "FINDME" group 0 accept
# nft list ruleset
table inet filter {
    chain input {
        type filter hook input priority 0; policy accept;
        log prefix "FINDME" group 0 accept
    }
}
# tail -f /var/log/ulog/syslogemu.log

Antwort2

Ich bin auf ein sehr ähnliches Problem gestoßen: nftables loggte sich nicht ein, wenn es in einem Netzwerk-Namespace ausgeführt wurde. Die Lösung von Julen hat bei mir nicht funktioniert.

Da ich keinen Container betreibe, könnte ich mein Problem beheben mit

echo 1 >/proc/sys/net/netfilter/nf_log_all_netns

Mehr Details: https://blog.raymond.burkholder.net/index.php?/archives/787-nftables-network-namespace-logging.html

verwandte Informationen