Squid-Kit-2: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Content Scan=
+
=Beispielkonzept=
*Auf dem Client muss das CA Zertifikat des Proxy installiert sein.
+
Bestimmte Rechner dürfen alles alle Anderen dürfen nur auf bestimmte Webseiten.
*Proxy generiert für jede Anfrage ein neues Zertifikat und schickt es dem Client.
+
;Diese Rechner dürfen alles
*Client denkt er kommuniziert mit dem Original Server
+
*vi /etc/squid/teamleitung.txt
*Virenscan ist möglich
+
  172.17.113.24 
*Webserver denkt die Anfrage kommt von einem normalen Client
+
  172.17.113.33
*Prinzip der Man in the Middle Attacke
+
  172.17.113.49 
{{#drawio:proxy-4}}
+
;Der Rest bekommt Einschränkungen welche Seite sie aufrufen dürfen.
=Installation von squid=
+
*vi /etc/squid/badsites.txt
;Wir brauchen eine angepasste Version von squid
+
bild.de
;Diese können wir selbst komplilieren oder das squid-openssl Paket von nutzen
+
sex
*apt install squid-openssl
+
www.faz.net
=Erstellen eines Selbstsignierten Zertifikates=
+
;In die squid.conf kommen nun die acls
;Verzeichnis anlegen
+
acl teamleitung src "/etc/squid/teamleitung.txt"
*mkdir /etc/squid/certs
+
acl badsites url_regex  "/etc/squid/badsites.txt"
*cd /etc/squid/certs
+
;Anwenden der acls
;Generieren Sie ein lokales selbstsigniertes CA-Zertifikat und geheimen Schlüssel (in derselben Datei))
+
http_access allow teamleitung
*openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout squid_proxyCA.pem -out squid_proxyCA.pem -subj "/CN=proxy-ca"
+
http_access deny badsites
*chown -R proxy:proxy squid_proxyCA.pem
+
http_access allow it-dmz
*chmod 0400 squid_proxyCA.pem
+
http_access allow it-lan
;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=
+
=Authentifizierung=
!!!'''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
+
Zur Vermeidung von ungewollten Zugriffen lässt sich in Squid auch eine Authetifizierung erzwingen
    update-ca-certificates
+
=Installation von htpasswd
 +
* apt install apache2-utils
 +
==Erstellen einer Passwort Datei==
 +
 +
*htpasswd -c /etc/squid/password martha
 +
*htpasswd  /etc/squid/password leroy
  
=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.
 
  
 +
{| class="wikitable"
 +
! Option !! Bedeutung
 +
|-
 +
| <code>htpasswd</code> || Programmname (zum Verwalten von HTTP-Authentifizierungsdateien)
 +
|-
 +
| <code>-c</code> || Erstellt eine neue Passwortdatei (nur beim ersten Mal verwenden!)
 +
|-
 +
| <code>passwordfile</code> || Beliebiger Dateiname und Speicherort für die Passwortdatei
 +
|-
 +
| <code>username</code> || Beliebiger Benutzername, der eingetragen werden soll
 +
|}
  
 +
==Änderungen an der squid.conf==
  
*/usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB
+
Folgende Einträge werden am Anfang der squid.conf eingefügt:
*chown -R proxy:proxy /var/spool/squid
 
  
=Einfügen in der  squid.conf=
+
<pre>
;unter die http_access rules
+
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/password
#nativer Zugriff
+
auth_param basic children 20 startup=0 idle=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,SINGLE_DH_USE,SINGLE_ECDH_USE
+
auth_param basic concurrency 0
#transparenter Zugriff unverschlüsselt
+
auth_param basic credentialsttl 500 seconds
ssl_bump bump all
+
auth_param basic realm xinux proxy server
 +
auth_param basic casesensitive off
 +
acl ncsa_users proxy_auth REQUIRED
 +
http_access allow ncsa_users
 +
</pre>
 +
{| class="wikitable"
 +
! Option || Bedeutung
 +
|-
 +
| <code>auth_param</code> || Definiert die Parameter für die Authentifizierung
 +
|-
 +
| <code>basic</code> || Grundsätzliche Einstellungen, die verwendet werden, wenn keine anderen definiert sind (siehe Squid-Manual für weitere Optionen)
 +
|-
 +
| <code>program</code> || Externes Programm, das zur Authentifizierung verwendet wird
 +
|-
 +
| <code>/usr/lib/squid/basic_ncsa_auth</code> || Pfad zum Authentifizierungsprogramm
 +
|-
 +
| <code>/etc/squid/passwd</code> || Passwortdatei mit Benutzern und verschlüsselten Passwörtern
 +
|-
 +
| <code>children</code> || Anzahl der maximalen Authentifizierungsprozesse, die Squid starten darf
 +
|-
 +
| <code>concurrency</code> || Gibt an, wie viele Anfragen gleichzeitig verarbeitet werden können
 +
|-
 +
| <code>credentialsttl</code> || Legt fest, wie lange Anmeldedaten im Cache gültig sind (z. B. 2 Stunden)
 +
|-
 +
| <code>realm</code> || Beschreibung oder Name des Authentifizierungsbereichs (wird dem Benutzer angezeigt)
 +
|-
 +
| <code>casesensitive</code> || Legt fest, ob Benutzernamen groß-/kleinschreibungssensitiv behandelt werden
 +
|}
  
=Restart von Squid=
+
=Time=
*systemctl restart squid
+
*Um eine Website zu einer gewissen Zeit freizugeben, benutzt man "time"
=Misc=
+
==erstellen der acl==
;Hier ist ein Befehl, um die am häufigsten zwischengespeicherten Domänen anzuzeigen.
+
<pre>
*awk 'BEGIN {FS="[ ]+"}; {print $7}' < /var/log/squid/access.log | awk 'BEGIN {FS="/"}; {print $3}' | sort | uniq -c |sort -k1,1nr -k2,2 | head
+
acl break-time time 12:00-13:00
=Firewall Regeln für den Transparenten Proxy=
+
</pre>
{{#drawio:proxy-2}}
+
==erstellen der http_access==
*iptables -t nat -A PREROUTING -j REDIRECT -s 192.168.10.0/24 -p tcp --dport 80 --to-port 3129
+
<pre>
*iptables -t nat -A PREROUTING -j REDIRECT -s 192.168.10.0/24 -p tcp --dport 443 --to-port 3130
+
http_access allow bad-sites break-time
 
+
</pre>
=Links=
+
*In diesem Beispiel werden die bad-sites um 12:00-13:00 freigeschaltet
*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 1. Juli 2025, 08:52 Uhr

Beispielkonzept

Bestimmte Rechner dürfen alles alle Anderen dürfen nur auf bestimmte Webseiten.

Diese Rechner dürfen alles
  • vi /etc/squid/teamleitung.txt
 172.17.113.24  
 172.17.113.33
 172.17.113.49  
Der Rest bekommt Einschränkungen welche Seite sie aufrufen dürfen.
  • vi /etc/squid/badsites.txt
bild.de
sex
www.faz.net
In die squid.conf kommen nun die acls
acl teamleitung src "/etc/squid/teamleitung.txt"
acl badsites url_regex  "/etc/squid/badsites.txt"
Anwenden der acls
http_access allow teamleitung
http_access deny badsites
http_access allow it-dmz
http_access allow it-lan

Authentifizierung

Zur Vermeidung von ungewollten Zugriffen lässt sich in Squid auch eine Authetifizierung erzwingen =Installation von htpasswd

  • apt install apache2-utils

Erstellen einer Passwort Datei

  • htpasswd -c /etc/squid/password martha
  • htpasswd /etc/squid/password leroy


Option Bedeutung
htpasswd Programmname (zum Verwalten von HTTP-Authentifizierungsdateien)
-c Erstellt eine neue Passwortdatei (nur beim ersten Mal verwenden!)
passwordfile Beliebiger Dateiname und Speicherort für die Passwortdatei
username Beliebiger Benutzername, der eingetragen werden soll

Änderungen an der squid.conf

Folgende Einträge werden am Anfang der squid.conf eingefügt:

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/password
auth_param basic children 20 startup=0 idle=1
auth_param basic concurrency 0
auth_param basic credentialsttl 500 seconds
auth_param basic realm xinux proxy server
auth_param basic casesensitive off
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
Option Bedeutung
auth_param Definiert die Parameter für die Authentifizierung
basic Grundsätzliche Einstellungen, die verwendet werden, wenn keine anderen definiert sind (siehe Squid-Manual für weitere Optionen)
program Externes Programm, das zur Authentifizierung verwendet wird
/usr/lib/squid/basic_ncsa_auth Pfad zum Authentifizierungsprogramm
/etc/squid/passwd Passwortdatei mit Benutzern und verschlüsselten Passwörtern
children Anzahl der maximalen Authentifizierungsprozesse, die Squid starten darf
concurrency Gibt an, wie viele Anfragen gleichzeitig verarbeitet werden können
credentialsttl Legt fest, wie lange Anmeldedaten im Cache gültig sind (z. B. 2 Stunden)
realm Beschreibung oder Name des Authentifizierungsbereichs (wird dem Benutzer angezeigt)
casesensitive Legt fest, ob Benutzernamen groß-/kleinschreibungssensitiv behandelt werden

Time

  • Um eine Website zu einer gewissen Zeit freizugeben, benutzt man "time"

erstellen der acl

acl break-time time 12:00-13:00

erstellen der http_access

http_access allow bad-sites break-time
  • In diesem Beispiel werden die bad-sites um 12:00-13:00 freigeschaltet