Squid-Kit-1: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(37 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
=Installation=
 
=Installation=
*apt install squid
+
;Installiert den Squid Proxy inkl. HTTPS-Unterstützung.
 +
;Ohne SSL-Unterstützung funktioniert SSL-BUMP nicht.
 +
 
 +
{| class="wikitable"
 +
! Distribution !! Befehl
 +
|-
 +
| Debian / Ubuntu || <code>apt install squid-openssl</code>
 +
|-
 +
| Rocky Linux || <code>dnf install squid</code>
 +
|}
 +
 
 +
'''Hinweis:''' Unter Rocky Linux ist SSL-Unterstützung bereits im Standard-Paket enthalten.
 +
 
 
=Erste Schritte=
 
=Erste Schritte=
 
==Configdir==
 
==Configdir==
 +
;Hier liegt die zentrale Konfigurationsdatei squid.conf.
 +
;Alle Anpassungen erfolgen in diesem Verzeichnis.
 
*cd /etc/squid
 
*cd /etc/squid
 +
 
==Default Konfiguration sichern==
 
==Default Konfiguration sichern==
 +
;Sichert die Originalkonfiguration.
 +
;Ermöglicht schnelles Zurücksetzen bei Fehlern.
 
*cp squid.conf squid.conf.org
 
*cp squid.conf squid.conf.org
==Kommentare aus der squid.conf entfernen==
+
 
 +
==Kommentare entfernen==
 +
;Entfernt Kommentare für bessere Übersicht.
 +
;Zeigt nur aktive Konfiguration.
 
*grep "^[^#]" squid.conf.org > squid.conf
 
*grep "^[^#]" squid.conf.org > squid.conf
 +
 
==Bereinigte squid.conf==
 
==Bereinigte squid.conf==
<pre>
+
;Erlaubt allen internen Netzen Zugriff auf den Proxy.
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
+
;Am Ende blockiert "deny all" alles nicht explizit Erlaubte.
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
+
acl localnet src 10.0.0.0/8
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
+
acl localnet src 172.16.0.0/12
acl localnet src fc00::/7       # RFC 4193 local private network range
+
  acl localnet src 192.168.0.0/16
acl localnet src fe80::/10     # RFC 4291 link-local (directly plugged) machines
+
acl localnet src fc00::/7
acl SSL_ports port 443
+
acl localnet src fe80::/10
acl Safe_ports port 80         # http
+
acl Safe_ports port 21         # ftp
+
acl SSL_ports port 443
acl Safe_ports port 443         # https
+
acl Safe_ports port 70         # gopher
+
acl Safe_ports port 80
acl Safe_ports port 210         # wais
+
acl Safe_ports port 21
acl Safe_ports port 1025-65535  # unregistered ports
+
acl Safe_ports port 443
acl Safe_ports port 280         # http-mgmt
+
acl Safe_ports port 70
acl Safe_ports port 488         # gss-http
+
acl Safe_ports port 210
acl Safe_ports port 591         # filemaker
+
acl Safe_ports port 1025-65535
acl Safe_ports port 777         # multiling http
+
  acl Safe_ports port 280
acl CONNECT method CONNECT
+
acl Safe_ports port 488
http_access deny !Safe_ports
+
acl Safe_ports port 591
http_access deny CONNECT !SSL_ports
+
acl Safe_ports port 777
http_access allow localhost manager
+
http_access deny manager
+
acl CONNECT method CONNECT
http_access allow localnet
+
http_access allow localhost
+
http_access deny !Safe_ports
http_access deny all
+
http_access deny CONNECT !SSL_ports
http_port 3128
+
coredump_dir /var/cache/squid
+
http_access allow localhost manager
refresh_pattern ^ftp:          1440    20%    10080
+
http_access deny manager
refresh_pattern ^gopher:        1440    0%      1440
+
refresh_pattern -i (/cgi-bin/|\?) 0    0%      0
+
http_access allow localnet
refresh_pattern .              0      20%    4320
+
http_access allow localhost
</pre>
+
   
==Konfigurationseinstellungen==
+
  http_access deny all
===Grundlegende Direktiven===
+
====Filter anlegen====
 
acl it-dmz src 10.88.113.0/24
 
acl it-lan src 172.16.113.0/24
 
:acl Schlüsselwort
 
:it-dmz Bezeichner (beliebig)
 
:src filterkriterium (es gibt viele)
 
:10.88.113.0/24 Bereich (Variable)
 
====Anwenden der Filter====
 
:http_access Schlüsselwort
 
  http_access allow it-dmz
 
  http_access allow it-lan
 
:allow (erlauben) oder deny (verbieten)
 
 
 
====Port auf Squid lauscht====
 
 
  http_port 3128
 
  http_port 3128
 
====Coredumpdir====
 
 
  coredump_dir /var/cache/squid
 
  coredump_dir /var/cache/squid
:wenn squid abstürzt wird dort ein Abbild geschrieben
+
====Refresh Pattern====
+
refresh_pattern ^ftp:           1440   20%     10080
:Schlüsselwort   Pattern        Min     Prozent Max           
 
 
  refresh_pattern ^gopher:        1440    0%      1440
 
  refresh_pattern ^gopher:        1440    0%      1440
 
  refresh_pattern -i (/cgi-bin/|\?) 0    0%      0
 
  refresh_pattern -i (/cgi-bin/|\?) 0    0%      0
 
  refresh_pattern .              0      20%    4320
 
  refresh_pattern .              0      20%    4320
  
:Hier kann der Refresh-Algorithmus von squid für die eigenen Bedürfnisse optimiert werden.
+
==Grundlegende Schlüsselwörter==
:MIN ist die Zeit in Minuten,die ein Objekt ohne explizite Ablaufzeit als Aktuell betrachtet wird. Der ermpfohlene Wert ist 0, jeder höhere Wert könnte dazu führen, dass dynmaische Anwendungen irrtümlich gecachtt werden, wenn der Webdesigner keine entsprechenden Gegenaktionen getroffen hat.
+
===acl===
:PROZENT ist der Prozentsatz eines Objektalters (Zeit seit der letzten Modifikation) wo ein Objekt ohne explizite Ablaufzeit als aktuell betrachtet wird.
+
;Definiert eine Access Control List (ACL), also einen Filter.
:MAX ist ein oberes Limit wie lange Objekte ohne explizite Ablaufzeiten als aktuell betrachtet werden.
+
;ACLs beschreiben Bedingungen (z. B. Netz, Port, Methode), die später ausgewertet werden.
 
 
=First run=
 
==läuft squid?==
 
*ss -lntp | grep 3128
 
 
 
==starten im Hintergrund==
 
* systemctl start squid
 
==Kontrolle==
 
*tail -f /var/log/squid/access.log
 
1415788926.412  33247 192.168.244.1 TCP_MISS/200 3776 CONNECT aur.archlinux.org:443 - HIER_DIRECT/5.9.250.164 -
 
1415788926.424  33266 192.168.244.1 TCP_MISS/200 3822 CONNECT aur.archlinux.org:443 - HIER_DIRECT/5.9.250.164 -
 
=Authentifizierung erzwingen=
 
  
Zur Vermeidung von ungewollten Zugriffen lässt sich in Squid auch eine Authetifizierung erzwingen
+
===http_access===
 +
;Legt fest, ob eine Anfrage erlaubt oder blockiert wird.
 +
;Die Regeln werden von oben nach unten geprüft – die erste passende Regel gewinnt.
  
==Erstellen einer Passwort Datei==
+
===http_port===
+
;Definiert den Port, auf dem Squid auf eingehende Verbindungen wartet.
*htpasswd -c /etc/squid/passwordfile username
+
;Clients verbinden sich zu diesem Port, um den Proxy zu nutzen.
  
Syntax:
+
===coredump_dir===
*htpasswd: Programmname
+
;Verzeichnis, in dem Speicherabbilder bei Abstürzen abgelegt werden.
*-c: Create new passwordfile, also neue Passwortdatei erstellen
+
;Wird hauptsächlich für Debugging und Fehleranalyse verwendet.
*passwordfile: Passwortdatei mit beliebigem Namen. Auch der Ort kann beliebig gewählt werden
 
*username: Name eines Benutzers (beliebig)
 
  
Nach Bestätigen des Befehls wird htpasswd nach einem Passwort für den Benutzer verlangen. Dies kann ebenfalls beliebig gewählt werden.
+
===refresh_pattern===
 +
;Steuert, wie lange Inhalte im Cache als gültig gelten.
 +
;Ist heute meist weniger relevant, da viele Inhalte dynamisch oder verschlüsselt sind.
 +
[[Refresh Pattern]]
  
==Änderungen an der squid.conf==
+
==Prinzip der ACL==
 +
;Squid arbeitet von oben nach unten – erste passende Regel gewinnt.
 +
;Falsche Reihenfolge führt häufig zu unerwartetem Verhalten.
 +
*Squid arbeitet von oben nach unten – die erste passende Regel gewinnt.
  
Folgende Einträge werden am Anfang der squid.conf eingefügt:
+
{{#drawio:Prinzip der ACL}}
  
<pre>
+
==Konfiguration anpassen (eigene Netze)==
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
+
;Ziel ist es, Zugriff gezielt zu steuern.
auth_param basic children 20 startup=0 idle=1
+
;Die Default-Konfiguration ist zu offen.
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
+
==Neue squid.conf==
 +
;RFC1918 wurde entfernt, damit nicht jeder Zugriff bekommt.
 +
;Nur definierte Netze dürfen den Proxy nutzen.
 +
<span style="color:blue"># acl localnet src 10.0.0.0/8</span>
 +
<span style="color:blue"># acl localnet src 172.16.0.0/12</span>
 +
<span style="color:blue"># acl localnet src 192.168.0.0/16</span>
 +
 +
acl localnet src fc00::/7
 +
acl localnet src fe80::/10
 +
 +
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 CONNECT method CONNECT
 +
<span style="color:red">acl it-dmz src 10.88.213.0/24</span>
 +
<span style="color:red">acl it-lan src 172.26.213.0/24</span>
 +
 +
 +
http_access deny !Safe_ports
 +
http_access deny CONNECT !SSL_ports
 +
 +
http_access allow localhost manager
 +
http_access deny manager
 +
<span style="color:red">http_access allow it-dmz</span>
 +
<span style="color:red">http_access allow it-lan</span>
 +
 +
http_access allow localhost
 +
http_access deny all
 +
http_port 3128
 +
coredump_dir /var/cache/squid
 +
 +
refresh_pattern ^ftp:          1440    20%    10080
 +
refresh_pattern ^gopher:        1440    0%      1440
 +
refresh_pattern -i (/cgi-bin/|\?) 0    0%      0
 +
refresh_pattern .              0      20%    4320
  
http_access allow ncsa_users
+
=First run=
 +
'''Hinweis Rocky Linux:''' Einmalig vor dem ersten Start – Cache initialisieren und Firewall öffnen:
 +
*squid -z
 +
*firewall-cmd --permanent --add-port=3128/tcp
 +
*firewall-cmd --reload
  
</pre>
+
==Handling==
 +
;Restart (Vorsicht dauert eine Zeit)
 +
*systemctl restart squid
 +
;Reload (Besser da schneller)
 +
*systemctl reload squid
 +
;Start
 +
*systemctl start squid
 +
;Stop
 +
*systemctl stop squid
 +
;Enable
 +
*systemctl enable squid
 +
;Disable
 +
*systemctl disable squid
 +
;Status
 +
*systemctl status squid
  
Syntax:
+
==läuft squid?==
*auth_param: Definiert die Parameter für die Authentifizierung
+
;Zeigt ob Squid auf Port 3128 lauscht.
*basic: Teilt squid mit, dass es sich um grundsätzliche Einstellungen handelt, die zur Anwendung kommen wenn keine anderen verfügbar sind. Weitere Optionen siehe squid Manual
+
;Kein Output bedeutet, der Dienst läuft nicht.
*program: Es wird ein externes Programm zur Authentifizierung eingesetzt
+
*ss -lntp | grep 3128
*/usr/lib/squid/basic_ncsa_auth: Hier befindet sich das Programm
 
*/etc/squid/passwd: Dies ist die Passwortdatei
 
*children: Wieviele Authentifikationsprozesse Squid maximal starten soll
 
*concurrency: Wieviele Anfragen gleichzeitig bearbeitet werden dürfen
 
*credentialsttl: Wie lange die Anmeldedaten gültig sein sollen
 
*realm: Name des Bereichs für den der Proxy zuständig ist. Kann beliebig gewählt werden.
 
*casesensitive: Legt fest ob der BENUTZERname case-sensitiv sein soll
 
  
=Beispielkonzept=
+
==Logs==
Bestimmte Rechner dürfen alles alle Anderen dürfen nur auf bestimmte Webseiten.
+
;Fehler können im Journal eingesehen werden.
 +
*journalctl -fu squid
 +
*journalctl -xu squid
  
  acl teamleitung src "/etc/squid/teamleitung.txt"
+
==Proxy eintragen im Firefox==
  acl badsites url_regex  "/etc/squid/badsites.txt"
+
*Burgermenu
 +
**Settings
 +
***Suchen nach Proxy
 +
****Settings
 +
*****Manual Proxy Configuration
 +
  http  proxy: proxy.it2XX.int 3128
 +
  https proxy: proxy.it2XX.int 3128
  
http_access allow teamleitung
+
==Kontrolle==
http_access deny badsites
+
;Zeigt Live-Traffic durch den Proxy.
 +
;Wichtig zum Debuggen und Verständnis.
 +
*tail -f /var/log/squid/access.log
  
*cat teamleitung.txt
+
;TCP_MISS bedeutet kein Cache wurde genutzt.
192.168.244.1
+
;CONNECT zeigt HTTPS-Tunnelverkehr.
192.168.244.71
 
  
*cat connect-from-all.txt
+
==Hinweis==
  bild.de
+
;HTTPS wird nur getunnelt und nicht analysiert.
sex
+
;Caching spielt heute kaum noch eine Rolle.
www.faz.net
+
*HTTPS wird nur getunnelt (CONNECT)
 +
*Caching ist heute meist irrelevant
 +
==Tips für Konsole==
 +
;curl über eine Proxy
 +
*curl --proxy http://proxy.it213.int:3128  https://server.it201.int
 +
;Proxy von Hand setzen
 +
*export http_proxy="http://proxy.it213.int:3128"
 +
*export https_proxy="http://proxy.it213.int:3128"
 +
*curl https://xinux.de
 +
;Der Konsolenbrowser w3m
 +
*sudo apt install w3m
 +
*w3m https://xinux.net

Aktuelle Version vom 9. Juni 2026, 13:19 Uhr

Installation

Installiert den Squid Proxy inkl. HTTPS-Unterstützung.
Ohne SSL-Unterstützung funktioniert SSL-BUMP nicht.
Distribution Befehl
Debian / Ubuntu apt install squid-openssl
Rocky Linux dnf install squid

Hinweis: Unter Rocky Linux ist SSL-Unterstützung bereits im Standard-Paket enthalten.

Erste Schritte

Configdir

Hier liegt die zentrale Konfigurationsdatei squid.conf.
Alle Anpassungen erfolgen in diesem Verzeichnis.
  • cd /etc/squid

Default Konfiguration sichern

Sichert die Originalkonfiguration.
Ermöglicht schnelles Zurücksetzen bei Fehlern.
  • cp squid.conf squid.conf.org

Kommentare entfernen

Entfernt Kommentare für bessere Übersicht.
Zeigt nur aktive Konfiguration.
  • grep "^[^#]" squid.conf.org > squid.conf

Bereinigte squid.conf

Erlaubt allen internen Netzen Zugriff auf den Proxy.
Am Ende blockiert "deny all" alles nicht explizit Erlaubte.
acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/16
acl localnet src fc00::/7
acl localnet src fe80::/10

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 CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost manager
http_access deny manager

http_access allow localnet
http_access allow localhost

http_access deny all

http_port 3128
coredump_dir /var/cache/squid

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

Grundlegende Schlüsselwörter

acl

Definiert eine Access Control List (ACL), also einen Filter.
ACLs beschreiben Bedingungen (z. B. Netz, Port, Methode), die später ausgewertet werden.

http_access

Legt fest, ob eine Anfrage erlaubt oder blockiert wird.
Die Regeln werden von oben nach unten geprüft – die erste passende Regel gewinnt.

http_port

Definiert den Port, auf dem Squid auf eingehende Verbindungen wartet.
Clients verbinden sich zu diesem Port, um den Proxy zu nutzen.

coredump_dir

Verzeichnis, in dem Speicherabbilder bei Abstürzen abgelegt werden.
Wird hauptsächlich für Debugging und Fehleranalyse verwendet.

refresh_pattern

Steuert, wie lange Inhalte im Cache als gültig gelten.
Ist heute meist weniger relevant, da viele Inhalte dynamisch oder verschlüsselt sind.

Refresh Pattern

Prinzip der ACL

Squid arbeitet von oben nach unten – erste passende Regel gewinnt.
Falsche Reihenfolge führt häufig zu unerwartetem Verhalten.
  • Squid arbeitet von oben nach unten – die erste passende Regel gewinnt.

Konfiguration anpassen (eigene Netze)

Ziel ist es, Zugriff gezielt zu steuern.
Die Default-Konfiguration ist zu offen.

Neue squid.conf

RFC1918 wurde entfernt, damit nicht jeder Zugriff bekommt.
Nur definierte Netze dürfen den Proxy nutzen.
# acl localnet src 10.0.0.0/8
# acl localnet src 172.16.0.0/12
# acl localnet src 192.168.0.0/16

acl localnet src fc00::/7
acl localnet src fe80::/10

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 CONNECT method CONNECT
acl it-dmz src 10.88.213.0/24
acl it-lan src 172.26.213.0/24


http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost manager
http_access deny manager
http_access allow it-dmz
http_access allow it-lan

http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/cache/squid

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

First run

Hinweis Rocky Linux: Einmalig vor dem ersten Start – Cache initialisieren und Firewall öffnen:

  • squid -z
  • firewall-cmd --permanent --add-port=3128/tcp
  • firewall-cmd --reload

Handling

Restart (Vorsicht dauert eine Zeit)
  • systemctl restart squid
Reload (Besser da schneller)
  • systemctl reload squid
Start
  • systemctl start squid
Stop
  • systemctl stop squid
Enable
  • systemctl enable squid
Disable
  • systemctl disable squid
Status
  • systemctl status squid

läuft squid?

Zeigt ob Squid auf Port 3128 lauscht.
Kein Output bedeutet, der Dienst läuft nicht.
  • ss -lntp | grep 3128

Logs

Fehler können im Journal eingesehen werden.
  • journalctl -fu squid
  • journalctl -xu squid

Proxy eintragen im Firefox

  • Burgermenu
    • Settings
      • Suchen nach Proxy
        • Settings
          • Manual Proxy Configuration
http  proxy: proxy.it2XX.int 3128
https proxy: proxy.it2XX.int 3128

Kontrolle

Zeigt Live-Traffic durch den Proxy.
Wichtig zum Debuggen und Verständnis.
  • tail -f /var/log/squid/access.log
TCP_MISS bedeutet kein Cache wurde genutzt.
CONNECT zeigt HTTPS-Tunnelverkehr.

Hinweis

HTTPS wird nur getunnelt und nicht analysiert.
Caching spielt heute kaum noch eine Rolle.
  • HTTPS wird nur getunnelt (CONNECT)
  • Caching ist heute meist irrelevant

Tips für Konsole

curl über eine Proxy
Proxy von Hand setzen
Der Konsolenbrowser w3m