Files
TI-Studium-Mitschriften/Semester 6/ITSARCH/Skript_Notizen/IPTables.md
2025-07-02 13:08:03 +02:00

3.3 KiB
Raw Blame History

🔥 GRUNDLAGEN: IPTABLES & NETFILTER

Was ist iptables?

  • Linux-Tool zur Konfiguration von netfilter (seit Kernel 2.4)
  • Nachfolger von ipchains, ipfadm
  • Zentrale Aufgabe: Regeln zur Filterung und Manipulation von IP-Paketen definieren
  • Besteht aus:
    • Tabellen (z.B. filter, nat, mangle)
    • Ketten (z.B. INPUT, OUTPUT, FORWARD)
    • Regeln

📊 TABELLEN & KETTEN

Tabelle Zweck Enthält Ketten
filter Paketfilterung (Standard) INPUT, OUTPUT, FORWARD
nat IP/Port-Umschreibung (SNAT/DNAT) PREROUTING, POSTROUTING, OUTPUT
mangle Modifikation von Header-Daten (QoS, TTL, etc.) alle Ketten

🔄 KETTEN (CHAINS)

Chain Beschreibung
INPUT Eingehende Pakete für lokalen Rechner
OUTPUT Vom lokalen Rechner ausgehende Pakete
FORWARD Weitergeleitete Pakete (Routerbetrieb)
PREROUTING Vor Routingentscheidung (z.B. DNAT)
POSTROUTING Nach Routingentscheidung (z.B. SNAT)
  • Ketten enthalten Regeln, die in Reihenfolge geprüft werden
  • Jede Kette besitzt eine Standardregel (Policy) (z.B. DROP, ACCEPT)

🧾 BEFEHLE (AUSZUG)

Befehl Beschreibung
-F Alle Regeln in Kette löschen
-X Benutzerdefinierte Kette löschen
-P Policy (Standardverhalten) setzen
-A Regel anhängen
-I Regel an Position einfügen
-D Regel löschen
-L Regeln anzeigen
-N Neue benutzerdefinierte Kette erstellen
-Z Zähler zurücksetzen

🧠 WICHTIGE PARAMETER

Parameter Beschreibung Beispiel
-p Protokoll (tcp, udp, icmp) -p tcp
-s Quelladresse -s 192.168.0.0/24
-d Zieladresse -d 10.0.0.1
-i Eingangsinterface -i eth0
-o Ausgangsinterface -o ppp0
--dport Zielport --dport 22
-j Zielaktion (ACCEPT, DROP, LOG, REJECT, etc.) -j DROP

🧪 BEISPIELE

iptables -A INPUT -p icmp -j DROP
# Blockiert alle Ping-Anfragen
iptables -I INPUT 1 -p icmp -s 192.168.0.0/24 -j ACCEPT
# Erlaubt ICMP (Ping) aus lokalem Netz vor DROP-Regel
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# SNAT bei Verlassen des Rechners über ppp0
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
# Portweiterleitung für transparenten Proxy

⚙️ BENUTZERDEFINIERTE KETTEN

Beispiel: Logging + Blocken

iptables -N log-drop
iptables -A log-drop -j LOG -m limit --limit 6/minute
iptables -A log-drop -j DROP
iptables -A INPUT -p tcp --dport 22 -i ppp0 -j log-drop

🧰 KOMPLETTES FIREWALL-SKRIPT (MINIMALE VARIANTE)

#!/bin/sh
FW="/sbin/iptables"
# 1. Regeln & Ketten löschen
$FW -F
$FW -X
$FW -t nat -F
# 2. Standardregeln: alles erlauben
$FW -P INPUT ACCEPT
$FW -P FORWARD ACCEPT
$FW -P OUTPUT ACCEPT
# 3. Ping blockieren
$FW -A INPUT -p icmp -j DROP

BEST PRACTICE

  • Besser: „Blockiere alles, erlaube nur was nötig ist“ (Default: DROP)
  • Verwende --state ESTABLISHED, RELATED, um gültige Verbindungen zu erlauben
  • Speichere Regeln in Skripten (z.B. /etc/network/firewall) und rufe sie über /etc/rc.local auf

Wenn du möchtest, kann ich dir daraus auch:

  • eine Befehlstabelle zum Auswendiglernen
  • ein Mini-Quiz
  • oder eine interaktive Übung zur Regel-Erstellung erstellen. Sag einfach Bescheid!