In meinen iptables habe ich eine Regel, die verworfene Pakete protokolliert:
-A INPUT -i eth0 -j LOG --log-prefix "FW: " --log-level 7
-A INPUT -i eth0 -j DROP
Und in habe /etc/rsyslog.conf
ich eine andere Regel, die diese Protokolle an eine dedizierte Datei sendet /var/log/firewall.log
.
:msg, contains, "FW: " -/var/log/firewall.log
& ~
Das & ~
löscht die Protokolle sofort, damit sie nicht überflutet werden syslog
oder andere Protokolldateien.
Dies funktioniert gut, außer dass es dmesg
mit diesen Firewall-Protokollen überflutet wird (nicht /var/log/dmesg
aber die Ausgabe des Befehls dmesg
).
Gibt es eine Möglichkeit zu verhindern, dass diese Protokolle angezeigt werden dmesg
?
dmesg
Überflutung verhindert werden kann, nicht die Firewall-Regeln.ulogd2
. So habe ich das Problem gelöst.Antworten:
Sie könnten das
NFLOG
Ziel anstelle von verwendenLOG
:Sie benötigen lediglich ein
nfnetlink_log
leistungsfähiges Protokollierungsprogramm. Nachrichten würden dorthin gehen und der Userspace-Prozess würde entscheiden, ob das Paket protokolliert werden soll oder nicht.Sie könnten auch versuchen, die
LOG
Regel auf einen bestimmten Schwellenwert zu beschränken:Dies würde im Durchschnitt 10 Pakete pro Minute protokollieren. Sie können dies natürlich an Ihre Bedürfnisse anpassen.
quelle
rsyslog
der Protokollierung vonNFLOG
Paketen finden. Ich brauche eine Lösung, die funktioniertrsyslog
.Dies hängt möglicherweise mit der Protokollebene zusammen, die Sie in iptables verwenden. So wie ich es aus der rsyslog-Dokumentation verstehe, lauten die Protokollebenen: "Die Priorität ist eines der folgenden Schlüsselwörter in aufsteigender Reihenfolge: Debug, Info, Hinweis, Warnung, Warnung (wie Warnung), Fehler, Fehler (wie Fehler), kritisch, wachsam, emerg, Panik (wie emerg). " Wie wäre es mit dem Versuch, die Protokollebene in iptables mithilfe des Namens anzugeben, dh "Hinweis". Gut dient mir zum Posten ohne Überprüfung, da ich jetzt denke, dass das überhaupt nicht das Problem ist. Ich habe ein ähnliches Schema wie oben beschrieben implementiert und bekomme das gleiche Problem. Mein Centos 7-Kernel ist v3.10.0 und anscheinend seit v3.5 scheint die Kernel-Protokollierung mit / dev / kmsg durchgeführt zu werden, und ich gehe davon aus, dass dmesg irgendwie seine Eingabe von dort erhält.
quelle
Wenn Sie die Protokollstufe mit dem folgenden Befehl auf 7 gesetzt haben:
Anschließend können Sie diese Nachrichten einfach herausfiltern, indem Sie den Pegelschwellenwert an dmesg übergeben:
quelle
Wieso kümmert es dich?
dmesg
ist ein einfaches Tool zum Drucken der letzten Kernel-Nachrichten, und Sie haben den Kernel gebeten, verworfene Pakete zu protokollieren.Konfigurieren Sie das Syslog-System Ihres Systems so, dass iptables-Nachrichten in einer von anderen Kernel-Nachrichten getrennten Protokolldatei protokolliert werden, und verwenden Sie stattdessen die Protokolldateien, die es schreibt
dmesg
.quelle