24 TLS-Interception und TLS-Termination

24.1 Einleitung

TLS-Interception und TLS-Termination sind zwei wichtige Techniken, die in der Netzwerksicherheit verwendet werden, um den Datenverkehr zu kontrollieren und zu sichern. Diese Techniken spielen eine entscheidende Rolle bei der Verwaltung verschlüsselter Verbindungen in Proxy-Servern wie Squid oder Apache.

24.2 TLS-Interception (SSL Bumping)

24.2.1 Definition

TLS-Interception, auch als SSL Bumping bekannt, ist eine Methode, bei der ein Proxy-Server den verschlüsselten Datenverkehr zwischen Client und Server abfängt, entschlüsselt, inspiziert und dann erneut verschlüsselt, bevor er an das ursprüngliche Ziel weitergeleitet wird.

24.2.2 Anwendung

24.2.3 Funktionsweise

  1. Initiale Verbindung: Der Client stellt eine Verbindung zum Proxy-Server her und fordert eine HTTPS-Verbindung an.
  2. Zertifikat-Aushandlung: Der Proxy-Server stellt ein eigenes Zertifikat aus, das an den Client gesendet wird. Der Client akzeptiert das Zertifikat (vorausgesetzt, es wurde zuvor als vertrauenswürdig konfiguriert).
  3. Entschlüsselung: Der Proxy-Server entschlüsselt den eingehenden Datenverkehr, inspiziert den Inhalt und führt Sicherheitsprüfungen durch.
  4. Erneute Verschlüsselung: Nach der Inspektion wird der Datenverkehr erneut verschlüsselt und an den Zielserver weitergeleitet.

24.2.4 Herausforderungen

24.3 TLS-Termination

24.3.1 Definition

TLS-Termination bezeichnet den Prozess, bei dem die TLS-Verschlüsselung am Proxy-Server endet. Der Proxy entschlüsselt den eingehenden Datenverkehr und leitet ihn in unverschlüsselter Form an die Backend-Server weiter.

24.3.2 Anwendung

24.3.3 Funktionsweise

  1. TLS-Handschlag: Der Proxy-Server führt den TLS-Handschlag mit dem Client durch und stellt eine sichere Verbindung her.
  2. Entschlüsselung: Der Proxy-Server entschlüsselt den eingehenden Datenverkehr.
  3. Weiterleitung: Der entschlüsselte Datenverkehr wird in unverschlüsselter Form an die Backend-Server weitergeleitet, die dann die Anfrage bearbeiten und die Antwort zurücksenden.

24.3.4 Herausforderungen

24.4 Beispielkonfiguration für Squid

24.4.1 TLS-Interception (SSL Bumping)

# Beispielkonfiguration für Squid
http_port 3128 ssl-bump cert=/etc/squid/ssl_cert/myCA.pem key=/etc/squid/ssl_cert/myCA.key
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all

24.4.2 TLS-Termination

# Beispielkonfiguration für Apache
<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile "/etc/ssl/certs/server.crt"
    SSLCertificateKeyFile "/etc/ssl/private/server.key"
    ProxyPreserveHost On
    ProxyPass / http://backendserver/
    ProxyPassReverse / http://backendserver/
</VirtualHost>

TLS-Interception und TLS-Termination sind leistungsstarke Techniken zur Verwaltung verschlüsselter Verbindungen in modernen Netzwerken. Während die TLS-Interception eine detaillierte Inspektion und Filterung des Datenverkehrs ermöglicht, bietet die TLS-Termination eine effiziente Möglichkeit, die Last der Verschlüsselung und Entschlüsselung von Backend-Servern zu entlasten. Beide Techniken erfordern jedoch sorgfältige Planung und Implementierung, um die Sicherheit und den Datenschutz zu gewährleisten.

24.5 Forward Proxy mit Self signed Certificate

Ein Forward Proxy mit Squid wird hauptsächlich verwendet, um den Zugriff von Clients auf das Internet zu kontrollieren und zu optimieren.

24.5.1 Schritt-für-Schritt-Anleitung:

  1. Installation von Squid

    sudo apt-get update
    sudo apt-get install squid
  2. Erstellung eines selbstsignierten Zertifikats

    openssl genpkey -algorithm RSA -out /etc/squid/ssl_cert/myCA.key -aes256
    openssl req -new -x509 -days 3650 -key /etc/squid/ssl_cert/myCA.key -out /etc/squid/ssl_cert/myCA.pem
    openssl genpkey -algorithm RSA -out /etc/squid/ssl_cert/squid.key
    openssl req -new -key /etc/squid/ssl_cert/squid.key -out /etc/squid/ssl_cert/squid.csr
    openssl x509 -req -days 3650 -in /etc/squid/ssl_cert/squid.csr -CA /etc/squid/ssl_cert/myCA.pem -CAkey /etc/squid/ssl_cert/myCA.key -CAcreateserial -out /etc/squid/ssl_cert/squid.crt
  3. Konfiguration von Squid für TLS-Interception

    sudo nano /etc/squid/squid.conf

    Fügen Sie die folgenden Zeilen hinzu oder passen Sie sie an:

    http_port 3128 ssl-bump cert=/etc/squid/ssl_cert/squid.crt key=/etc/squid/ssl_cert/squid.key
    https_port 3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/squid.crt key=/etc/squid/ssl_cert/squid.key
    
    acl step1 at_step SslBump1
    ssl_bump peek step1
    ssl_bump bump all
    
    sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 4MB
    sslcrtd_children 5
  4. Initialisieren der SSL-Datenbank

    sudo /usr/lib/squid/security_file_certgen -c -s /var/lib/squid/ssl_db -M 4MB
  5. Neustarten des Squid-Dienstes

    sudo systemctl restart squid
  6. Installieren des CA-Zertifikats auf den Clients

24.6 Reverse Proxy mit Self signed Certificate

Ein Reverse Proxy mit Squid wird verwendet, um den Zugriff von Clients auf interne Server zu steuern, Lastverteilung durchzuführen und Sicherheitsfunktionen hinzuzufügen.

24.6.1 Schritt-für-Schritt-Anleitung:

  1. Installation von Squid

    sudo apt-get update
    sudo apt-get install squid
  2. Erstellung eines selbstsignierten Zertifikats

    openssl genpkey -algorithm RSA -out /etc/squid/ssl_cert/myCA.key -aes256
    openssl req -new -x509 -days 3650 -key /etc/squid/ssl_cert/myCA.key -out /etc/squid/ssl_cert/myCA.pem
    openssl genpkey -algorithm RSA -out /etc/squid/ssl_cert/squid.key
    openssl req -new -key /etc/squid/ssl_cert/squid.key -out /etc/squid/ssl_cert/squid.csr
    openssl x509 -req -days 3650 -in /etc/squid/ssl_cert/squid.csr -CA /etc/squid/ssl_cert/myCA.pem -CAkey /etc/squid/ssl_cert/myCA.key -CAcreateserial -out /etc/squid/ssl_cert/squid.crt
  3. Konfiguration von Squid als Reverse Proxy

    sudo nano /etc/squid/squid.conf

    Fügen Sie die folgenden Zeilen hinzu oder passen Sie sie an:

    https_port 443 accel defaultsite=your.backend.server ssl-bump cert=/etc/squid/ssl_cert/squid.crt key=/etc/squid/ssl_cert/squid.key
    cache_peer your.backend.server parent 80 0 no-query originserver login=PASS
    
    acl step1 at_step SslBump1
    ssl_bump peek step1
    ssl_bump bump all
    
    sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 4MB
    sslcrtd_children 5
  4. Initialisieren der SSL-Datenbank

    sudo /usr/lib/squid/security_file_certgen -c -s /var/lib/squid/ssl_db -M 4MB
  5. Neustarten des Squid-Dienstes

    sudo systemctl restart squid
  6. Installieren des CA-Zertifikats auf den Clients

Diese Anleitungen sollten Ihnen helfen, Squid sowohl als Forward Proxy als auch als Reverse Proxy mit TLS-Interception zu konfigurieren.****