Raspberry Pi: IP Tables & TCPDump - msandholz/RaspberryPi-Tutorials GitHub Wiki

IP-Tables

For further Information look at: https://de.wikipedia.org/wiki/Iptables

Informationen zum Netzwerkverkehr

Anzeigen der Routen: netstat -r

Anzeigen der Interface Statistiken: netstat -i

Anzeigen der Multicast-Guppen: netstat -g oder netstat -gn

Anzeigen der aktiven Verbindungen: netstat -apen

Anzeigen der aktiven Regeln

Die akuell aktiven Firewall-Regeln kann man anzeigen mit: sudo iptables -L

Firewallregeln hinzufügen

Alle lokalen Verbindungen auf dem Loopback akzeptieren: sudo iptables -A INPUT -i lo -j ACCEPT

ICMP-Anfragen wie z.B. der ICMP Echo Request, auch bekannt als Ping, erlauben: sudo iptables -A INPUT -p icmp -j ACCEPT

SSH Zugriff erlauben: sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

HTTP Zugriff erlauben: sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

HTTPS Zugriff erlauben: sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

Bereits aufgebaute eingehende Verbindungen generell erlauben: sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Komische aussehende Pakete verwefen (oft fuer Angriffe benutzt):

sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
sudo iptables -A INPUT -f -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

IGMP Multicast droppen:

sudo iptables -A INPUT -p igmp -j DROP

mDNS Multiast droppen:

sudo iptables -I INPUT -s 224.0.0.1 -j DROP
sudo iptables -I OUTPUT -d 224.0.0.1 -j DROP

Die letzte Firewall-Regel weist alle eingehenden Pakete ab, welche nicht durch eine der vorhergehenden Firewall-Regeln explizit erlaubt wurde. Aus diesem Grund muss diese Regel auch immer die letzte Regel in der sogenannten Firewall-Chain sein: sudo iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

Konfiguration speichern

Mit folgenden Kommandos ist wird die Konfiguration gespeichert und nach Neustart aktiviert:

sudo sh -c "iptables-save > /etc/network/iptables"
sudo reboot

Regeln bei jedem Neustart laden

Um die Regeln automatisch nach jedem Neustart zu laden, muß ein Pre-Up Skript erstellt werden.

  1. Mit diesem Befehl wird die Datei angelegt: sudo touch /etc/network/if-pre-up.d/iptables

  2. Dann wird die Datei ausführbar gemacht: sudo chmod +x /etc/network/if-pre-up.d/iptables

  3. Hier wird die Datei zum Editieren geöffnet: sudo nano /etc/network/if-pre-up.d/iptables

  4. Zum Abschluß werden noch folgende Zeilen in die Datei eingefügt. Diese bewirken das iptables nach jedem Neustart die Regeln aus der Datei /etc/network/iptables einließt und aktiviert. Speichert das Script mit STRG+X, Y und ENTER nach einem Reboot könnt ihr die aktiven Regeln über sudo iptables -L kontrollieren.

#!/bin/sh
/sbin/iptables-restore /etc/network/iptables

Für einen Reset der Firewall

Will man die Firewall Einstellungen auf Standard setzen, führt man die folgenden Kommandos aus:

sudo iptables -A INPUT --j ACCEPT
sudo iptables -A OUTPUT --j ACCEPT
sudo iptables -A FORWARD --j ACCEPT
 
sudo sh -c "iptables-save > /etc/network/iptables"
sudo reboot

TCP Dump

Install TCPDump

TCP Dump installieren: sudo apt-get install tcpdump

Options of TCPDump

Man kann mit folgenden Optionen Filter setzen:

-n ... keine DNS Auflösung (kostet Zeit)
-i ... Interface (z. B. eth0 oder wlan0)
-s ... Aufgezeichnete Paket Info (96 reicht für die TCP/IP Header)
-C ... max. Größe des Files (in MByte)
-W ... Anzahl der erstellen Files
-w ... Dateiname

Beispiele

Datenverkehr am Interface 'eth0' mitschneiden: sudo tcpdump -i eth0

Limit the capture to 100 packets: sudo tcpdump -c 100

IGMP Protokoll mitschneiden: sudo tcpdump -i eth0 igmp

TCP Port 80 und 9100 mitschneiden: tcpdump -i eth0 'tcp port 80 or tcp port 9100'

CURL

Troubleshoot http traffic

Use curl -i http://Raspi4.fritz.box:5000/SEMP/description.xml