update to local git repo
This commit is contained in:
106
Semester 6/ITSARCH/Skript_Notizen/IPTables.md
Normal file
106
Semester 6/ITSARCH/Skript_Notizen/IPTables.md
Normal file
@@ -0,0 +1,106 @@
|
||||
## 🔥 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
|
||||
```sh
|
||||
iptables -A INPUT -p icmp -j DROP
|
||||
# Blockiert alle Ping-Anfragen
|
||||
```
|
||||
```sh
|
||||
iptables -I INPUT 1 -p icmp -s 192.168.0.0/24 -j ACCEPT
|
||||
# Erlaubt ICMP (Ping) aus lokalem Netz vor DROP-Regel
|
||||
```
|
||||
```sh
|
||||
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
|
||||
# SNAT bei Verlassen des Rechners über ppp0
|
||||
```
|
||||
```sh
|
||||
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
|
||||
```sh
|
||||
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)
|
||||
```sh
|
||||
#!/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!
|
||||
Reference in New Issue
Block a user