Squid-Kit-TLS-CA: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 7: Zeile 7:
 
*Prinzip der Man in the Middle Attacke
 
*Prinzip der Man in the Middle Attacke
 
{{#drawio:proxy-4}}
 
{{#drawio:proxy-4}}
 
 
=Installation von squid=
 
=Installation von squid=
;Wir brauchen eine angepasste Version von squid mit SSL-Unterstützung.
+
;Wir brauchen eine angepasste Version von squid
 
+
;Diese können wir selbst komplilieren oder das squid-openssl Paket von nutzen
{| class="wikitable"
+
*apt install squid-openssl
! Distribution !! Befehl
 
|-
 
| Debian / Ubuntu || <code>apt install squid-openssl</code>
 
|-
 
| Rocky Linux || <code>dnf install squid</code> (SSL bereits enthalten)
 
|}
 
 
 
 
=Erstellen eines Selbstsignierten Zertifikates=
 
=Erstellen eines Selbstsignierten Zertifikates=
 
;Verzeichnis anlegen
 
;Verzeichnis anlegen
 
*mkdir /etc/squid/certs
 
*mkdir /etc/squid/certs
 
*cd /etc/squid/certs
 
*cd /etc/squid/certs
 
+
;Generieren Sie ein lokales selbstsigniertes CA-Zertifikat und geheimen Schlüssel (in derselben Datei))
;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"
 
*openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout squid_proxyCA.pem -out squid_proxyCA.pem -subj "/CN=proxy-ca"
 
+
*chown -R proxy:proxy squid_proxyCA.pem
;Benutzer und Rechte setzen
+
*chmod 0400 squid_proxyCA.pem
 
 
{| class="wikitable"
 
! Distribution !! Proxy-Benutzer
 
|-
 
| Debian / Ubuntu || <code>proxy</code>
 
|-
 
| Rocky Linux || <code>squid</code>
 
|}
 
 
 
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
 
;Wir extrahieren das ca.crt aus dem Container
 
*openssl x509 -inform PEM -in squid_proxyCA.pem -out squid_proxyCA.crt
 
*openssl x509 -inform PEM -in squid_proxyCA.pem -out squid_proxyCA.crt
 
+
;füge das squid_proxyCA-Zertifikat zum System hinzu, damit es standardmäßig vertrauenswürdig ist
;CA-Zertifikat systemweit als vertrauenswürdig eintragen
+
*cp squid_proxyCA.crt /usr/local/share/ca-certificates
 
+
*update-ca-certificates
{| class="wikitable"
 
! Distribution !! Zielverzeichnis !! Befehl
 
|-
 
| Debian / Ubuntu || <code>/usr/local/share/ca-certificates/</code> || <code>update-ca-certificates</code>
 
|-
 
| Rocky Linux || <code>/etc/pki/ca-trust/source/anchors/</code> || <code>update-ca-trust</code>
 
|}
 
 
 
# 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=
 
=Zertifikat auf den Clients installieren=
 
!!!'''Wichtig Wichtig Wichtig'''!!!
 
!!!'''Wichtig Wichtig Wichtig'''!!!
 
*squid_proxyCA.crt auf die Clients kopieren.
 
*squid_proxyCA.crt auf die Clients kopieren.
 
 
;Firefox
 
;Firefox
 
*Burgermenu
 
*Burgermenu
Zeile 72: Zeile 34:
 
****Zertifikate anzeigen
 
****Zertifikate anzeigen
 
*****Zertifizierungsstellen importieren
 
*****Zertifizierungsstellen importieren
 +
;füge das squid_proxyCA-Zertifikat zum System hinzu, damit es standardmäßig vertrauenswürdig ist
  
;Systemweit auf dem Client (Linux)
+
*sudo cp squid_proxyCA.crt /usr/local/share/ca-certificates
 
+
*sudo update-ca-certificates
{| class="wikitable"
 
! Distribution !! Zielverzeichnis !! Befehl
 
|-
 
| Debian / Ubuntu || <code>/usr/local/share/ca-certificates/</code> || <code>update-ca-certificates</code>
 
|-
 
| Rocky Linux || <code>/etc/pki/ca-trust/source/anchors/</code> || <code>update-ca-trust</code>
 
|}
 
  
 
=Zertifikats Cache anlegen=
 
=Zertifikats Cache anlegen=
Zeile 91: Zeile 47:
 
*Es kann auch ohne Cache arbeiten und generiert bei jeder Anfrage neue Zertifikate.
 
*Es kann auch ohne Cache arbeiten und generiert bei jeder Anfrage neue Zertifikate.
  
{| class="wikitable"
 
! Distribution !! Befehl
 
|-
 
| Debian / Ubuntu || <code>/usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB</code>
 
|-
 
| Rocky Linux || <code>/usr/lib64/squid/security_file_certgen -c -s /var/cache/squid/ssl_db -M 4MB</code>
 
|}
 
 
# Debian/Ubuntu
 
chown -R proxy:proxy /var/spool/squid
 
 
# Rocky Linux
 
chown -R squid:squid /var/cache/squid
 
 
'''Hinweis Rocky Linux:''' SELinux-Kontext setzen:
 
<pre>
 
restorecon -Rv /var/cache/squid/ssl_db
 
chcon -t squid_conf_t /etc/squid/certs/squid_proxyCA.pem
 
</pre>
 
  
=Einfügen in der squid.conf=
 
;unter die http_access rules
 
  
{| class="wikitable"
+
*/usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB
! Distribution !! ssl_db Pfad
+
*chown -R proxy:proxy /var/spool/squid
|-
 
| Debian / Ubuntu || <code>/var/spool/squid/ssl_db</code>
 
|-
 
| Rocky Linux || <code>/var/cache/squid/ssl_db</code>
 
|}
 
  
 +
=Einfügen in der  squid.conf=
 +
;unter die  http_access rules
 +
#nativer Zugriff
 
  http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1
 
  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
 
  ssl_bump bump all
Zeile 127: Zeile 60:
 
=Restart von Squid=
 
=Restart von Squid=
 
*systemctl restart squid
 
*systemctl restart squid
 
 
=Misc=
 
=Misc=
;Hier ist ein Befehl, um die am häufigsten zwischengespeicherten Domänen anzuzeigen.
+
;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
 
*awk 'BEGIN {FS="[ ]+"}; {print $7}' < /var/log/squid/access.log | awk 'BEGIN {FS="/"}; {print $3}' | sort | uniq -c |sort -k1,1nr -k2,2 | head

Version vom 28. April 2026, 10:03 Uhr

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
Diese können wir selbst komplilieren oder das squid-openssl Paket von nutzen
  • apt install squid-openssl

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"
  • chown -R proxy:proxy squid_proxyCA.pem
  • 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
füge das squid_proxyCA-Zertifikat zum System hinzu, damit es standardmäßig vertrauenswürdig ist
  • cp squid_proxyCA.crt /usr/local/share/ca-certificates
  • update-ca-certificates

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
füge das squid_proxyCA-Zertifikat zum System hinzu, damit es standardmäßig vertrauenswürdig ist
  • sudo cp squid_proxyCA.crt /usr/local/share/ca-certificates
  • sudo update-ca-certificates

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.


  • /usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB
  • chown -R proxy:proxy /var/spool/squid

Einfügen in der squid.conf

unter die http_access rules
#nativer Zugriff
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