Squid https aufbrechen: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
=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
 +
{{#drawio:proxy-4}}
 
=Installation von squid=
 
=Installation von squid=
 
;Wir brauchen eine angepasste Version von squid
 
;Wir brauchen eine angepasste Version von squid
Zeile 4: Zeile 12:
 
*apt install squid-openssl
 
*apt install squid-openssl
 
=Erstellen eines Selbstsignierten Zertifikates=
 
=Erstellen eines Selbstsignierten Zertifikates=
;Variablen setzen und Verzeichnis anlegen
+
;Verzeichnis anlegen
*CERT_D=/etc/squid/certs/
+
*mkdir /etc/squid/certs
*CERT=$CERT_D/squid_proxyCA.pem
+
*cd /etc/squid/certs
*rm -rf $CERT
 
*mkdir -p $CERT_D
 
 
;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 $CERT -out $CERT
+
*openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout squid_proxyCA.pem -out squid_proxyCA.pem
*chown -R proxy:proxy $CERT_D
+
*chown -R proxy:proxy squid_proxyCA.pem
*chmod 0400 $CERT
+
*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
 
;füge das squid_proxyCA-Zertifikat zum System hinzu, damit es standardmäßig vertrauenswürdig ist
*CA_CERT_D=/usr/local/share/ca-certificates
+
*cp squid_proxyCA.crt /usr/local/share/ca-certificates
*rm -rf $CA_CERT_D/*
 
*mkdir -p $CA_CERT_D
 
*openssl x509 -inform PEM -in $CERT -out $CA_CERT_D/squid_proxyCA.crt
 
 
*update-ca-certificates
 
*update-ca-certificates
=Die squid.conf=
 
<pre>
 
acl SSL_ports port 443
 
  
acl Safe_ports port 80          # http
+
=Zertifikat auf den Clients installieren=
acl Safe_ports port 21          # ftp
+
!!!'''Wichtig Wichtig Wichtig'''!!!
acl Safe_ports port 443        # https
+
*squid_proxyCA.crt auf die Clients kopieren.
acl Safe_ports port 1025-65535  # unregistered ports
+
;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
  
acl purge method PURGE
+
    cp squid_proxyCA.crt /usr/local/share/ca-certificates
acl CONNECT method CONNECT
+
    update-ca-certificates
acl lan src 10.0.10.0/24
 
  
http_access allow manager localhost
+
=Zertifikats Cache anlegen=
http_access deny manager
+
;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.
  
http_access allow purge localhost
 
http_access deny purge
 
  
http_access deny !Safe_ports
 
http_access deny CONNECT !SSL_ports
 
  
http_access allow lan
+
*/usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB
http_access allow localhost
+
*chown -R proxy:proxy /var/spool/squid
http_access deny all
 
 
 
http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE
 
ssl_bump bump all
 
 
 
coredump_dir /var/spool/squid
 
logfile_rotate 0
 
 
 
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
 
refresh_pattern .      0  20% 4320
 
 
 
cache_dir ufs /var/spool/squid 200 16 256
 
 
 
</pre>
 
=Restart von Squid=
 
*systemctl restart squid
 
  
 
=Die squid.conf=
 
=Die squid.conf=
Zeile 71: Zeile 63:
 
acl purge method PURGE
 
acl purge method PURGE
 
acl CONNECT method CONNECT
 
acl CONNECT method CONNECT
acl lan src 10.0.10.0/24
+
#Anpassen
 +
acl lan src 192.168.10.0/24
  
 
http_access allow manager localhost
 
http_access allow manager localhost
Zeile 86: Zeile 79:
 
http_access deny all
 
http_access deny all
  
 +
 +
#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,SINGLE_DH_USE,SINGLE_ECDH_USE
 
http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE
 +
#transparenter Zugriff unverschlüsselt
 +
http_port 3129 intercept
 +
#transparenter Zugriff verschlüsselt '''wichtig https_port'''
 +
https_port 3130 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE
 +
 
ssl_bump bump all
 
ssl_bump bump all
  
Zeile 98: Zeile 98:
  
 
</pre>
 
</pre>
 +
 +
=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
 +
=Links=
 +
*https://unix.stackexchange.com/questions/613359/setting-up-squid-transparent-proxy-with-ssl-bumping-on-debian-10
 +
*https://wiki.squid-cache.org/Features/SslBump

Aktuelle Version vom 20. März 2025, 16:55 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
  • 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
   cp squid_proxyCA.crt /usr/local/share/ca-certificates
   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

Die squid.conf

acl SSL_ports port 443

acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 1025-65535  # unregistered ports

acl purge method PURGE
acl CONNECT method CONNECT
#Anpassen
acl lan src 192.168.10.0/24

http_access allow manager localhost
http_access deny manager

http_access allow purge localhost
http_access deny purge

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow lan
http_access allow localhost
http_access deny all


#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,SINGLE_DH_USE,SINGLE_ECDH_USE
#transparenter Zugriff unverschlüsselt
http_port 3129 intercept
#transparenter Zugriff verschlüsselt '''wichtig https_port'''
https_port 3130 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE

ssl_bump bump all

coredump_dir /var/spool/squid
logfile_rotate 0

refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern .       0   20% 4320

cache_dir ufs /var/spool/squid 200 16 256

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

Links