Dieser Artikel ist Teil unserer fortlaufenden Artikelserie zu Linux IPTables. Wenn die Dinge mit Ihren IPTables-Regeln nicht wie erwartet funktionieren, möchten Sie möglicherweise die von IPTables verworfenen Pakete zu Fehlerbehebungszwecken protokollieren. Dieser Artikel erklärt, wie Sie sowohl eingehende als auch ausgehende verworfene Firewall-Pakete protokollieren.
Wenn Sie neu bei IPTables sind, machen Sie sich zuerst mit den grundlegenden Konzepten von IPTables vertraut.
Alle verworfenen Eingabepakete protokollieren
Zuerst müssen wir verstehen, wie alle verworfenen Eingabepakete von iptables im Syslog protokolliert werden.
Wenn Sie bereits eine ganze Reihe von iptables-Firewallregeln haben, fügen Sie diese unten hinzu, wodurch alle verworfenen Eingabepakete (eingehend) in /var/log/messages
protokolliert werdeniptables -N LOGGING iptables -A INPUT -j LOGGING iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 iptables -A LOGGING -j DROP
Im obigen Beispiel geschieht Folgendes:
- iptables -N LOGGING:Erstellen Sie eine neue Kette namens LOGGING
- iptables -A INPUT -j LOGGING:Alle verbleibenden eingehenden Pakete springen in die LOGGING-Kette
- Zeile #3:Protokollieren Sie die eingehenden Pakete im Syslog (/var/log/messages). Diese Zeile wird weiter unten im Detail erklärt.
- iptables -A LOGGING -j DROP:Verwerfe schließlich alle Pakete, die in die LOGGING-Kette gelangt sind. d.h. jetzt werden die eingehenden Pakete wirklich verworfen.
In Zeile 3 oben hat es die folgenden Optionen zum Protokollieren der verworfenen Pakete:
- -m limit:Dies verwendet das Limit-Matching-Modul. Damit können Sie die Protokollierung mit der Option –limit einschränken.
- –limit 2/min:Dies gibt die maximale durchschnittliche Übereinstimmungsrate für die Protokollierung an. In diesem Beispiel wird die Protokollierung für ähnliche Pakete auf 2 pro Minute begrenzt. Sie können auch 2/Sekunde, 2/Minute, 2/Stunde, 2/Tag angeben. Dies ist hilfreich, wenn Sie Ihre Protokollmeldungen nicht mit wiederholten Meldungen derselben verworfenen Pakete überladen möchten.
- -j LOG:Dies zeigt an, dass das Ziel für dieses Paket LOG ist. d.h. in die Logdatei schreiben.
- –log-prefix „IPTables-Dropped:“ Sie können ein beliebiges Protokollpräfix angeben, das an die Protokollnachrichten angehängt wird, die in die Datei /var/log/messages geschrieben werden
- –log-level 4 Dies sind die Standard-Syslog-Levels. 4 warnt. Sie können Zahlen im Bereich von 0 bis 7 verwenden. 0 ist Notfall und 7 ist Debug.
Alle verworfenen ausgehenden Pakete protokollieren
Dies ist dasselbe wie oben, aber die zweite Zeile unten hat OUTPUT statt INPUT.
iptables -N LOGGING iptables -A OUTPUT -j LOGGING iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 iptables -A LOGGING -j DROP
Alle verworfenen Pakete protokollieren (sowohl ein- als auch ausgehend)
Dies ist dasselbe wie zuvor, aber wir nehmen die Zeile Nummer 2 aus den beiden vorherigen Beispielen und fügen sie hier hinzu. d.h. wir werden eine separate Zeile für INPUT und OUTPUT haben, die zur LOGGING-Kette springen wird.
Um sowohl eingehende als auch ausgehende verworfene Pakete zu protokollieren, fügen Sie die folgenden Zeilen am Ende Ihrer bestehenden iptables-Firewallregeln hinzu.
iptables -N LOGGING iptables -A INPUT -j LOGGING iptables -A OUTPUT -j LOGGING iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 iptables -A LOGGING -j DROP
Wie wir bereits erklärt haben, verwenden die iptables standardmäßig /var/log/messages, um alle Nachrichten zu protokollieren. Wenn Sie dies in Ihre eigene benutzerdefinierte Protokolldatei ändern möchten, fügen Sie die folgende Zeile zu /etc/syslog.conf
hinzukern.warning /var/log/custom.log
So lesen Sie das IPTables-Protokoll
Das Folgende ist ein Beispiel der Zeilen, die in /var/log/messages protokolliert wurden, wenn ein ein- und ausgehendes Paket verworfen wurde.
Aug 4 13:22:40 centos kernel: IPTables-Dropped: IN= OUT=em1 SRC=192.168.1.23 DST=192.168.1.20 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=59228 SEQ=2 Aug 4 13:23:00 centos kernel: IPTables-Dropped: IN=em1 OUT= MAC=a2:be:d2:ab:11:af:e2:f2:00:00 SRC=192.168.2.115 DST=192.168.1.23 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=9434 DF PROTO=TCP SPT=58428 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0
In der obigen Ausgabe:
- IPTables-Dropped:Dies ist das Präfix, das wir in unserer Protokollierung verwendet haben, indem wir die Option –log-prefix angegeben haben
- IN=em1 Dies gibt die Schnittstelle an, die für diese eingehenden Pakete verwendet wurde. Bei ausgehenden Paketen bleibt diese leer
- OUT=em1 Dies gibt die Schnittstelle an, die für ausgehende Pakete verwendet wurde. Dies ist bei eingehenden Paketen leer.
- SRC=Die Quell-IP-Adresse, von der das Paket stammt
- DST=Die Ziel-IP-Adresse, an die die Pakete gesendet wurden
- LEN=Länge des Pakets
- PROTO=Gibt das Protokoll an (wie Sie oben sehen, ist die 1. Zeile für das ausgehende ICMP-Protokoll, die 2. Zeile für das eingehende TCP-Protokoll)
- SPT=Gibt den Quellport an
- DPT=Gibt den Zielport an. In der 2. Zeile oben ist der Zielport 443. Dies zeigt an, dass die eingehenden HTTPS-Pakete verworfen wurden
Zusätzliche IPTables-Tutorials
- Linux-Firewall-Tutorial:Grundlagen zu IPTables-Tabellen, -Ketten, -Regeln
- Linux IPTables:So fügen Sie Firewall-Regeln hinzu (Beispiel mit SSH-Zulassung)
- Linux IPTables:Beispiele für eingehende und ausgehende Regeln (SSH und HTTP)
- IPTables Flush:Alle Regeln auf RedHat und CentOS Linux löschen/entfernen
- 25 am häufigsten verwendete Beispiele für Linux-IPTables-Regeln