Squid-Kit-TLS-CA Debian: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 28: | Zeile 28: | ||
=Zertifikat zur Verfügung stellen= | =Zertifikat zur Verfügung stellen= | ||
==Möglichkeit I.== | |||
*cp squid_proxyCA.crt /tmp | *cp squid_proxyCA.crt /tmp | ||
*cd /tmp/ | *cd /tmp/ | ||
*python3 -m http.server | *python3 -m http.server | ||
;Zertifikate ziehen vom Client | |||
*wget http://proxy.it2XX.int:8000/squid_proxyCA.crt | |||
==Möglichkeit II.== | |||
*scp squid_proxyCA.crt kit@172.26.2XX.10: | |||
=Zertifikat auf den Clients installieren= | =Zertifikat auf den Clients installieren= | ||
==Debian== | |||
!!!'''Wichtig Wichtig Wichtig'''!!! | !!!'''Wichtig Wichtig Wichtig'''!!! | ||
;Firefox | ;Firefox | ||
*Burgermenu | *Burgermenu | ||
| Zeile 47: | Zeile 51: | ||
*sudo cp squid_proxyCA.crt /usr/local/share/ca-certificates | *sudo cp squid_proxyCA.crt /usr/local/share/ca-certificates | ||
*sudo update-ca-certificates | *sudo update-ca-certificates | ||
==Rocky== | |||
*sudo cp squid_proxyCA.crt /etc/pki/ca-trust/source/anchors/ | |||
*sudo update-ca-trust extract | |||
=Zertifikats Cache anlegen= | =Wir sind wieder auf dem Proxy - Zertifikats Cache anlegen= | ||
;security_file_certgen — SSL certificate generator for Squid. | ;security_file_certgen — SSL certificate generator for Squid. | ||
*Das Generieren und Signieren von SSL-Zertifikaten nimmt Zeit in Anspruch. | *Das Generieren und Signieren von SSL-Zertifikaten nimmt Zeit in Anspruch. | ||
| Zeile 61: | Zeile 68: | ||
*chown -R proxy:proxy /var/spool/squid | *chown -R proxy:proxy /var/spool/squid | ||
=Einfügen in der | =Einfügen in der squid.conf= | ||
; | *cd /etc/squid | ||
*mv squid.conf squid.conf.org | |||
http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1 | *nano /etc/squid/squid.conf | ||
ssl_bump bump all | acl SSL_ports port 443 | ||
acl Safe_ports port 80 | |||
acl Safe_ports port 21 | |||
acl Safe_ports port 443 | |||
acl Safe_ports port 70 | |||
acl Safe_ports port 210 | |||
acl Safe_ports port 1025-65535 | |||
acl Safe_ports port 280 | |||
acl Safe_ports port 488 | |||
acl Safe_ports port 591 | |||
acl Safe_ports port 777 | |||
'''<span style="color:red;">acl it2XX src 10.88.2XX.0/24</span>''' | |||
'''<span style="color:red;">acl it2XX src 172.26.2XX.0/24</span>''' | |||
'''<span style="color:red;">acl it2XX src 10.2XX.1.0/24</span>''' | |||
'''<span style="color:red;">http_access allow it2XX</span>''' | |||
http_access deny !Safe_ports | |||
http_access deny CONNECT !SSL_ports | |||
http_access allow localhost manager | |||
http_access deny manager | |||
http_access allow localhost | |||
http_access deny to_localhost | |||
http_access deny all | |||
'''<span style="color:red;">http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1</span>''' | |||
'''<span style="color:red;">ssl_bump bump all</span>''' | |||
coredump_dir /var/spool/squid | |||
refresh_pattern ^ftp: 1440 20% 10080 | |||
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 | |||
refresh_pattern . 0 20% 4320 | |||
=Restart von Squid= | =Restart von Squid= | ||
*systemctl restart squid | *systemctl restart squid | ||
=Kontrolle= | |||
*ss -lntp | grep 3128 | |||
=Wenn wir auf der Firewall sind muss der Port 3128 noch freigeschaltet= | |||
;Wir erweitern die Zugriffsrechte aus den lokalen Netzwerk in der INPUT Kette | |||
ct state new iif $DMZDEV ip saddr $DMZ tcp dport '''<span style="color:red;">{ 22, 3128 } </span>''' accept | |||
ct state new iif $LANDEV ip saddr $LAN tcp dport '''<span style="color:red;">{ 22, 3128 } </span>''' accept | |||
ct state new iif $SERVERDEV ip saddr $SERVER tcp dport '''<span style="color:red;">{ 22, 3128 } </span>''' accept | |||
;Neueinlesen der Regeln | |||
*nft -f /etc/nftables.conf | |||
=Wieder auf dem Client= | |||
;Zertcheck I. | |||
Mit dem Browser auf https://xinux.net und Zertifikat und Herausgeber angucken | |||
;Proxy im Browser konfigurieren | |||
*Burgermenu | |||
**Settings | |||
***Find Settings: Proxy | |||
*****Manual proxy configuration | |||
******HTTP Proxy: fw.it2XX.int Port: 3128 | |||
******HTTPS Proxy: fw.it2XX.int Port: 3128 | |||
;Zertcheck II. | |||
Mit dem Browser auf https://xinux.net und Zertifikat und Herausgeber angucken | |||
=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 | ||
Aktuelle Version vom 29. September 2026, 12:04 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 einer Zertifizierungstelle
- 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 zur Verfügung stellen
Möglichkeit I.
- cp squid_proxyCA.crt /tmp
- cd /tmp/
- python3 -m http.server
- Zertifikate ziehen vom Client
Möglichkeit II.
- scp squid_proxyCA.crt kit@172.26.2XX.10:
Zertifikat auf den Clients installieren
Debian
!!!Wichtig Wichtig Wichtig!!!
- Firefox
- Burgermenu
- Einstellungen
- Nach Zertifikaten suchen
- Zertifikate anzeigen
- Zertifizierungsstellen importieren
- Zertifikate anzeigen
- Nach Zertifikaten suchen
- Einstellungen
- 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
Rocky
- sudo cp squid_proxyCA.crt /etc/pki/ca-trust/source/anchors/
- sudo update-ca-trust extract
Wir sind wieder auf dem Proxy - 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
- cd /etc/squid
- mv squid.conf squid.conf.org
- nano /etc/squid/squid.conf
acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 acl Safe_ports port 70 acl Safe_ports port 210 acl Safe_ports port 1025-65535 acl Safe_ports port 280 acl Safe_ports port 488 acl Safe_ports port 591 acl Safe_ports port 777 acl it2XX src 10.88.2XX.0/24 acl it2XX src 172.26.2XX.0/24 acl it2XX src 10.2XX.1.0/24 http_access allow it2XX http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access allow localhost http_access deny to_localhost 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 ssl_bump bump all coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
Restart von Squid
- systemctl restart squid
Kontrolle
- ss -lntp | grep 3128
Wenn wir auf der Firewall sind muss der Port 3128 noch freigeschaltet
- Wir erweitern die Zugriffsrechte aus den lokalen Netzwerk in der INPUT Kette
ct state new iif $DMZDEV ip saddr $DMZ tcp dport { 22, 3128 } accept ct state new iif $LANDEV ip saddr $LAN tcp dport { 22, 3128 } accept ct state new iif $SERVERDEV ip saddr $SERVER tcp dport { 22, 3128 } accept
- Neueinlesen der Regeln
- nft -f /etc/nftables.conf
Wieder auf dem Client
- Zertcheck I.
Mit dem Browser auf https://xinux.net und Zertifikat und Herausgeber angucken
- Proxy im Browser konfigurieren
- Burgermenu
- Settings
- Find Settings: Proxy
- Manual proxy configuration
- HTTP Proxy: fw.it2XX.int Port: 3128
- HTTPS Proxy: fw.it2XX.int Port: 3128
- Manual proxy configuration
- Find Settings: Proxy
- Settings
- Zertcheck II.
Mit dem Browser auf https://xinux.net und Zertifikat und Herausgeber angucken
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
