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.
-
Mit diesem Befehl wird die Datei angelegt:
sudo touch /etc/network/if-pre-up.d/iptables
-
Dann wird die Datei ausführbar gemacht:
sudo chmod +x /etc/network/if-pre-up.d/iptables
-
Hier wird die Datei zum Editieren geöffnet:
sudo nano /etc/network/if-pre-up.d/iptables
-
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