# Klausurvorbereitung 27. Mai



# 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.
```

# 50 Fragen und Antworten: Schicht 4, Ports, NAT, Firewall und DMZ

**50 Fragen und Antworten: Schicht 4, Ports, NAT, Firewall und DMZ**

---

<details>
<summary><strong>1. Was ist die Aufgabe der Schicht 4 im Netzwerkmodell?</strong></summary>

Die Schicht 4 ist die Transportschicht. Sie sorgt dafür, dass Daten nicht nur beim richtigen Rechner ankommen, sondern auch bei der richtigen Anwendung oder dem richtigen Dienst auf diesem Rechner.

</details>

---

<details>
<summary><strong>2. Warum reicht eine IP-Adresse allein nicht aus?</strong></summary>

Eine IP-Adresse bestimmt nur den Zielrechner. Auf einem Rechner können aber mehrere Dienste gleichzeitig laufen, zum Beispiel Webserver, Maildienst oder Dateifreigabe. Deshalb braucht man zusätzlich einen Port, um den richtigen Dienst anzusprechen.

</details>

---

<details>
<summary><strong>3. Was ist ein Port?</strong></summary>

Ein Port ist eine Nummer, über die ein bestimmter Dienst oder eine Anwendung auf einem Rechner angesprochen wird.

Beispiel:

```text
192.168.1.11:80
```

Die IP-Adresse ist `192.168.1.11`.  
Der Port ist `80`.  
Port 80 steht typischerweise für HTTP.

</details>

---

<details>
<summary><strong>4. Was ist ein Socket?</strong></summary>

Ein Socket ist die Kombination aus IP-Adresse und Port.

```text
Socket = IP-Adresse + Port
```

Beispiel:

```text
192.168.1.11:80
```

</details>

---

<details>
<summary><strong>5. Was bedeutet die Schreibweise 192.168.1.11:80?</strong></summary>

Diese Schreibweise bedeutet:

```text
192.168.1.11 = Zielhost
80           = Zielport
```

Der Zugriff geht also an den Rechner mit der IP-Adresse `192.168.1.11` und dort an den Dienst auf Port `80`.

</details>

---

<details>
<summary><strong>6. Wie schreibt man eine IPv6-Adresse mit Port korrekt?</strong></summary>

Bei IPv6 muss die Adresse in eckige Klammern gesetzt werden, damit der Port eindeutig erkennbar ist.

```text
[2001:1234:5678:90AB:CDEF:1A2B:3C4D:5E6F]:80
```

Ohne Klammern wäre nicht klar erkennbar, wo die IPv6-Adresse endet und wo der Port beginnt.

</details>

---

<details>
<summary><strong>7. In welche drei Bereiche werden Ports eingeteilt?</strong></summary>

Ports werden in drei Bereiche eingeteilt:

```text
0 bis 1023       = System Ports
1024 bis 49151   = User Ports
49152 bis 65535  = Dynamic/Private Ports
```

</details>

---

<details>
<summary><strong>8. Was sind System Ports?</strong></summary>

System Ports sind die bekannten Ports von `0` bis `1023`. Sie werden für wichtige Standarddienste verwendet.

Beispiele:

```text
22  = SSH
53  = DNS
80  = HTTP
443 = HTTPS
```

</details>

---

<details>
<summary><strong>9. Was sind User Ports?</strong></summary>

User Ports liegen im Bereich von `1024` bis `49151`. Sie werden für registrierte Anwendungen und Dienste verwendet.

Beispiele:

```text
3128  = Squid Proxy
3306  = MySQL
9100  = Druckerport
10000 = Webmin
```

</details>

---

<details>
<summary><strong>10. Was sind Dynamic oder Private Ports?</strong></summary>

Dynamic oder Private Ports liegen im Bereich von `49152` bis `65535`.

Sie werden oft automatisch und kurzfristig von Clients verwendet, wenn eine Verbindung aufgebaut wird.

</details>

---

<details>
<summary><strong>11. Welcher Port wird typischerweise für HTTP verwendet?</strong></summary>

HTTP verwendet typischerweise Port `80`.

```text
HTTP = Port 80
```

</details>

---

<details>
<summary><strong>12. Welcher Port wird typischerweise für HTTPS verwendet?</strong></summary>

HTTPS verwendet typischerweise Port `443`.

```text
HTTPS = Port 443
```

</details>

---

<details>
<summary><strong>13. Welcher Port wird typischerweise für SSH verwendet?</strong></summary>

SSH verwendet typischerweise Port `22`.

```text
SSH = Port 22
```

SSH wird häufig zur sicheren Fernadministration von Linux-Systemen genutzt.

</details>

---

<details>
<summary><strong>14. Welcher Port wird typischerweise für DNS verwendet?</strong></summary>

DNS verwendet typischerweise Port `53`.

DNS nutzt meistens UDP, kann aber in bestimmten Fällen auch TCP verwenden.

</details>

---

<details>
<summary><strong>15. Welche Ports verwendet DHCP?</strong></summary>

DHCP verwendet die Ports `67` und `68`.

```text
Port 67 = DHCP-Server
Port 68 = DHCP-Client
```

DHCP nutzt UDP.

</details>

---

<details>
<summary><strong>16. Was ist UDP?</strong></summary>

UDP ist ein verbindungsloses Transportprotokoll.

Eigenschaften:

```text
schnell
wenig Verwaltungsaufwand
keine feste Verbindung
keine Garantie für Zustellung
keine eingebaute Reihenfolgekontrolle
```

</details>

---

<details>
<summary><strong>17. Wann wird UDP häufig verwendet?</strong></summary>

UDP wird häufig verwendet, wenn Geschwindigkeit wichtiger ist als vollständige Kontrolle.

Beispiele:

```text
DNS
DHCP
NTP
Streaming
VoIP
Online-Gaming
```

</details>

---

<details>
<summary><strong>18. Was ist TCP?</strong></summary>

TCP ist ein verbindungsorientiertes Transportprotokoll.

Eigenschaften:

```text
Verbindungsaufbau
Bestätigung empfangener Daten
Kontrolle der Reihenfolge
zuverlässige Datenübertragung
mehr Verwaltungsaufwand als UDP
```

</details>

---

<details>
<summary><strong>19. Wann wird TCP häufig verwendet?</strong></summary>

TCP wird genutzt, wenn Daten zuverlässig und vollständig übertragen werden müssen.

Beispiele:

```text
HTTP
HTTPS
SSH
FTP
SMTP
IMAP
POP3
SMB
```

</details>

---

<details>
<summary><strong>20. Was ist der wichtigste Unterschied zwischen TCP und UDP?</strong></summary>

TCP ist verbindungsorientiert und kontrolliert die Übertragung.  
UDP ist verbindungslos und schneller, aber ohne eingebaute Zustellgarantie.

Kurz:

```text
TCP = zuverlässig, aber aufwendiger
UDP = schneller, aber weniger kontrolliert
```

</details>

---

<details>
<summary><strong>21. Was ist der TCP-3-Wege-Handshake?</strong></summary>

Der TCP-3-Wege-Handshake ist der Verbindungsaufbau bei TCP.

Ablauf:

```text
1. Client -> Server: SYN
2. Server -> Client: SYN + ACK
3. Client -> Server: ACK
```

Danach ist die TCP-Verbindung aufgebaut.

</details>

---

<details>
<summary><strong>22. Wofür steht SYN?</strong></summary>

SYN steht für Synchronisation.

Beim TCP-Verbindungsaufbau sendet der Client zuerst ein SYN-Paket an den Server, um eine Verbindung zu starten.

</details>

---

<details>
<summary><strong>23. Wofür steht ACK?</strong></summary>

ACK steht für Acknowledgement, also Bestätigung.

Ein ACK bestätigt, dass ein Paket oder ein Verbindungsschritt angekommen ist.

</details>

---

<details>
<summary><strong>24. Wie wird eine TCP-Verbindung kontrolliert abgebaut?</strong></summary>

Der TCP-Verbindungsabbau erfolgt typischerweise in vier Schritten:

```text
1. FIN
2. ACK
3. FIN
4. ACK
```

Merksatz:

```text
TCP-Aufbau = 3 Schritte
TCP-Abbau  = 4 Schritte
```

</details>

---

<details>
<summary><strong>25. Was ist ein SYN-Flood-Angriff?</strong></summary>

Bei einem SYN-Flood-Angriff werden sehr viele SYN-Anfragen an einen Server gesendet.

Der Server reserviert Ressourcen für halboffene Verbindungen. Wenn die abschließende Bestätigung ausbleibt, können diese Ressourcen blockiert werden.

Das kann zu einer Überlastung des Servers führen.

</details>

---

<details>
<summary><strong>26. Was ist QUIC?</strong></summary>

QUIC ist ein modernes Transportprotokoll, das auf UDP basiert.

Es soll Geschwindigkeit, Zuverlässigkeit und Verschlüsselung verbinden.

Kurz:

```text
QUIC = UDP-Basis + moderne Verbindungskontrolle + Verschlüsselung
```

</details>

---

<details>
<summary><strong>27. Warum ist QUIC im modernen Web wichtig?</strong></summary>

QUIC ist wichtig, weil es schnelle Verbindungen ermöglichen soll und gleichzeitig Verschlüsselung fest integriert.

Es wird vor allem für moderne Webkommunikation eingesetzt.

</details>

---

<details>
<summary><strong>28. Was ist Portknocking?</strong></summary>

Portknocking bedeutet, dass bestimmte Ports in einer festgelegten Reihenfolge angesprochen werden müssen.

Nur wenn die Reihenfolge stimmt, wird eine Aktion ausgelöst.

Beispiel:

```text
Port 1111
Port 2222
Port 3333
```

Erst danach wird ein Dienst freigegeben oder ein Ereignis ausgelöst.

</details>

---

<details>
<summary><strong>29. Was ist der Vorteil von Portknocking?</strong></summary>

Der Vorteil ist, dass ein Dienst nicht dauerhaft offen sichtbar sein muss.

Er wird erst nach der richtigen „Anklopf-Reihenfolge“ erreichbar oder aktiviert.

</details>

---

<details>
<summary><strong>30. Ist Portknocking ein Ersatz für sichere Authentifizierung?</strong></summary>

Nein.

Portknocking kann eine zusätzliche Schutzmaßnahme sein, ersetzt aber keine sichere Authentifizierung, keine starken Passwörter und keine sauber abgesicherten Dienste.

</details>

---

<details>
<summary><strong>31. Was ist Portforwarding?</strong></summary>

Portforwarding leitet eine Anfrage von außen an einen internen Dienst weiter.

Beispiel:

```text
11.1.2.4:80 -> 192.168.178.11:80
```

Eine externe Anfrage an Port `80` der öffentlichen Adresse wird an den internen Webserver weitergeleitet.

</details>

---

<details>
<summary><strong>32. Was ist Destination NAT?</strong></summary>

Destination NAT bedeutet, dass die Zieladresse oder der Zielport eines Pakets verändert wird.

Beim Portforwarding wird zum Beispiel aus:

```text
11.1.2.4:80
```

intern:

```text
192.168.178.11:80
```

</details>

---

<details>
<summary><strong>33. Warum kann Portforwarding gefährlich sein?</strong></summary>

Portforwarding öffnet einen Weg aus dem Internet in das interne Netzwerk.

Wenn der interne Dienst schlecht abgesichert oder veraltet ist, kann das ein Sicherheitsrisiko darstellen.

</details>

---

<details>
<summary><strong>34. Welche sichere Alternative gibt es oft zu Portforwarding?</strong></summary>

Eine sichere Alternative ist häufig ein VPN oder ein privater Zugriffsdienst wie Tailscale.

Dann muss ein Dienst nicht direkt öffentlich aus dem Internet erreichbar sein.

</details>

---

<details>
<summary><strong>35. Was ist NAT?</strong></summary>

NAT bedeutet Network Address Translation.

Dabei werden IP-Adressen beim Übergang zwischen zwei Netzen umgeschrieben.

Im Heimnetz wird meist die private interne IP-Adresse durch die öffentliche IP-Adresse des Routers ersetzt.

</details>

---

<details>
<summary><strong>36. Was ist PAT?</strong></summary>

PAT bedeutet Port Address Translation.

Dabei teilen sich mehrere interne Geräte eine öffentliche IP-Adresse. Der Router unterscheidet die Verbindungen über Ports.

Kurz:

```text
Viele interne Geräte -> eine öffentliche IP
Unterscheidung über Ports
```

</details>

---

<details>
<summary><strong>37. Was ist Source NAT?</strong></summary>

Source NAT bedeutet, dass die Quelladresse eines Pakets verändert wird.

Beispiel:

```text
Interner PC: 192.168.178.11
Router extern: 11.1.2.4
```

Wenn der PC ins Internet geht, ersetzt der Router die private Quelladresse durch seine öffentliche Adresse.

</details>

---

<details>
<summary><strong>38. Was ist der Unterschied zwischen NAT/PAT und Portforwarding?</strong></summary>

NAT/PAT wird verwendet, wenn interne Geräte nach außen ins Internet kommunizieren.

Portforwarding wird verwendet, wenn externe Geräte von außen auf einen internen Dienst zugreifen sollen.

Kurz:

```text
NAT/PAT        = innen nach außen
Portforwarding = außen nach innen
```

</details>

---

<details>
<summary><strong>39. Was ist eine Allowlist?</strong></summary>

Eine Allowlist arbeitet nach dem Prinzip:

```text
Alles ist verboten, außer es ist ausdrücklich erlaubt.
```

Nur Einträge, die auf der Allowlist stehen, dürfen genutzt werden.

</details>

---

<details>
<summary><strong>40. Was ist eine Blocklist?</strong></summary>

Eine Blocklist arbeitet nach dem Prinzip:

```text
Alles ist erlaubt, außer es ist ausdrücklich verboten.
```

Nur Einträge, die auf der Blocklist stehen, werden gesperrt.

</details>

---

<details>
<summary><strong>41. Was ist strenger: Allowlist oder Blocklist?</strong></summary>

Eine Allowlist ist strenger.

Bei einer Allowlist ist zunächst alles verboten. Nur ausdrücklich erlaubte Ziele oder Dienste dürfen genutzt werden.

</details>

---

<details>
<summary><strong>42. Was ist der Nachteil einer reinen Allowlist?</strong></summary>

Eine reine Allowlist hat einen hohen Pflegeaufwand.

Jede erlaubte Webseite, jeder erlaubte Dienst oder jedes erlaubte Ziel muss vorher eingetragen werden.

</details>

---

<details>
<summary><strong>43. Was ist der Nachteil einer reinen Blocklist?</strong></summary>

Eine Blocklist ist nie vollständig.

Neue gefährliche oder unerwünschte Seiten können fehlen und dadurch trotzdem erreichbar sein.

</details>

---

<details>
<summary><strong>44. Was ist SquidGuard?</strong></summary>

SquidGuard ist ein Filterwerkzeug, das Webseiten anhand von Listen oder Kategorien blockieren oder erlauben kann.

Beispiele für Kategorien:

```text
Dating
Mailing
Hacking
Werbung
Malware
Glücksspiel
```

</details>

---

<details>
<summary><strong>45. Was ist eine Firewall?</strong></summary>

Eine Firewall kontrolliert Netzwerkverkehr anhand von Regeln.

Sie entscheidet, ob ein Paket erlaubt oder blockiert wird.

Kurz:

```text
Firewall = kontrolliert Datenverkehr
```

</details>

---

<details>
<summary><strong>46. Was ist eine Personal-Firewall?</strong></summary>

Eine Personal-Firewall schützt einen einzelnen Rechner.

Sie läuft direkt auf dem PC oder Server und kontrolliert dessen ein- und ausgehenden Netzwerkverkehr.

</details>

---

<details>
<summary><strong>47. Was ist eine Unternehmens-Firewall?</strong></summary>

Eine Unternehmens-Firewall schützt ein ganzes Netzwerk oder mehrere Teilnetze.

Sie steht meistens zwischen internem LAN und externem Netz beziehungsweise Internet.

</details>

---

<details>
<summary><strong>48. Was ist der Unterschied zwischen Paketfilter und Stateful Packet Inspection?</strong></summary>

Ein einfacher Paketfilter prüft einzelne Pakete anhand von Regeln.

Eine Stateful-Packet-Inspection-Firewall merkt sich zusätzlich den Zustand einer Verbindung.

Vorteil von SPI:

```text
Der Hinweg wird erlaubt.
Der passende Rückweg wird automatisch erkannt.
```

</details>

---

<details>
<summary><strong>49. Was bedeuten INPUT, OUTPUT und FORWARD bei iptables?</strong></summary>

Bei iptables gibt es wichtige Regelketten:

```text
INPUT   = Verkehr zur Firewall selbst
OUTPUT  = Verkehr von der Firewall selbst nach außen
FORWARD = Verkehr durch die Firewall hindurch
```

Beispiele:

```text
INPUT   = SSH-Zugriff auf die Firewall
OUTPUT  = Firewall fragt NTP-Server ab
FORWARD = PC im LAN geht über Firewall ins Internet
```

</details>

---

<details>
<summary><strong>50. Was ist eine DMZ und warum ist sie sinnvoll?</strong></summary>

Eine DMZ ist eine demilitarisierte Zone, also ein separates Zwischennetz.

Dort stehen Server, die von außen erreichbar sein müssen, zum Beispiel:

```text
Webserver
Mailserver
DNS-Server
Reverse Proxy
```

Der Vorteil:

Wenn ein Server in der DMZ angegriffen wird, befindet er sich nicht direkt im internen LAN.

Kurz:

```text
DMZ = Sicherheitszone zwischen Internet und internem Netzwerk
```

</details>

# Portforwarding Trainer

<iframe
  src="https://trainer.ulrich-wiki.com/portforwarding-trainer.html?v=9"
  width="100%"
  height="850"
  style="border:1px solid #444; border-radius:12px;">
</iframe>

# DMZ Firewall Trainer

<p><strong>DMZ-Firewall-Trainer</strong></p>

<div style="width:100%; margin:0 0 16px 0;">
  <iframe
    src="https://trainer.ulrich-wiki.com/dmz-firewall-trainer-wide-v9-grafik-final.html?v=1"
    width="100%"
    height="1250"
    style="display:block; width:100%; min-height:1250px; border:1px solid #444; border-radius:12px; background:#111827;"
    loading="lazy"
    allowfullscreen>
  </iframe>
</div>

<div style="margin:16px 0;">
  <a
    href="https://trainer.ulrich-wiki.com/dmz-firewall-trainer-wide-v9-grafik-final.html?v=1"
    target="_blank"
    rel="noopener"
    style="display:inline-block; padding:12px 18px; background:#2563eb; color:#ffffff; font-weight:bold; text-decoration:none; border-radius:10px; border:1px solid #1d4ed8;">
    DMZ-Firewall-Trainer im Vollbild öffnen
  </a>
</div>

<hr>

<p><strong>Korrektur / wichtige Hinweise</strong></p>

<p>Die externe öffentliche IP-Adresse ist:</p>

<pre>11.1.2.4</pre>

<p><strong>Wichtig zu Regel (7):</strong></p>

<p>
Bei <strong>Regel (7)</strong> darf <strong>nicht</strong> <code>11.1.2.4</code>
als Quell- oder Ziel-IP eingetragen werden.
</p>

<p>Korrekt ist:</p>

<pre>Richtung:     OUTPUT
Protokoll:    UDP
Quell-IP:     192.168.1.1
Ziel-IP:      192.168.1.2
Ziel-Port(s): 123</pre>

<p>
<code>11.1.2.4</code> ist nur die öffentliche/externe Adresse in der Skizze.
Regel (7) beschreibt dagegen:
</p>

<pre>Firewall → Proxy
192.168.1.1 → 192.168.1.2
UDP Port 123</pre>

<p><strong>Korrektur zu „(weitere)”</strong></p>

<p>Bei <strong>(weitere)</strong> ist hier <strong>ping</strong> gemeint.</p>

<pre>(weitere)
ping</pre>

<p>Fachlich gehört ping zu:</p>

<pre>ICMP</pre>

<p>Die passende Regel ist sinngemäß:</p>

<pre>INPUT
ICMP
Quelle: Admin-PC / 192.168.2.2
Ziel: Firewall intern / 192.168.2.1
Ziel-Port: leer, weil ICMP keinen TCP-/UDP-Port verwendet
Kommentar: Admin darf die Firewall anpingen</pre>

<p><strong>Merksatz</strong></p>

<pre>FORWARD = Paket läuft durch die Firewall hindurch.
INPUT   = Paket geht an die Firewall selbst.
OUTPUT  = Paket kommt von der Firewall selbst.</pre>

# NAT(PAT)-Trainer / Source NAT

<iframe
  src="https://trainer.ulrich-wiki.com/nat-pat-trainer.html?v=7"
  width="100%"
  height="1500"
  style="border:1px solid #444; border-radius:12px;">
</iframe>

<div style="margin:16px 0;">
  <a
    href="https://trainer.ulrich-wiki.com/nat-pat-trainer.html?v=7"
    target="_blank"
    rel="noopener"
    style="
      display:inline-block;
      padding:12px 18px;
      background:#2563eb;
      color:white;
      font-weight:bold;
      text-decoration:none;
      border-radius:10px;
      border:1px solid #1d4ed8;
    ">
    NAT/PAT-Trainer im Vollbild öffnen
  </a>
</div>

# TCP-Verbindungsaufbau und TCP-Verbindungsabbau – Trainer

**TCP-Verbindungsaufbau und TCP-Verbindungsabbau – Trainer**

Dieser interaktive Trainer gehört zu den Aufgaben:

```text
Frage 2: TCP-Verbindungsaufbau mit Sequenznummern
Frage 3: TCP-Verbindungsabbau mit Sequenznummern
```

Die Grundlage ist die Klausurübung Netzwerktechnik Schicht 4–7. Dort werden beim TCP-Aufbau und TCP-Abbau die Begriffe `SYN`, `FIN`, `seq`, `ACK`, `x`, `x+1`, `y` und `y+1` verwendet.

---

**Interaktiver TCP-Trainer**

<iframe
  src="https://trainer.ulrich-wiki.com/tcp-verbindung-trainer.html?v=2"
  width="100%"
  height="1250"
  style="border:1px solid #444; border-radius:12px;">
</iframe>

<div style="margin:16px 0;">
  <a
    href="https://trainer.ulrich-wiki.com/tcp-verbindung-trainer.html?v=2"
    target="_blank"
    rel="noopener"
    style="
      display:inline-block;
      padding:12px 18px;
      background:#2563eb;
      color:white;
      font-weight:bold;
      text-decoration:none;
      border-radius:10px;
      border:1px solid #1d4ed8;
    ">
    TCP-Trainer im Vollbild öffnen
  </a>
</div>

---

**Was wird trainiert?**

| Bereich | Bedeutung |
|---|---|
| **SYN** | Startet den TCP-Verbindungsaufbau |
| **SYN ACK** | Server bestätigt SYN und sendet eigene Sequenznummer |
| **ACK** | Bestätigung einer Sequenznummer |
| **FIN** | Beendet eine Richtung der TCP-Verbindung |
| **seq** | Sequenznummer des sendenden Hosts |
| **ACK-Nummer** | Bestätigt die nächste erwartete Sequenznummer |
| **x+1 / y+1** | SYN und FIN verbrauchen jeweils eine Sequenznummer |

---

**Merksatz für den TCP-Verbindungsaufbau**

```text
1. Client → Server: SYN, seq = x
2. Server → Client: SYN + ACK, seq = y, ack = x+1
3. Client → Server: ACK, seq = x+1, ack = y+1
```

Beispiel:

```text
x = 1000
y = 2000

x+1 = 1001
y+1 = 2001
```

---

**Merksatz für den TCP-Verbindungsabbau**

```text
1. Client → Server: FIN, seq = x
2. Server → Client: ACK, ack = x+1
3. Server → Client: FIN, seq = y
4. Client → Server: ACK, ack = y+1
```

Beispiel:

```text
x = 1000
y = 2000

x+1 = 1001
y+1 = 2001
```

---

**Wichtige Regel**

```text
SYN verbraucht eine Sequenznummer.
FIN verbraucht eine Sequenznummer.
Deshalb wird jeweils mit +1 bestätigt.
```

---

**Typische Fehler**

| Fehler | Warum falsch? |
|---|---|
| SYN ohne ACK im zweiten Schritt | Der Server muss das SYN des Clients bestätigen |
| ACK-Zahl nicht +1 | SYN/FIN wurden nicht korrekt bestätigt |
| Pfeilrichtung falsch | Sender und Empfänger werden vertauscht |
| FIN-Abbau nur mit 3 Schritten | Der normale TCP-Abbau wird meist mit 4 Schritten dargestellt |
| seq und ACK verwechselt | seq ist die eigene Nummer, ACK bestätigt die Gegenseite |

---

**Mini-Testfragen**

<details>
<summary><strong>1. Wofür steht SYN?</strong></summary>

`SYN` steht für Synchronisation.

Es wird beim TCP-Verbindungsaufbau verwendet, um Sequenznummern zu synchronisieren.

</details>

<details>
<summary><strong>2. Was passiert beim zweiten Schritt des TCP-Verbindungsaufbaus?</strong></summary>

Der Server antwortet mit:

```text
SYN + ACK
seq = y
ack = x+1
```

Damit bestätigt er das SYN des Clients und sendet seine eigene Sequenznummer.

</details>

<details>
<summary><strong>3. Warum wird aus x die ACK-Nummer x+1?</strong></summary>

Weil SYN eine Sequenznummer verbraucht.

Wenn der Client `seq = x` sendet, erwartet der Server danach `x+1`.

</details>

<details>
<summary><strong>4. Wofür steht FIN?</strong></summary>

`FIN` steht für Finish.

Es wird verwendet, um eine TCP-Verbindung beziehungsweise eine Kommunikationsrichtung zu beenden.

</details>

<details>
<summary><strong>5. Warum wird FIN ebenfalls mit +1 bestätigt?</strong></summary>

Weil FIN ebenfalls eine Sequenznummer verbraucht.

Darum wird ein FIN mit der nächsten erwarteten Nummer bestätigt:

```text
ack = x+1
```

</details>

<details>
<summary><strong>6. Wie viele Schritte hat der TCP-Verbindungsaufbau?</strong></summary>

Der TCP-Verbindungsaufbau hat 3 Schritte.

```text
SYN
SYN + ACK
ACK
```

</details>

<details>
<summary><strong>7. Wie viele Schritte hat der TCP-Verbindungsabbau?</strong></summary>

Der TCP-Verbindungsabbau wird typischerweise mit 4 Schritten dargestellt.

```text
FIN
ACK
FIN
ACK
```

</details>

---

**Nächste sinnvolle Trainer**

Danach könnten folgen:

```text
Firewall-Regel-Trainer
PNAT-Trainer
TCP/UDP/ICMP-Vergleichstrainer
```