Squid-Kit-TLS-CA

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Content Scan

  • Auf dem Client muss das CA Zertifikat des Proxy installiert sein.
  • Proxy generiert für jede Anfrage ein neues Zertifikat und schickt es dem Client.
  • Client denkt er kommuniziert mit dem Original Server
  • Virenscan ist möglich
  • Webserver denkt die Anfrage kommt von einem normalen Client
  • Prinzip der Man in the Middle Attacke

Installation von squid

Wir brauchen eine angepasste Version von squid mit SSL-Unterstützung.
Distribution Befehl
Debian / Ubuntu apt install squid-openssl
Rocky Linux dnf install squid (SSL bereits enthalten)

Erstellen eines Selbstsignierten Zertifikates

Verzeichnis anlegen
  • mkdir /etc/squid/certs
  • cd /etc/squid/certs
Generieren Sie ein lokales selbstsigniertes CA-Zertifikat und geheimen Schlüssel (in derselben Datei)
  • openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout squid_proxyCA.pem -out squid_proxyCA.pem -subj "/CN=proxy-ca"
Benutzer und Rechte setzen
Distribution Proxy-Benutzer
Debian / Ubuntu proxy
Rocky Linux squid
chown -R proxy:proxy squid_proxyCA.pem      # Debian/Ubuntu
chown -R squid:squid squid_proxyCA.pem      # Rocky Linux
chmod 0400 squid_proxyCA.pem
Wir extrahieren das ca.crt aus dem Container
  • openssl x509 -inform PEM -in squid_proxyCA.pem -out squid_proxyCA.crt
CA-Zertifikat systemweit als vertrauenswürdig eintragen
Distribution Zielverzeichnis Befehl
Debian / Ubuntu /usr/local/share/ca-certificates/ update-ca-certificates
Rocky Linux /etc/pki/ca-trust/source/anchors/ update-ca-trust
# Debian/Ubuntu
cp squid_proxyCA.crt /usr/local/share/ca-certificates
update-ca-certificates

# Rocky Linux
cp squid_proxyCA.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust

Zertifikat auf den Clients installieren

!!!Wichtig Wichtig Wichtig!!!

  • squid_proxyCA.crt auf die Clients kopieren.
Firefox
  • Burgermenu
    • Einstellungen
      • Nach Zertifikaten suchen
        • Zertifikate anzeigen
          • Zertifizierungsstellen importieren
Systemweit auf dem Client (Linux)
Distribution Zielverzeichnis Befehl
Debian / Ubuntu /usr/local/share/ca-certificates/ update-ca-certificates
Rocky Linux /etc/pki/ca-trust/source/anchors/ update-ca-trust

Zertifikats Cache anlegen

security_file_certgen — SSL certificate generator for Squid.
  • Das Generieren und Signieren von SSL-Zertifikaten nimmt Zeit in Anspruch.
  • Squid kann diesen Helfer als externen Prozess verwenden, um die Arbeit zu erledigen.
  • Die Kommunikation erfolgt über TCP-Sockets, die an die Loopback-Schnittstelle gebunden sind.
  • Dieser Helfer kann einen Festplattencache mit Zertifikaten verwenden, um die Antwortzeiten bei wiederholten Anforderungen zu verbessern.
  • Es kann auch ohne Cache arbeiten und generiert bei jeder Anfrage neue Zertifikate.
Distribution Befehl
Debian / Ubuntu /usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB
Rocky Linux /usr/lib64/squid/security_file_certgen -c -s /var/cache/squid/ssl_db -M 4MB
# Debian/Ubuntu
chown -R proxy:proxy /var/spool/squid

# Rocky Linux
chown -R squid:squid /var/cache/squid

Hinweis Rocky Linux: SELinux-Kontext setzen:

restorecon -Rv /var/cache/squid/ssl_db
chcon -t squid_conf_t /etc/squid/certs/squid_proxyCA.pem

Einfügen in der squid.conf

unter die http_access rules
Distribution ssl_db Pfad
Debian / Ubuntu /var/spool/squid/ssl_db
Rocky Linux /var/cache/squid/ssl_db
http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1
ssl_bump bump all

Restart von Squid

  • systemctl restart squid

Misc

Hier ist ein Befehl, um die am häufigsten zwischengespeicherten Domänen anzuzeigen.
  • awk 'BEGIN {FS="[ ]+"}; {print $7}' < /var/log/squid/access.log | awk 'BEGIN {FS="/"}; {print $3}' | sort | uniq -c |sort -k1,1nr -k2,2 | head