Next:
Impressum
Proxies
1
Impressum
2
Voraussetzungen und Anforderungen für die Teilnahme an der Online-Schulung
2.1
Interaktion und Kameraeinsatz
2.2
Konzeptvermittlung und praktische Anwendung
2.3
Aktives Mitmachen und eigenständiges Lernen
3
Einleitung zur Schulung: Proxy-Server für Linux mit Squid und Apache
3.1
Kursbeschreibung
3.2
Kursinhalt
3.3
Voraussetzungen
3.3.1
Netzwerktechnologie
3.3.2
HTTP/HTTPS
3.3.3
Linux-Kenntnisse
3.4
Ziele
3.4.1
Squid-Proxy
3.4.2
Apache HTTP Server
3.5
Weiterführende Kapitel
4
HTTP und HTTPS Proxy
4.1
Squid
4.1.1
Funktionen:
4.1.2
Andere Protokolle
4.1.3
Alternative Lösungen für andere Protokolle:
4.2
Apache als Alternative
4.2.1
Funktionen von Apache:
5
Einführung in Netzwerke
5.1
Überblick über die Netzwerkschichten
5.2
Schicht 1: Physical Layer (Physische Schicht)
5.2.1
Aufgabe
5.2.2
Wichtige Aspekte
5.3
Schicht 2: Data Link Layer (Sicherungsschicht)
5.3.1
Aufgabe
5.3.2
Wichtige Aspekte
5.4
Schicht 3: Network Layer (Vermittlungsschicht)
5.4.1
Aufgabe
5.4.2
Wichtige Aspekte
5.5
Schicht 4: Transport Layer (Transportschicht)
5.5.1
Aufgabe
5.5.2
Wichtige Aspekte
5.5.3
Sockets
5.6
Schicht 7: Application Layer (Anwendungsschicht)
5.6.1
Aufgabe
5.6.2
Wichtige Aspekte
5.6.3
Betriebssystem und Anwendungen
5.7
Netzwerkschichten-Tabelle
6
HTTP
6.1
Einführung in HTTP
6.2
HTTP-Verbindung
6.3
HTTP-Anfragemethoden
6.4
HTTP-Statuscodes
6.5
HTTP-Header
6.5.1
Beispiele für Request Header:
6.5.2
Gängige Request Header:
6.5.3
Beispiele für Response Header:
6.5.4
Gängige Response Header:
6.6
Query-Parameter
6.7
Path parameter
6.8
HTTP-Cookies
6.8.1
Cookie in einer HTTP-Anfrage:
6.8.2
Setzen eines Cookies in einer HTTP-Antwort:
6.8.3
Löschen eines Cookies:
6.9
Beispiel für ein Request / Response Pair
6.10
HTTPS
6.11
WWW
6.12
BNF
6.12.1
Request
6.12.2
Response
6.13
Specs
7
HTTP und Zeichensatzbasierte Übertragung
7.1
Was bedeutet zeichensatzbasiert?
7.2
Binäre Daten und Zeichensätze
7.3
Übertragung von nicht-zeichensatzbasierten Daten
7.4
Base64-Encoding
7.4.1
Was ist Base64-Encoding?
7.4.2
Funktionsweise des Base64-Encoding
7.4.3
Dekodierung von Base64
7.5
Übertragung von Daten mit HTTP
7.5.1
Zeichensatzbasierte Daten
7.5.2
Nicht-zeichensatzbasierte Daten
7.6
HTTP-Header vs. HTTP-Body
7.6.1
Binäre Daten im HTTP-Body
7.6.2
Beispiele für Binärdaten im HTTP-Body
7.7
HTTP Zeichensatz
7.7.1
Zeichensatz der HTTP-Header
7.7.2
Zeichensatz des HTTP-Body
7.7.3
Zusammenfassung
7.7.4
Beispiel für eine vollständige HTTP-Nachricht
8
Einführung in die Public-Key-Infrastruktur (PKI)
8.1
Verschlüsselung im Allgemeinen
8.1.1
Caesar-Chiffre
8.1.2
Enigma-Maschine
8.2
Kryptographie in der Informationstechnik
8.2.1
XOR-Verschlüsselung
8.2.2
Symmetrische Verschlüsselung
8.3
Asymmetrische Kryptographie
8.3.1
Funktionsweise
8.3.2
Beispiel
8.3.3
RSA
8.3.4
ElGamal
8.3.5
Elliptic Curve Cryptography (ECC)
8.4
Public-Key-Konzepte
8.4.1
Funktionsweise
8.5
Man-in-the-Middle-Angriff
8.5.1
Erklärung
8.5.2
Schutz durch Signaturen
8.6
Zertifizierungsstellen (CAs)
8.6.1
Funktionsweise
8.6.2
Beispiel für ein Zertifikat
9
Proxies und HTTPS
9.1
HTTPS-Verbindungen durch Proxies
9.1.1
Grundlagen von HTTPS
9.1.2
SSL/TLS Handshake
9.1.3
Proxies und HTTPS-Kommunikation
9.1.4
Zertifikatsmanagement
10
TLS-Interception und TLS-Termination
10.1
Einleitung
10.2
TLS-Interception (SSL Bumping)
10.2.1
Definition
10.2.2
Anwendung
10.2.3
Funktionsweise
10.2.4
Herausforderungen
10.3
TLS-Termination
10.3.1
Definition
10.3.2
Anwendung
10.3.3
Funktionsweise
10.3.4
Herausforderungen
10.4
Beispielkonfiguration für Squid
10.4.1
TLS-Interception (SSL Bumping)
10.4.2
TLS-Termination
10.5
Apache TLS
10.5.1
TLS-Interception und -Terminierung
10.5.2
Anforderungen an das Zertifikat
10.5.3
Beispielkonfiguration für Squid
10.5.4
Beispielkonfiguration für Apache
11
Self signed Certificates
11.1
Erstellung des selbstsignierten CA-Zertifikats
11.2
Verwendung des CA-Zertifikats auf den Clients
11.2.1
Windows
11.2.2
macOS
11.2.3
Linux (Debian-basierte Systeme)
11.3
Zusammenfassung
12
Client
12.1
Proxy-Konfiguration auf Clients
12.2
PAC-Dateien
12.3
Authentifizierung
12.4
HTTPS Unterstützung
12.5
Fehlermeldungen und Logs
12.6
Vorteile für Clients
12.7
Problemlösung
13
Einführung in Proxy-Server
13.1
Arten von Proxies
13.1.1
Forward Proxy
13.1.2
Reverse Proxy
13.1.3
Transparent Proxy
13.1.4
Anonymous Proxy
14
Software
14.1
Überblick über verfügbare Proxy-Software
14.1.1
Squid
14.1.2
Apache HTTP Server (mit mod_proxy)
14.1.3
Nginx
14.1.4
HAProxy
14.1.5
Privoxy
14.2
Vergleich: Squid vs. Apache als Proxy
14.2.1
Einsatzgebiete
14.2.2
Performance
14.2.3
Konfiguration und Verwaltung
14.2.4
Sicherheitsaspekte
15
Squid-Konfiguration
15.1
Einrichtung
15.1.1
Installation von Squid auf Linux
15.1.2
Grundlegende Konfigurationen (squid.conf)
15.1.3
Netzwerkeinstellungen
15.2
Testen
15.2.1
Verifizierung der Installation
15.2.2
Basisfunktionalität testen (HTTP, HTTPS)
15.3
Steuern und Kontrollieren
15.3.1
Starten und Stoppen des Squid-Dienstes
15.3.2
Logfiles und deren Auswertung
15.3.3
Monitoring-Tools
15.4
Betrieb von Squid mit Docker
15.4.1
Einrichtung und Konfiguration
15.4.2
Verwaltung des Squid-Prozesses im Docker-Container
15.4.3
Monitoring und Log-Management
15.4.4
Vorteile der Verwendung von Docker für Squid
16
Squid als clientseitiger Cache
16.1
Funktionsweise des Caching
16.1.1
HTTP Header und Caching
16.1.2
Unterschied zwischen clientseitigem und serverseitigem Cache
16.2
Cache-Größe und Speicher-Zuweisung
16.2.1
Konfiguration der Cache-Größe
16.2.2
Optimierung der Speicherzuweisung
16.3
Cache-Hierarchien
16.3.1
Aufbau von Cache-Hierarchien
16.3.2
Interne und externe Caches
16.3.3
Parent- und Sibling-Caches
17
Troubleshooting des Squid Proxy Servers
17.1
Überblick
17.2
Logfiles
17.3
Systembefehle zur Prozessüberwachung
17.4
Detaillierte Prozessanalyse
17.5
Spezifische Tools
17.6
Praktische Tipps für das Troubleshooting
17.7
Zusammenfassung
18
Zugriffskontrolle in Squid Proxy
18.1
Grundlagen der Access Control Lists (ACLs)
18.1.1
Was sind Access Control Lists?
18.1.2
Grundlegende Syntax in der Konfigurationsdatei
18.1.3
Zugriffskontrollregeln
18.2
Erweiterte ACL-Typen
18.2.1
Zeitbasierte ACLs
18.2.2
URL-basierte ACLs
18.2.3
IP-basierte ACLs
18.2.4
Method-basierte ACLs
18.2.5
Benutzerbasierte ACLs
18.3
Kombinierte ACLs
18.3.1
Kombination von Zeit- und IP-basierten ACLs
18.3.2
Kombination von URL- und Method-basierten ACLs
18.4
Nutzung von externen ACLs
18.4.1
Beispiel für eine externe ACL
18.5
Authentifizierung
18.5.1
Methoden der Authentifizierung
18.5.2
Integration und Konfiguration
18.6
Zugriffsbeschränkungen
18.6.1
Blacklists und Whitelists
18.7
Szenarien und Anwendungsfälle
18.7.1
Szenario 1: Zugriffskontrolle basierend auf Benutzergruppen
18.7.2
Szenario 2: Zugriffskontrolle basierend auf Tageszeit
18.7.3
Szenario 3: Zugriffskontrolle basierend auf URL-Inhalten
18.7.4
Szenario 4: Kombination von Zeit- und URL-basierten ACLs
18.7.5
Szenario 5: Zugriffskontrolle basierend auf IP-Adressen
19
Squid und Firewalls
19.1
Application Level Gateway (ALG)
19.1.1
Funktionsweise und Einsatzgebiete
19.1.2
Integration von Squid als ALG
19.2
Authentisierung
19.2.1
Authentisierungsverfahren und deren Konfiguration
19.3
Zugriffsbeschränkungen
19.3.1
Umsetzung und Verwaltung von Zugriffsbeschränkungen
19.3.2
Sicherheitsrichtlinien und deren Durchsetzung
20
Forward Proxy
20.1
Schritt 1: Installation von Squid
20.1.1
Auf Debian-basierten Systemen (z.B. Ubuntu)
20.1.2
Auf Red Hat-basierten Systemen (z.B. CentOS)
20.2
Schritt 2: Grundkonfiguration von Squid
20.2.1
Öffnen Sie die Konfigurationsdatei
20.2.2
Konfigurieren der grundlegenden Einstellungen
20.2.3
Speichern und Schließen der Konfigurationsdatei
20.3
Schritt 3: Starten und Überprüfen des Squid-Dienstes
20.3.1
Starten des Squid-Dienstes
20.3.2
Überprüfen, ob Squid beim Systemstart gestartet wird
20.3.3
Überprüfen des Status des Squid-Dienstes
20.4
Schritt 4: Konfiguration der Client-Geräte
20.4.1
Manuelle Konfiguration auf einem Windows-Client
20.4.2
Manuelle Konfiguration auf einem macOS-Client
20.5
Schritt 5: Testen der Konfiguration
20.5.1
Verwenden von
curl
zum Testen des Proxies
20.5.2
Überprüfen der Log-Dateien
21
Squid als Reverse Proxy
21.1
Einleitung
21.2
Schritt 1: Installation von Squid
21.2.1
Auf Debian-basierten Systemen (z.B. Ubuntu)
21.2.2
Auf Red Hat-basierten Systemen (z.B. CentOS)
21.3
Schritt 2: Grundkonfiguration von Squid
21.3.1
Öffnen Sie die Konfigurationsdatei
21.3.2
Konfigurieren der grundlegenden Einstellungen
21.3.3
SSL/TLS-Konfiguration
21.3.4
Speichern und Schließen der Konfigurationsdatei
21.4
Schritt 3: Starten und Überprüfen des Squid-Dienstes
21.4.1
Starten des Squid-Dienstes
21.4.2
Überprüfen, ob Squid beim Systemstart gestartet wird
21.4.3
Überprüfen des Status des Squid-Dienstes
21.5
Schritt 4: Testen der Konfiguration
21.5.1
Testen mit einem Webbrowser
21.5.2
Überprüfen der Log-Dateien
21.6
Zusammenfassung
22
Konfigurationsparameter
22.1
Allgemeine Konfigurationsparameter
22.1.1
Zugriffskontrolle und Sicherheit
22.2
Protokollierung und Überwachung
22.3
Leistung und Optimierung
22.4
Auswahl
22.5
Allgemeine Konfigurationsparameter
22.6
Zugriffskontrolle und Sicherheit
22.7
Protokollierung und Überwachung
22.8
Leistung und Optimierung
23
Direktiven
24
TLS-Interception und TLS-Termination
24.1
Einleitung
24.2
TLS-Interception (SSL Bumping)
24.2.1
Definition
24.2.2
Anwendung
24.2.3
Funktionsweise
24.2.4
Herausforderungen
24.3
TLS-Termination
24.3.1
Definition
24.3.2
Anwendung
24.3.3
Funktionsweise
24.3.4
Herausforderungen
24.4
Beispielkonfiguration für Squid
24.4.1
TLS-Interception (SSL Bumping)
24.4.2
TLS-Termination
24.5
Forward Proxy mit Self signed Certificate
24.5.1
Schritt-für-Schritt-Anleitung:
24.6
Reverse Proxy mit Self signed Certificate
24.6.1
Schritt-für-Schritt-Anleitung:
25
TLS Tunneling
25.1
Beispielkonfiguration für TLS-Tunneling
25.2
SSL Bump für HTTPS-Entschlüsselung
25.3
Zusammenfassung
26
Transparent Proxy
27
Anonymous Proxy
27.1
Hyper Anonymizer
27.2
Test Setup
27.2.1
Erreichbarkeit
27.2.2
Erreichbarkeit einschränken
28
Autoconfig
28.1
Proxy Auto-Config (PAC) Dateien
28.1.1
Beispiel einer PAC-Datei:
28.1.2
Schritte zur Implementierung einer PAC-Datei:
28.2
Web Proxy Auto-Discovery Protocol (WPAD)
28.2.1
WPAD über DHCP:
28.2.2
WPAD über DNS:
28.3
Beispiel eines WPAD-DNS-Eintrags:
28.4
Zusammenfassung
29
Logging in Squid
29.1
Wichtige Logging-Direktiven
29.1.1
Direktiven in absteigender Reihenfolge ihrer Bedeutung und Häufigkeit der Anwendung:
29.2
Wichtige Log-Dateien
29.3
Log-Format
29.3.1
Beispiel eines Standard-Log-Eintrags:
29.4
Cache Status Codes
30
Einführung in den Apache HTTP Server
30.1
Allgemeine Beschreibung
30.1.1
Hauptmerkmale von Apache
30.2
Konfiguration des Apache Webservers
30.2.1
Grundlegende Konfigurationsparameter
30.3
Virtual Hosts
30.3.1
Arten von Virtual Hosts
30.3.2
Konfiguration von Name-based Virtual Hosts
31
Apache als HTTP-Proxy
31.1
Proxy-Infrastruktur
31.1.1
Überblick und Einsatzmöglichkeiten
31.1.2
Unterschiede zu Squid
32
Allgemeine Konfigurationsparameter
32.0.1
Leistung und Optimierung
32.0.2
Sicherheit
32.0.3
Protokollierung und Überwachung
32.0.4
Erweiterte Konfiguration
33
Apache als Forward Proxy mit SSL/TLS-Interception und Lastverteilung
33.1
Schritt-für-Schritt-Anleitung
33.1.1
Installation des Apache-HTTP-Servers
33.1.2
Aktivieren der notwendigen Module
33.1.3
Konfiguration des Forward Proxy
33.1.4
Konfiguration der Proxy-Module (mod_proxy, mod_ssl)
33.1.5
Lastverteilung und Failover
33.1.6
Sicherheitsaspekte und Hardening
33.1.7
Erstellung eines selbstsignierten Zertifikats
33.1.8
Konfiguration von Apache für TLS-Interception
33.1.9
Initialisieren und Verwalten der SSL-Datenbank
33.1.10
Neustarten des Apache-Dienstes
33.1.11
Installieren des CA-Zertifikats auf den Clients
33.2
Testen der Konfiguration
33.2.1
Verwenden von
curl
zum Testen des Proxies
33.2.2
Überprüfen der Log-Dateien
34
Apache als Reverse Proxy mit SSL/TLS-Interception und Lastverteilung
34.1
Einrichtung von Apache als Reverse Proxy
34.1.1
Installation des Apache-HTTP-Servers
34.1.2
Aktivieren der notwendigen Module
34.2
Konfiguration des Reverse Proxy
34.3
Reverse Proxy mit SSL/TLS-Termination
34.3.1
SSL-Zertifikat erstellen und installieren
34.3.2
Erstellen und Bearbeiten der SSL-Konfigurationsdatei
34.3.3
Aktivieren der SSL-Site und Neustarten von Apache
34.4
Lastverteilung und Load Balancing
34.5
Sicherheitsaspekte und Hardening
34.5.1
SSL/TLS-Termination und Sicherheitsrichtlinien
34.5.2
Beispielkonfiguration für Sicherheitsrichtlinien:
34.6
TLS-Interception (SSL-Bumping)
34.6.1
Erstellung eines selbstsignierten Zertifikats
34.6.2
Konfiguration von Apache für TLS-Interception
34.7
Neustarten des Apache-Dienstes
34.8
Installieren des CA-Zertifikats auf den Clients
34.9
Testen der Konfiguration
34.9.1
Verwenden von
curl
zum Testen des Proxies
34.9.2
Überprüfen der Log-Dateien
34.10
Zusammenfassung
35
Apache style ACL
35.1
Grundlagen der Zugriffskontrolle mit Apache als Forward Proxy
35.1.1
mod_proxy
35.1.2
mod_authz_host
35.1.3
mod_authz_core
35.2
Konfiguration der ACLs in der Apache-Konfigurationsdatei
35.2.1
Beispielkonfigurationen
35.3
Zusammenfassung
36
Überprüfung der Sicherheit durch Angriffsversuche
36.1
Was sind Angriffsversuche?
36.2
Vorgehensweise bei Angriffsversuchen
36.2.1
1. Informationssammlung
36.2.2
2. Schwachstellenanalyse
36.2.3
3. Exploitation
36.2.4
4. Post-Exploitation
36.2.5
5. Berichterstellung und Gegenmaßnahmen
36.3
Praktische Übungen zur Überprüfung der Sicherheit
36.3.1
Übung 1: Netzwerk-Scanning
36.3.2
Übung 2: Schwachstellen-Scan
36.3.3
Übung 3: Exploitation mit Metasploit
36.3.4
Übung 4: Post-Exploitation
36.3.5
Übung 5: Berichterstellung
37
Logfile Analysis
37.1
Calamaris
37.1.1
Hauptfunktionen und Leistungen
37.2
Vergleichbare Tools
38
Wichtige Ressourcen und Dokumentationen zu Squid und Apache Proxy Servern
38.1
Squid Proxy Server
38.1.1
Offizielle Dokumentation und Ressourcen
38.1.2
Bücher und weiterführende Literatur
38.1.3
Tutorials und Anleitungen
38.1.4
RFC-Dokumente
38.2
Apache HTTP Server als Reverse und Forward Proxy
38.2.1
Offizielle Dokumentation und Ressourcen
38.2.2
Tutorials und Anleitungen
38.2.3
Community-Ressourcen