# Zusammenfassung: Schicht 4, Ports, NAT, Firewall und DMZ

**Zusammenfassung: Schicht 4, Ports, NAT, Firewall und DMZ**

**Bereich:** Seite 64 bis einschließlich Seite 94  
**Themen:** Ports, TCP, UDP, QUIC, Portknocking, Portforwarding, NAT/PAT, Allowlist/Blocklist, Firewall, iptables, DMZ

---

**1. Schicht 4 – Transportschicht**

Die Schicht 4 ist die Transportschicht. Sie sorgt dafür, dass Daten nicht nur zu einem bestimmten Rechner gelangen, sondern auch zur richtigen Anwendung oder zum richtigen Dienst auf diesem Rechner.

Wichtige Themen der Schicht 4:

- Ports
- TCP
- UDP
- QUIC
- Portknocking
- Portforwarding / Destination NAT
- NAT / PAT / Source NAT
- Allowlist und Blocklist

Die IP-Adresse bestimmt den Host.  
Der Port bestimmt den Dienst oder das Programm auf diesem Host.

Beispiel:

```text
192.168.1.11:80
```

Das bedeutet:

```text
Host: 192.168.1.11
Dienst/Port: 80
```

Port 80 steht typischerweise für HTTP.

Die Kombination aus IP-Adresse und Port nennt man Socket.

---

**Grafik 1: IP-Adresse, Port und Socket**

<svg width="900" height="330" viewBox="0 0 900 330" xmlns="http://www.w3.org/2000/svg">
  <rect x="30" y="30" width="840" height="270" rx="18" fill="#f6f8fa" stroke="#222" stroke-width="2"/>
  <text x="450" y="65" text-anchor="middle" font-size="24" font-family="Arial" font-weight="bold">Socket = IP-Adresse + Port</text>

  <rect x="80" y="110" width="250" height="120" rx="14" fill="#d9ecff" stroke="#1f5f99" stroke-width="2"/>
  <text x="205" y="145" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">IP-Adresse</text>
  <text x="205" y="180" text-anchor="middle" font-size="20" font-family="Arial">192.168.1.11</text>
  <text x="205" y="210" text-anchor="middle" font-size="15" font-family="Arial">bestimmt den Host</text>

  <text x="390" y="180" text-anchor="middle" font-size="42" font-family="Arial" font-weight="bold">:</text>

  <rect x="450" y="110" width="180" height="120" rx="14" fill="#e4ffd9" stroke="#2f7d32" stroke-width="2"/>
  <text x="540" y="145" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Port</text>
  <text x="540" y="180" text-anchor="middle" font-size="20" font-family="Arial">80</text>
  <text x="540" y="210" text-anchor="middle" font-size="15" font-family="Arial">bestimmt den Dienst</text>

  <rect x="680" y="110" width="140" height="120" rx="14" fill="#fff0cc" stroke="#a66a00" stroke-width="2"/>
  <text x="750" y="145" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Dienst</text>
  <text x="750" y="180" text-anchor="middle" font-size="20" font-family="Arial">HTTP</text>
  <text x="750" y="210" text-anchor="middle" font-size="15" font-family="Arial">Webserver</text>

  <line x1="630" y1="170" x2="675" y2="170" stroke="#222" stroke-width="3" marker-end="url(#arrow)"/>
  <defs>
    <marker id="arrow" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto">
      <path d="M0,0 L0,6 L9,3 z" fill="#222"/>
    </marker>
  </defs>
</svg>

---

**2. Warum braucht man Ports?**

Ein Rechner kann mehrere Netzwerkprogramme gleichzeitig ausführen.

Beispiele:

- Webbrowser
- Mailprogramm
- Dateifreigabe
- Druckdienst
- Datenbankdienst
- Webserver

Nur mit der IP-Adresse weiß man zwar, welcher Rechner gemeint ist.  
Man weiß aber noch nicht, welche Anwendung auf diesem Rechner gemeint ist.

Vergleich:

```text
IP-Adresse = Adresse eines Mehrfamilienhauses
Port       = Name oder Wohnung der Person im Haus
```

Beispiel Printserver:

```text
10.1.1.1:9100 = Laserdrucker
10.1.1.1:9101 = Tintenstrahldrucker
10.1.1.1:9102 = Nadeldrucker
```

Alle Drucker haben dieselbe IP-Adresse, aber unterschiedliche Ports.

---

**3. Schreibweise von IP-Adresse und Port**

Bei IPv4 schreibt man:

```text
IPv4-Adresse:Port
192.168.1.11:80
```

Bei IPv6 muss die Adresse in eckige Klammern:

```text
[IPv6-Adresse]:Port
[2001:1234:5678:90AB:CDEF:1A2B:3C4D:5E6F]:80
```

Wichtig:

```text
IP-Adresse + Port = Socket
```

---

**4. Aufteilung der Ports**

Ports sind in drei große Bereiche eingeteilt.

| Bereich | Portnummern | Bedeutung |
|---|---:|---|
| System Ports | 0 bis 1023 | feste, bekannte Dienste |
| User Ports | 1024 bis 49151 | registrierte Anwendungsports |
| Dynamic/Private Ports | 49152 bis 65535 | temporäre Ports für kurzfristige Verbindungen |

---

**5. Wichtige System Ports**

Diese Ports sollte man für Prüfung und Praxis kennen:

| Port | Dienst | Protokoll |
|---:|---|---|
| 20 / 21 | FTP | TCP |
| 22 | SSH | TCP |
| 25 | SMTP | TCP |
| 53 | DNS | meist UDP |
| 67 / 68 | DHCP | UDP |
| 80 | HTTP | TCP |
| 110 | POP3 | TCP |
| 123 | NTP | meist UDP |
| 143 | IMAP | TCP |
| 443 | HTTPS | TCP |
| 445 | SMB / Samba | TCP |

---

**6. Wichtige User Ports**

| Port | Dienst | Protokoll |
|---:|---|---|
| 3128 | Squid Proxy | TCP |
| 3306 | MySQL | TCP |
| 9100 | HP-Druckerport | TCP |
| 10000 | Webmin | TCP |

---

**7. UDP**

UDP ist ein einfaches Transportprotokoll.

Eigenschaften:

- verbindungslos
- schneller als TCP
- weniger Verwaltungsaufwand
- keine eingebaute Garantie, dass Pakete ankommen
- keine eingebaute Reihenfolgekontrolle
- wird häufig genutzt, wenn Geschwindigkeit wichtiger ist als perfekte Kontrolle

Typische Beispiele:

- DNS
- DHCP
- NTP
- Streaming
- VoIP
- Online-Gaming

Merksatz:

```text
UDP ist schnell, aber nicht besonders kontrollierend.
```

---

**8. TCP**

TCP ist verbindungsorientiert.

Eigenschaften:

- baut eine Verbindung auf
- bestätigt empfangene Daten
- kontrolliert Reihenfolge und Vollständigkeit
- ist zuverlässiger als UDP
- erzeugt aber mehr Verwaltungsaufwand

Typische Beispiele:

- HTTP
- HTTPS
- SSH
- FTP
- SMTP
- IMAP
- POP3
- SMB

Merksatz:

```text
TCP ist kontrollierter, aber aufwendiger.
```

---

**9. TCP-Verbindungsaufbau: 3-Wege-Handshake**

Beim TCP-Verbindungsaufbau werden drei Schritte genutzt.

1. Client sendet SYN.
2. Server antwortet mit SYN + ACK.
3. Client bestätigt mit ACK.

Danach ist die Verbindung aufgebaut.

---

**Grafik 2: TCP 3-Wege-Handshake**

<svg width="900" height="360" viewBox="0 0 900 360" xmlns="http://www.w3.org/2000/svg">
  <rect x="30" y="30" width="840" height="300" rx="18" fill="#f6f8fa" stroke="#222" stroke-width="2"/>
  <text x="450" y="65" text-anchor="middle" font-size="24" font-family="Arial" font-weight="bold">TCP-Verbindungsaufbau: 3-Wege-Handshake</text>

  <rect x="100" y="100" width="170" height="70" rx="12" fill="#d9ecff" stroke="#1f5f99" stroke-width="2"/>
  <text x="185" y="142" text-anchor="middle" font-size="22" font-family="Arial" font-weight="bold">Client</text>

  <rect x="630" y="100" width="170" height="70" rx="12" fill="#e4ffd9" stroke="#2f7d32" stroke-width="2"/>
  <text x="715" y="142" text-anchor="middle" font-size="22" font-family="Arial" font-weight="bold">Server</text>

  <line x1="270" y1="130" x2="630" y2="130" stroke="#222" stroke-width="3" marker-end="url(#arrow1)"/>
  <text x="450" y="118" text-anchor="middle" font-size="18" font-family="Arial">1. SYN</text>

  <line x1="630" y1="190" x2="270" y2="190" stroke="#222" stroke-width="3" marker-end="url(#arrow1)"/>
  <text x="450" y="180" text-anchor="middle" font-size="18" font-family="Arial">2. SYN + ACK</text>

  <line x1="270" y1="250" x2="630" y2="250" stroke="#222" stroke-width="3" marker-end="url(#arrow1)"/>
  <text x="450" y="240" text-anchor="middle" font-size="18" font-family="Arial">3. ACK</text>

  <text x="450" y="300" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Verbindung ist aufgebaut</text>

  <defs>
    <marker id="arrow1" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto">
      <path d="M0,0 L0,6 L9,3 z" fill="#222"/>
    </marker>
  </defs>
</svg>

---

**10. TCP-Verbindungsabbau: 4-Wege-Handshake**

Beim Verbindungsabbau werden vier Schritte genutzt.

1. Client sendet FIN.
2. Server bestätigt mit ACK.
3. Server sendet ebenfalls FIN.
4. Client bestätigt mit ACK.

Danach ist die Verbindung sauber beendet.

Merksatz:

```text
TCP-Aufbau: 3 Schritte
TCP-Abbau: 4 Schritte
```

---

**11. TCP und Sicherheit**

Beim TCP-Verbindungsaufbau kann es zu Angriffen kommen, zum Beispiel SYN-Flood-Angriffen.

Dabei werden viele SYN-Anfragen an einen Server gesendet.  
Der Server wartet auf die abschließende Bestätigung, bekommt diese aber nicht oder nicht vollständig.  
Dadurch können Ressourcen blockiert werden.

Das gehört zum Bereich Denial-of-Service beziehungsweise Distributed-Denial-of-Service.

---

**12. QUIC**

QUIC soll Vorteile von UDP und TCP kombinieren.

Eigenschaften:

- basiert technisch auf UDP
- soll schneller und moderner sein
- arbeitet immer mit Verschlüsselung
- wird besonders im modernen Web wichtig

Merksatz:

```text
QUIC versucht, UDP-Geschwindigkeit mit TCP-ähnlicher Zuverlässigkeit und Verschlüsselung zu verbinden.
```

---

**13. Portknocking**

Portknocking bedeutet sinngemäß:

```text
Erst richtig anklopfen, dann wird etwas freigegeben.
```

Dabei werden von außen bestimmte Ports in einer festgelegten Reihenfolge angesprochen.

Beispiel:

```text
11.1.2.4:1111
11.1.2.4:2222
11.1.2.4:3333
```

Nur wenn diese Reihenfolge stimmt, löst die Firewall oder der Router ein Ereignis aus.

Beispiel aus dem Kochbuch:

```text
Portknocking löst Wake-on-LAN aus.
Der interne Webserver startet.
Danach kann ein Zugriff erfolgen.
```

Vorteil:

- Dienste müssen nicht dauerhaft offen sichtbar sein.

Nachteil:

- zusätzlicher Verwaltungsaufwand
- kein Ersatz für echte Authentifizierung oder sichere Dienste

---

**14. Portforwarding / Destination NAT**

Portforwarding leitet Anfragen von außen nach innen weiter.

Ziel:

```text
Internet -> Router/Firewall -> interner Server
```

Beispiel:

```text
Externe Adresse: 11.1.2.4:80
Weiterleitung auf: 192.168.178.11:80
```

Oder:

```text
11.1.2.4:81 -> 192.168.178.22:80
```

Dadurch können zwei interne Webserver von außen erreichbar gemacht werden, obwohl beide intern Port 80 nutzen.

Wichtig:

Die externe IP-Adresse bleibt gleich.  
Die externen Ports unterscheiden, welcher interne Dienst gemeint ist.

---

**Grafik 3: Portforwarding / Destination NAT**

<svg width="900" height="430" viewBox="0 0 900 430" xmlns="http://www.w3.org/2000/svg">
  <rect x="30" y="30" width="840" height="370" rx="18" fill="#f6f8fa" stroke="#222" stroke-width="2"/>
  <text x="450" y="65" text-anchor="middle" font-size="24" font-family="Arial" font-weight="bold">Portforwarding / Destination NAT</text>

  <rect x="70" y="160" width="160" height="90" rx="12" fill="#ffd9d9" stroke="#a62626" stroke-width="2"/>
  <text x="150" y="195" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Internet</text>
  <text x="150" y="225" text-anchor="middle" font-size="16" font-family="Arial">Laptop extern</text>

  <rect x="360" y="130" width="180" height="150" rx="12" fill="#fff0cc" stroke="#a66a00" stroke-width="2"/>
  <text x="450" y="165" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Router / Firewall</text>
  <text x="450" y="195" text-anchor="middle" font-size="16" font-family="Arial">11.1.2.4</text>
  <text x="450" y="225" text-anchor="middle" font-size="15" font-family="Arial">Port 80 -> Server 1</text>
  <text x="450" y="250" text-anchor="middle" font-size="15" font-family="Arial">Port 81 -> Server 2</text>

  <rect x="670" y="100" width="170" height="80" rx="12" fill="#e4ffd9" stroke="#2f7d32" stroke-width="2"/>
  <text x="755" y="132" text-anchor="middle" font-size="18" font-family="Arial" font-weight="bold">Webserver 1</text>
  <text x="755" y="158" text-anchor="middle" font-size="15" font-family="Arial">192.168.178.11:80</text>

  <rect x="670" y="250" width="170" height="80" rx="12" fill="#e4ffd9" stroke="#2f7d32" stroke-width="2"/>
  <text x="755" y="282" text-anchor="middle" font-size="18" font-family="Arial" font-weight="bold">Webserver 2</text>
  <text x="755" y="308" text-anchor="middle" font-size="15" font-family="Arial">192.168.178.22:80</text>

  <line x1="230" y1="190" x2="360" y2="190" stroke="#222" stroke-width="3" marker-end="url(#arrow2)"/>
  <text x="295" y="175" text-anchor="middle" font-size="15" font-family="Arial">11.1.2.4:80</text>

  <line x1="540" y1="175" x2="670" y2="140" stroke="#222" stroke-width="3" marker-end="url(#arrow2)"/>
  <text x="610" y="138" text-anchor="middle" font-size="15" font-family="Arial">-> :80</text>

  <line x1="540" y1="235" x2="670" y2="290" stroke="#222" stroke-width="3" marker-end="url(#arrow2)"/>
  <text x="610" y="285" text-anchor="middle" font-size="15" font-family="Arial">-> :80</text>

  <defs>
    <marker id="arrow2" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto">
      <path d="M0,0 L0,6 L9,3 z" fill="#222"/>
    </marker>
  </defs>
</svg>

---

**15. Sicherheitsproblem bei Portforwarding**

Portforwarding ist praktisch, aber nicht besonders sicher.

Problem:

```text
Von außen wird ein direkter Weg in das interne Netz geschaffen.
```

Das kann gefährlich sein, wenn der interne Dienst schlecht abgesichert ist.

Besser:

- möglichst kein unnötiges Portforwarding
- VPN oder Tailscale verwenden
- Dienste aktuell halten
- starke Authentifizierung nutzen
- Firewall-Regeln sauber setzen
- Zugriff einschränken
- Portforwarding eventuell mit Portknocking kombinieren

---

**16. NAT / PAT / Source NAT**

Im Alltag sagt man oft NAT.  
Genauer ist bei vielen Heimroutern eigentlich PAT.

PAT bedeutet Port Address Translation.

Ziel:

```text
Mehrere interne Geräte teilen sich eine öffentliche IP-Adresse.
```

Beispiel:

```text
Interner PC: 192.168.178.11
Fritz!Box extern: 11.1.2.4
Ziel im Internet: 193.99.144.85:80
```

Der interne PC kann nicht direkt mit seiner privaten IP-Adresse ins Internet.  
Die Fritz!Box ersetzt deshalb die interne Quelladresse durch ihre öffentliche Adresse und merkt sich den Zusammenhang in einer Tabelle.

---

**17. Ablauf bei NAT / PAT**

Beispiel:

```text
PC möchte Webseite öffnen:
192.168.178.11:55555 -> 193.99.144.85:80
```

Die Fritz!Box erstellt einen Fake-Port:

```text
11.1.2.4:60000 -> 193.99.144.85:80
```

Wenn die Antwort aus dem Internet zurückkommt, schaut die Fritz!Box in ihrer Tabelle nach:

```text
11.1.2.4:60000 gehört intern zu 192.168.178.11:55555
```

Dann leitet sie die Antwort an den richtigen internen PC weiter.

---

**Grafik 4: NAT / PAT / Source NAT**

<svg width="900" height="440" viewBox="0 0 900 440" xmlns="http://www.w3.org/2000/svg">
  <rect x="30" y="30" width="840" height="380" rx="18" fill="#f6f8fa" stroke="#222" stroke-width="2"/>
  <text x="450" y="65" text-anchor="middle" font-size="24" font-family="Arial" font-weight="bold">NAT / PAT / Source NAT</text>

  <rect x="80" y="155" width="190" height="100" rx="12" fill="#e4ffd9" stroke="#2f7d32" stroke-width="2"/>
  <text x="175" y="190" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Interner PC</text>
  <text x="175" y="220" text-anchor="middle" font-size="16" font-family="Arial">192.168.178.11:55555</text>

  <rect x="355" y="120" width="190" height="170" rx="12" fill="#fff0cc" stroke="#a66a00" stroke-width="2"/>
  <text x="450" y="155" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Fritz!Box</text>
  <text x="450" y="185" text-anchor="middle" font-size="16" font-family="Arial">extern: 11.1.2.4</text>
  <text x="450" y="220" text-anchor="middle" font-size="15" font-family="Arial">Fake-Port: 60000</text>
  <text x="450" y="250" text-anchor="middle" font-size="15" font-family="Arial">merkt sich Zuordnung</text>

  <rect x="640" y="155" width="190" height="100" rx="12" fill="#ffd9d9" stroke="#a62626" stroke-width="2"/>
  <text x="735" y="190" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Webserver</text>
  <text x="735" y="220" text-anchor="middle" font-size="16" font-family="Arial">193.99.144.85:80</text>

  <line x1="270" y1="185" x2="355" y2="185" stroke="#222" stroke-width="3" marker-end="url(#arrow3)"/>
  <text x="312" y="170" text-anchor="middle" font-size="14" font-family="Arial">Anfrage</text>

  <line x1="545" y1="185" x2="640" y2="185" stroke="#222" stroke-width="3" marker-end="url(#arrow3)"/>
  <text x="592" y="165" text-anchor="middle" font-size="14" font-family="Arial">11.1.2.4:60000</text>

  <line x1="640" y1="235" x2="545" y2="235" stroke="#222" stroke-width="3" marker-end="url(#arrow3)"/>
  <text x="592" y="255" text-anchor="middle" font-size="14" font-family="Arial">Antwort an Fake-Port</text>

  <line x1="355" y1="235" x2="270" y2="235" stroke="#222" stroke-width="3" marker-end="url(#arrow3)"/>
  <text x="312" y="255" text-anchor="middle" font-size="14" font-family="Arial">zurück an PC</text>

  <defs>
    <marker id="arrow3" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto">
      <path d="M0,0 L0,6 L9,3 z" fill="#222"/>
    </marker>
  </defs>
</svg>

---

**18. Unterschied Portforwarding und NAT/PAT**

| Begriff | Richtung | Zweck |
|---|---|---|
| Portforwarding / Destination NAT | extern nach intern | Zugriff aus dem Internet auf internen Dienst |
| NAT / PAT / Source NAT | intern nach extern | interne Geräte nutzen gemeinsam eine öffentliche IP |

Merksatz:

```text
Portforwarding: Internet möchte nach innen.
NAT/PAT: internes Netz möchte nach außen.
```

---

**19. Allowlist und Blocklist**

Früher sagte man Whitelist und Blacklist.  
Heute sagt man besser Allowlist und Blocklist.

---

**20. Allowlist**

Grundprinzip:

```text
Alles ist verboten, außer es steht ausdrücklich in der Allowlist.
```

Beispiel:

```text
Allowlist:
web.de
```

Dann gilt:

```text
web.de   erlaubt
gmx.de   verboten
gmail.de verboten
```

Vorteil:

- sehr streng
- schützt gut vor unerwünschtem Zugriff

Nachteil:

- hoher Pflegeaufwand
- neue erlaubte Seiten müssen ständig ergänzt werden

---

**21. Blocklist**

Grundprinzip:

```text
Alles ist erlaubt, außer es steht ausdrücklich in der Blocklist.
```

Beispiel:

```text
Blocklist:
gmx.de
gmail.de
```

Dann gilt:

```text
web.de   erlaubt
gmx.de   verboten
gmail.de verboten
```

Vorteil:

- einfacher zu betreiben als reine Allowlist
- gut für bekannte unerwünschte Seiten

Nachteil:

- niemals vollständig
- neue gefährliche Seiten können noch fehlen
- manchmal werden Seiten gesperrt, die eigentlich erlaubt sein sollen

---

**22. Kombination aus Allowlist und Blocklist**

Praktische Lösung:

```text
Zuerst Allowlist prüfen.
Danach Blocklist prüfen.
```

Beispiel:

```text
Allowlist:
gmail.de

Blocklist:
gmx.de
gmail.de
```

Dann gilt:

```text
web.de   erlaubt, weil in keiner Liste verboten
gmx.de   verboten, weil in Blocklist
gmail.de erlaubt, weil Allowlist Vorrang hat
```

Das ist oft sinnvoller als nur eine reine Allowlist oder nur eine reine Blocklist.

---

**23. SquidGuard**

SquidGuard kann Webseiten nach Kategorien filtern.

Beispiele für Kategorien:

- Dating
- Mailing
- Hacking
- Werbung
- Malware
- Glücksspiel

Das Ausrufezeichen bedeutet „nicht“ beziehungsweise „verboten“.

Beispielhafte Logik:

```text
Allowlist !Dating !Mailing !Hacking any
```

Sinngemäß:

1. Prüfe zuerst Allowlist.
2. Wenn Treffer in Allowlist: erlauben.
3. Wenn kein Treffer: prüfe verbotene Kategorien.
4. Wenn Treffer in verbotener Kategorie: sperren.
5. Wenn kein Treffer: erlauben.

---

**24. Firewalls**

Eine Firewall kontrolliert Netzwerkverkehr anhand von Regeln.

Sie entscheidet:

```text
Darf dieses Paket durch?
Ja oder Nein?
```

Firewalls können auf verschiedenen Ebenen arbeiten:

- Host-Firewall
- Unternehmens-Firewall
- Paketfilter-Firewall
- Stateful-Packet-Inspection-Firewall

---

**25. Personal-Firewall und Unternehmens-Firewall**

| Firewall-Typ | Aufgabe |
|---|---|
| Personal-Firewall | schützt einen einzelnen PC oder Server |
| Unternehmens-Firewall | schützt ein ganzes LAN oder Teilnetze |

---

**26. Paketfilter-Firewall**

Eine Paketfilter-Firewall ist einfacher und älter.

Problem:

Bei klassischen Paketfiltern muss häufig Hinweg und Rückweg erlaubt werden.

Beispiel:

```text
Client -> Server erlauben
Server -> Client ebenfalls erlauben
```

Das ist fehleranfälliger.

---

**27. Stateful Packet Inspection Firewall**

Eine SPI-Firewall merkt sich den Zustand einer Verbindung.

Vorteil:

```text
Nur der Hinweg muss ausdrücklich erlaubt werden.
Der Rückweg wird automatisch als passende Antwort erkannt.
```

Das ist moderner und sicherer.

Beispiel:

```text
Intern -> Internet erlaubt
Antwort Internet -> Intern wird automatisch erkannt
```

---

**28. Steuerbare Schichten einer SPI-Firewall**

Eine SPI-Firewall kann mehrere Bedingungen prüfen.

| OSI-Schicht | Prüfbares Merkmal |
|---|---|
| Schicht 2 | MAC-Adresse |
| Schicht 3 | IP-Adresse |
| Schicht 4 | TCP oder UDP |
| Schicht 5 bis 7 | Port / Anwendung |

Wichtig:

```text
Alle angegebenen Bedingungen sind logisch UND-verknüpft.
```

Beispiel:

```text
Nur diese MAC-Adresse
UND nur diese IP-Adresse
UND nur TCP
UND nur Port 22
```

Dann darf nur genau dieser passende Verkehr durch.

Wichtiger Merksatz:

```text
Was nicht abgefragt wird, ist erlaubt.
```

Das bedeutet:

Wenn eine Regel keine MAC-Adresse prüft, ist die MAC-Adresse für diese Regel egal.

---

**29. Firewall als Brücke zwischen intern und extern**

Im Kochbuch wird die Firewall mit einer Brücke zwischen Insel und Festland verglichen.

- Insel = internes sicheres Netz
- Festland = externes unsicheres Netz
- Brücke = Firewall
- Wachmannschaft = Linux-System mit Firewall
- grüne Seite = internes Netz
- rote Seite = externes Netz

Die Firewall kontrolliert, wer von innen nach außen und von außen nach innen darf.

---

**30. iptables: INPUT, OUTPUT und FORWARD**

Bei iptables gibt es drei wichtige Regelketten.

| Regelkette | Bedeutung |
|---|---|
| INPUT | Verkehr zur Firewall selbst |
| OUTPUT | Verkehr von der Firewall selbst nach außen |
| FORWARD | Verkehr, der durch die Firewall hindurchgeleitet wird |

---

**Grafik 5: INPUT, OUTPUT und FORWARD**

<svg width="900" height="470" viewBox="0 0 900 470" xmlns="http://www.w3.org/2000/svg">
  <rect x="30" y="30" width="840" height="400" rx="18" fill="#f6f8fa" stroke="#222" stroke-width="2"/>
  <text x="450" y="65" text-anchor="middle" font-size="24" font-family="Arial" font-weight="bold">iptables: INPUT, OUTPUT und FORWARD</text>

  <rect x="80" y="170" width="170" height="100" rx="12" fill="#e4ffd9" stroke="#2f7d32" stroke-width="2"/>
  <text x="165" y="205" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Intern</text>
  <text x="165" y="235" text-anchor="middle" font-size="16" font-family="Arial">eth0 / grün</text>

  <rect x="365" y="130" width="170" height="180" rx="12" fill="#fff0cc" stroke="#a66a00" stroke-width="2"/>
  <text x="450" y="165" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Firewall</text>
  <text x="450" y="195" text-anchor="middle" font-size="16" font-family="Arial">Linux</text>
  <text x="450" y="225" text-anchor="middle" font-size="15" font-family="Arial">INPUT</text>
  <text x="450" y="250" text-anchor="middle" font-size="15" font-family="Arial">OUTPUT</text>
  <text x="450" y="275" text-anchor="middle" font-size="15" font-family="Arial">FORWARD</text>

  <rect x="650" y="170" width="170" height="100" rx="12" fill="#ffd9d9" stroke="#a62626" stroke-width="2"/>
  <text x="735" y="205" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Extern</text>
  <text x="735" y="235" text-anchor="middle" font-size="16" font-family="Arial">eth1 / rot</text>

  <line x1="250" y1="185" x2="365" y2="185" stroke="#222" stroke-width="3" marker-end="url(#arrow4)"/>
  <text x="307" y="165" text-anchor="middle" font-size="15" font-family="Arial">INPUT</text>

  <line x1="535" y1="185" x2="650" y2="185" stroke="#222" stroke-width="3" marker-end="url(#arrow4)"/>
  <text x="592" y="165" text-anchor="middle" font-size="15" font-family="Arial">OUTPUT</text>

  <path d="M250 260 C360 370, 540 370, 650 260" fill="none" stroke="#222" stroke-width="3" marker-end="url(#arrow4)"/>
  <text x="450" y="365" text-anchor="middle" font-size="16" font-family="Arial" font-weight="bold">FORWARD = Verkehr durch die Firewall hindurch</text>

  <defs>
    <marker id="arrow4" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto">
      <path d="M0,0 L0,6 L9,3 z" fill="#222"/>
    </marker>
  </defs>
</svg>

---

**31. FORWARD**

FORWARD betrifft Datenverkehr, der durch die Firewall hindurchgeht.

Beispiele:

```text
internes Netz -> Firewall -> Internet
Internet -> Firewall -> internes Netz
```

FORWARD ist wichtig, wenn die Firewall als Router zwischen zwei Netzen arbeitet.

---

**32. INPUT**

INPUT betrifft Datenverkehr, der direkt an die Firewall selbst gerichtet ist.

Beispiele:

```text
Admin-PC -> Firewall per SSH
Monitoring-Server -> Firewall
Ping an Firewall
```

---

**33. OUTPUT**

OUTPUT betrifft Datenverkehr, der von der Firewall selbst erzeugt wird.

Beispiele:

```text
Firewall -> NTP-Server
Firewall -> DNS-Server
Firewall -> Update-Server
```

---

**34. Beispiel einfache Firewall**

Beim Erstellen einer Firewall-Regel muss man sich immer fragen:

- Wo ist die Quelle?
- Wo ist das Ziel?
- Ist es INPUT, OUTPUT oder FORWARD?
- Wird TCP, UDP oder ICMP genutzt?
- Welcher Port wird genutzt?
- Ist die IP-Adresse ein einzelner Host oder ein ganzes Netz?
- Muss eine Subnetzmaske angegeben werden?
- Soll zusätzlich die MAC-Adresse geprüft werden?

Wichtig:

```text
ICMP hat keinen Port.
```

---

**35. iptables-Syntax aus dem Kochbuch**

Beispielhafte Regeln:

```bash
$FT $MP -s 192.168.2.0/24 -d 192.168.1.2 --dports 80,3128 $R
$IT $MAC 1A:2B:3C:4D:5E:6F -s 192.168.2.2 -d 192.168.2.1 --dport 22 $R
$OU -s 192.168.1.1 -d 192.168.1.2 --dport 123 $R
```

Bedeutung:

| Kürzel / Option | Bedeutung |
|---|---|
| FT | FORWARD TCP |
| IT | INPUT TCP |
| OU | OUTPUT UDP |
| MP | Multiport, also mehrere Ports |
| -s | Source / Quelle |
| -d | Destination / Ziel |
| --dport | ein Ziel-Port |
| --dports | mehrere Ziel-Ports |
| MAC | MAC-Adresse zusätzlich prüfen |
| ACCEPT | Regel erlaubt den Verkehr |
| DROP | Paket wird verworfen |

---

**36. Catch-all-Regel**

Am Ende steht häufig:

```bash
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP
```

Bedeutung:

```text
Alles, was vorher nicht ausdrücklich erlaubt wurde, wird verboten.
```

Das ist ein sehr wichtiges Firewall-Prinzip.

Merksatz:

```text
Erst erlauben, was gebraucht wird.
Dann alles andere blockieren.
```

---

**37. Praktische Umsetzung einer einfachen Firewall**

Für das einfache Beispiel braucht man:

- Linux-PC
- zwei Netzwerkkarten
- Root-Rechte
- iptables-Skript
- passende IP-Adressen auf den Netzwerkkarten

Beispiel:

```text
Netzwerkkarte 1: 192.168.1.1
Netzwerkkarte 2: 192.168.2.1
```

Typische Befehle:

```bash
sudo -s
chmod 755 alle.sh
./alle.sh
```

---

**38. DMZ – Demilitarisierte Zone**

Eine DMZ ist ein separates Zwischennetz.

Sie wird genutzt für Server, die sowohl von intern als auch von extern erreichbar sein sollen.

Beispiele:

- Webserver
- Mailserver
- DNS-Server
- Reverse Proxy

Die DMZ liegt nicht direkt im internen LAN.

Ziel:

```text
Wenn ein öffentlicher Server angegriffen wird, soll nicht direkt das interne LAN betroffen sein.
```

---

**39. DMZ-Farben**

Typische Darstellung:

| Bereich | Farbe |
|---|---|
| Internes LAN | grün |
| Externes Netz / Internet | rot |
| DMZ | orange |

---

**40. Zwei-stufiges DMZ-Konzept**

Das zwei-stufige Konzept nutzt zwei Firewalls.

Aufbau:

```text
Internet -> Firewall 1 -> DMZ -> Firewall 2 -> internes LAN
```

Vorteile:

- sicherer
- doppelte Verteidigungslinie
- in IHK-Prüfungen oft bevorzugt

Nachteile:

- aufwendiger
- zwei Firewalls
- zwei Regelwerke
- Routing muss sauber geplant werden

Merksatz:

```text
Zwei-stufige DMZ = sicherer, aber aufwendiger.
```

---

**41. Ein-stufiges DMZ-Konzept**

Das ein-stufige Konzept nutzt eine Firewall mit drei Netzwerkkarten.

Aufbau:

```text
Internes LAN
     |
Firewall mit 3 Netzwerkkarten
     |
Internet
     |
DMZ
```

Vorteile:

- weniger Aufwand
- nur eine Firewall
- nur ein Regelwerk

Nachteile:

- weniger sicher als zwei-stufiges Konzept
- nur eine Verteidigungslinie

Merksatz:

```text
Ein-stufige DMZ = einfacher, aber unsicherer.
```

---

**Grafik 6: Ein-stufige DMZ mit drei Netzwerkkarten**

<svg width="900" height="500" viewBox="0 0 900 500" xmlns="http://www.w3.org/2000/svg">
  <rect x="30" y="30" width="840" height="430" rx="18" fill="#f6f8fa" stroke="#222" stroke-width="2"/>
  <text x="450" y="65" text-anchor="middle" font-size="24" font-family="Arial" font-weight="bold">Ein-stufige DMZ</text>

  <rect x="365" y="190" width="170" height="120" rx="12" fill="#fff0cc" stroke="#a66a00" stroke-width="2"/>
  <text x="450" y="230" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Firewall</text>
  <text x="450" y="260" text-anchor="middle" font-size="15" font-family="Arial">3 Netzwerkkarten</text>

  <rect x="80" y="190" width="170" height="100" rx="12" fill="#e4ffd9" stroke="#2f7d32" stroke-width="2"/>
  <text x="165" y="225" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Internes LAN</text>
  <text x="165" y="255" text-anchor="middle" font-size="15" font-family="Arial">grün</text>

  <rect x="650" y="190" width="170" height="100" rx="12" fill="#ffd9d9" stroke="#a62626" stroke-width="2"/>
  <text x="735" y="225" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Internet</text>
  <text x="735" y="255" text-anchor="middle" font-size="15" font-family="Arial">rot</text>

  <rect x="365" y="350" width="170" height="80" rx="12" fill="#ffe0b3" stroke="#b86b00" stroke-width="2"/>
  <text x="450" y="382" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">DMZ</text>
  <text x="450" y="407" text-anchor="middle" font-size="15" font-family="Arial">orange</text>

  <line x1="250" y1="240" x2="365" y2="240" stroke="#222" stroke-width="3" marker-end="url(#arrow5)"/>
  <line x1="535" y1="240" x2="650" y2="240" stroke="#222" stroke-width="3" marker-end="url(#arrow5)"/>
  <line x1="450" y1="310" x2="450" y2="350" stroke="#222" stroke-width="3" marker-end="url(#arrow5)"/>

  <defs>
    <marker id="arrow5" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto">
      <path d="M0,0 L0,6 L9,3 z" fill="#222"/>
    </marker>
  </defs>
</svg>

---

**Grafik 7: Zwei-stufige DMZ**

<svg width="900" height="430" viewBox="0 0 900 430" xmlns="http://www.w3.org/2000/svg">
  <rect x="30" y="30" width="840" height="350" rx="18" fill="#f6f8fa" stroke="#222" stroke-width="2"/>
  <text x="450" y="65" text-anchor="middle" font-size="24" font-family="Arial" font-weight="bold">Zwei-stufige DMZ</text>

  <rect x="70" y="170" width="150" height="90" rx="12" fill="#ffd9d9" stroke="#a62626" stroke-width="2"/>
  <text x="145" y="205" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">Internet</text>
  <text x="145" y="235" text-anchor="middle" font-size="15" font-family="Arial">rot</text>

  <rect x="280" y="150" width="130" height="130" rx="12" fill="#fff0cc" stroke="#a66a00" stroke-width="2"/>
  <text x="345" y="200" text-anchor="middle" font-size="19" font-family="Arial" font-weight="bold">Firewall 1</text>

  <rect x="470" y="170" width="150" height="90" rx="12" fill="#ffe0b3" stroke="#b86b00" stroke-width="2"/>
  <text x="545" y="205" text-anchor="middle" font-size="20" font-family="Arial" font-weight="bold">DMZ</text>
  <text x="545" y="235" text-anchor="middle" font-size="15" font-family="Arial">orange</text>

  <rect x="680" y="150" width="130" height="130" rx="12" fill="#fff0cc" stroke="#a66a00" stroke-width="2"/>
  <text x="745" y="200" text-anchor="middle" font-size="19" font-family="Arial" font-weight="bold">Firewall 2</text>

  <rect x="680" y="310" width="130" height="60" rx="12" fill="#e4ffd9" stroke="#2f7d32" stroke-width="2"/>
  <text x="745" y="346" text-anchor="middle" font-size="18" font-family="Arial" font-weight="bold">Internes LAN</text>

  <line x1="220" y1="215" x2="280" y2="215" stroke="#222" stroke-width="3" marker-end="url(#arrow6)"/>
  <line x1="410" y1="215" x2="470" y2="215" stroke="#222" stroke-width="3" marker-end="url(#arrow6)"/>
  <line x1="620" y1="215" x2="680" y2="215" stroke="#222" stroke-width="3" marker-end="url(#arrow6)"/>
  <line x1="745" y1="280" x2="745" y2="310" stroke="#222" stroke-width="3" marker-end="url(#arrow6)"/>

  <defs>
    <marker id="arrow6" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto">
      <path d="M0,0 L0,6 L9,3 z" fill="#222"/>
    </marker>
  </defs>
</svg>

---

**42. Komplexere Firewall mit DMZ**

Im komplexeren Beispiel wird eine Linux-Maschine mit drei Netzwerkkarten als Firewall eingesetzt.

Beispielhafte Netze:

```text
Externes Netz: 192.168.1.0/24
Internes Netz: 192.168.2.0/24
DMZ:           192.168.3.0/24
```

Die Firewall hat dann zum Beispiel:

```text
1. Netzwerkkarte: 192.168.1.1
2. Netzwerkkarte: 192.168.2.1
3. Netzwerkkarte: 192.168.3.1
```

Regeln können dann zum Beispiel erlauben:

- internes Netz darf Web/Proxy nach extern nutzen
- interner Host darf per SSH auf Firewall
- interner Admin-PC darf per SSH auf DMZ-Server
- internes Netz darf DNS-Server in der DMZ nutzen
- Firewall darf NTP nach außen nutzen

Alles andere wird durch DROP verworfen.

---

**43. Prüfungssichere Merksätze**

```text
IP-Adresse = welcher Host?
Port = welcher Dienst?
Socket = IP-Adresse + Port

TCP (Transmission Control Protocol) = verbindungsorientiert und zuverlässig

TCP ist wie ein Einschreiben mit Rückschein. Es ist extrem zuverlässig, aber durch die vielen Kontrollen etwas langsamer.
TCP baut vor der eigentlichen Datenübertragung eine Verbindung auf. Dafür wird der sogenannte Three-Way-Handshake verwendet.

Vereinfacht:

1. Client fragt: Darf ich eine Verbindung aufbauen?
2. Server antwortet: Ja, ich bin bereit.
3. Client bestätigt: Verbindung steht.

UDP (User Datagram Protocol) = verbindungslos und schnell
Verbindungslos: Es wird keine formelle Verbindung (kein "Handshake") zwischen Sender und Empfänger aufgebaut,
bevor Daten gesendet werden. Daten werden einfach "abgeschickt"

Unzuverlässig: Es gibt keine Empfangsbestätigung und keine Prüfung, ob ein Paket angekommen ist.
Geht ein Paket verloren, wird es nicht erneut gesendet.

UDP ist wie das Werfen eines Balls. Es sendet Daten einfach los, ohne zu prüfen, ob sie ankommen.
Es ist rasend schnell und wird daher oft für Live-Streaming, Online-Gaming oder Telefonie (VoIP) genutzt.

QUIC = modernes Protokoll auf UDP-Basis mit Verschlüsselung
Portforwarding = von außen nach innen
NAT/PAT (Network/Port Address Translation) = von innen nach außen über eine gemeinsame öffentliche IP
NAT/PAT = interne private Adressen werden beim Zugriff nach außen in eine öffentliche Adresse übersetzt.

Allowlist = alles verboten außer erlaubt
Blocklist = alles erlaubt außer verboten

SPI-Firewall (Stateful Packet Inspection) = merkt sich Verbindungszustände
Erklärung: ist eine hochentwickelte Sicherheitstechnologie in Routern und Firewalls. Sie schützt Netzwerke, indem sie Datenpakete nicht nur einzeln bewertet, sondern den gesamten Kontext und Verbindungsstatus (den "Zustand") einer Kommunikation überwacht und speichert.

INPUT = zur Firewall selbst
OUTPUT = von der Firewall selbst
FORWARD = durch die Firewall hindurch
Portforwarding = eingehende Verbindung von außen wird gezielt an ein internes Gerät weitergeleitet.
DMZ = separates Zwischennetz für öffentlich erreichbare Server
Zwei-stufige DMZ = sicherer, aber aufwendiger
Ein-stufige DMZ = einfacher, aber unsicherer
```

---

**44. Mini-Vergleich: wichtigste Begriffe**

| Begriff | Kurz erklärt |
|---|---|
| Port | Nummer für Dienst oder Anwendung |
| Socket | Kombination aus IP-Adresse und Port |
| TCP | zuverlässige Verbindung mit Aufbau und Abbau |
| UDP | schnelle, verbindungslose Übertragung |
| QUIC | modernes, verschlüsseltes Protokoll auf UDP-Basis |
| Portknocking | richtige Port-Reihenfolge löst Ereignis aus |
| Portforwarding | externer Port wird auf internen Dienst weitergeleitet |
| NAT/PAT | interne Geräte teilen sich öffentliche IP-Adresse |
| Allowlist | nur ausdrücklich Erlaubtes ist erlaubt |
| Blocklist | alles erlaubt außer ausdrücklich Verbotenem |
| Firewall | kontrolliert Netzwerkverkehr anhand von Regeln |
| SPI | Stateful Packet Inspection, merkt sich Verbindungen |
| INPUT | Pakete zur Firewall |
| OUTPUT | Pakete von der Firewall |
| FORWARD | Pakete durch die Firewall |
| DMZ | separates Netz für Dienste zwischen intern und extern |

---

**45. Typische Prüfungsfrage: Was ist der Unterschied zwischen NAT und Portforwarding?**

NAT/PAT wird genutzt, wenn interne Geräte ins Internet wollen.  
Dabei ersetzt der Router die private Quelladresse durch seine öffentliche IP-Adresse und merkt sich die Verbindung über Ports.

Portforwarding wird genutzt, wenn externe Geräte aus dem Internet auf einen internen Dienst zugreifen sollen.  
Dabei wird ein externer Port auf eine interne IP-Adresse und einen internen Port weitergeleitet.

Kurz:

```text
NAT/PAT: innen -> außen
Portforwarding: außen -> innen
```

---

**46. Typische Prüfungsfrage: Warum ist eine DMZ sinnvoll?**

Eine DMZ trennt öffentlich erreichbare Server vom internen LAN.

Wenn ein Webserver in der DMZ angegriffen oder kompromittiert wird, liegt er nicht direkt im internen Netz.  
Dadurch wird das interne LAN besser geschützt.

Kurz:

```text
DMZ = Sicherheitszone zwischen Internet und internem LAN.
```

---

**47. Typische Prüfungsfrage: Warum ist eine SPI-Firewall besser als ein einfacher Paketfilter?**

Eine SPI-Firewall merkt sich den Zustand einer Verbindung.

Wenn ein interner Client eine Verbindung nach außen aufbaut, erkennt die Firewall die passende Antwort automatisch.  
Man muss den Rückweg nicht separat freigeben.

Kurz:

```text
Paketfilter: Hinweg und Rückweg oft manuell regeln.
SPI-Firewall: Hinweg erlauben, Rückweg wird passend erkannt.
```

---

**48. Typische Prüfungsfrage: Was bedeutet „Default DROP“?**

Default DROP bedeutet:

```text
Alles, was nicht ausdrücklich erlaubt ist, wird verworfen.
```

Das ist ein sicheres Firewall-Grundprinzip.

Man erstellt zuerst die notwendigen Erlaubnisregeln.  
Am Ende wird alles andere blockiert.

---

**49. Gesamtbild**

Die Seiten 64 bis 94 zeigen den Übergang von der Transportschicht zur praktischen Netzwerksicherheit.

Erst wird erklärt, wie Dienste über Ports unterschieden werden.  
Danach wird gezeigt, wie TCP, UDP und QUIC arbeiten.  
Anschließend geht es darum, wie Verbindungen nach innen oder außen weitergeleitet werden.  
Zum Schluss werden Firewalls, iptables-Regeln und DMZ-Konzepte erklärt.

Das zentrale Prinzip lautet:

```text
Netzwerkkommunikation muss adressiert, unterschieden, kontrolliert und abgesichert werden.
```