Ich versuche, verworfene Pakete in einer benutzerdefinierten Datei zu protokollieren /var/log/messages
.
Um dies zu erreichen, habe ich diese beiden Zeilen am Ende meiner Konfigurationsdatei hinzugefügt:
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4
-A OUTPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4
Dies funktioniert, weil ich die INPUT- und OUTPUT-Ketten standardmäßig als DROP konfiguriert habe. Wenn das Paket also keine vorherige Regel erfüllt, wird es protokolliert und gelöscht.
Ich kann sie jedoch nicht in einer benutzerdefinierten Datei protokollieren. Sie melden sich erfolgreich an /var/log/messages
, aber ich möchte, dass sie angemeldet sind /var/log/iptables.log
. Ich habe die Datei /etc/rsyslog.d/iptables.conf
mit folgendem Inhalt erstellt:
:msg, contains, "IPTables-INPUT-Dropped: " - /var/log/iptables.log
& ~
Dann habe ich rsyslog neu gestartet /etc/init.d/rsyslog restart
und einige Pakete gesendet, von denen ich wusste, dass sie gelöscht werden würden. Sie sind jedoch nicht in iptables.log angemeldet, sondern werden immer noch angemeldet /var/log/messages
.
Welche Konfiguration fehlt?
Gelöst Das Problem ist, dass zwischen - und / kein Leerzeichen stehen sollte
/etc/rsyslog.conf
vor anderen Anweisungen, so dass die Nachricht gelöscht wird, bevor etwas anderes sie aufnimmt. Versuchen Sie das undkill -HUP `pidof rsyslogd`
. Verlieren Sie möglicherweise das Leerzeichen am Ende der angegebenen Zeichenfolge.Antworten:
Das Problem ist, dass zwischen - und / kein Leerzeichen stehen sollte
quelle
Dies ist ein alternativer Ansatz
ulogd
. Ich würde diesen Mechanismus vorschlagen, da er die-m LOG
Verwendung des Kernel-Protokollierungsmechanismus stoppt (was den schwerwiegenden Nebeneffekt hat, dass auch Ihrdmesg
Protokoll gefüllt wird ).Zuerst benötigen Sie ulogd, das Sie mit einem bekommen können
apt-get install ulogd
. Bearbeiten Sie Ihr/etc/ulogd.conf
, aktivieren Sie dieses Modul (indem Sie das#
am Anfang der Zeile entfernen ):und ändern / fügen Sie den Abschnitt hinzu
[LOGEMU]
:Und dann starten Sie Ihre ulogd mit neu
/etc/init.d/ulogd restart
. Dann statt-j LOG
Verwendung-j ULOG
auf Ihren iptables - Regeln. Das ULOG-Modul hat kein Konzept,--log-level
sodass Sie diese Optionen entfernen können. Es wird auch--ulog-prefix
anstelle von verwendet--log-prefix
.quelle
/etc/init.d/ulogd restart
als Wurzel)Dies kann möglich sein mit:
Nehmen Sie die folgenden Änderungen vor, um iptables-Protokolle in syslog zu deaktivieren
/etc/rsyslog.d/50-default.conf
:So melden Sie sich in einer separaten Datei an; anhängen:
dann einmal neu starten
syslog
undrsyslog
undtail
die ProtokolleEs funktioniert in
syslog
undrsyslog
auchquelle
Zu Ihrer Information:
& ~
ist im neuen rsyslog veraltet, sollten Siestop
stattdessen verwenden./etc/rsyslog.d/10-iptables
/etc/logrotate.d/iptables
Beachten Sie, dass ich das Präfix auf 10 gesetzt habe, um es abzufangen, bevor es die Standardregeln erreicht (50 Standardeinstellungen).
quelle
Eine funktionierende Lösung mit ulogd
a) Stellen Sie sicher, dass Sie dieses Modul beim Start haben
b) Bearbeiten Sie die Datei /etc/ulogd.conf, um diese Plugins zu aktivieren (Kommentar #)
Fügen Sie diese Zeile vor dem ersten kommentierten # Stapel hinzu
und schließlich am Ende der Datei diese Zeilen hinzufügen
c) Jetzt bevorzuge ich die Verwendung der alten Methode des iptables-Skripts anstelle von firewalld. In meinem iptables-Skript verwende ich diese Zeilen für die Protokollierung.
d) die letzten Teile
Überprüfen Sie, ob Sie mit diesem Befehl arbeiten
Nach einem Ereignis sollten einige Zeilen angezeigt werden: nmap portscan oder einfach Telnet auf Ihrem Computer (Hoffnung ist deaktiviert oder Firewall).
quelle