Squid-Kit-1: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 
=Installation=
 
=Installation=
*apt install squid-openssl
 
 
;Installiert den Squid Proxy inkl. HTTPS-Unterstützung.
 
;Installiert den Squid Proxy inkl. HTTPS-Unterstützung.
 
;Ohne SSL-Unterstützung funktioniert CONNECT nicht korrekt.
 
;Ohne SSL-Unterstützung funktioniert CONNECT nicht korrekt.
 +
*apt install squid-openssl
  
 
=Erste Schritte=
 
=Erste Schritte=
 
==Configdir==
 
==Configdir==
*cd /etc/squid
 
 
;Hier liegt die zentrale Konfigurationsdatei squid.conf.
 
;Hier liegt die zentrale Konfigurationsdatei squid.conf.
 
;Alle Anpassungen erfolgen in diesem Verzeichnis.
 
;Alle Anpassungen erfolgen in diesem Verzeichnis.
 +
*cd /etc/squid
  
 
==Default Konfiguration sichern==
 
==Default Konfiguration sichern==
*cp squid.conf squid.conf.org
 
 
;Sichert die Originalkonfiguration.
 
;Sichert die Originalkonfiguration.
 
;Ermöglicht schnelles Zurücksetzen bei Fehlern.
 
;Ermöglicht schnelles Zurücksetzen bei Fehlern.
 +
*cp squid.conf squid.conf.org
  
 
==Kommentare entfernen==
 
==Kommentare entfernen==
*grep "^[^#]" squid.conf.org > squid.conf
 
 
;Entfernt Kommentare für bessere Übersicht.
 
;Entfernt Kommentare für bessere Übersicht.
 
;Zeigt nur aktive Konfiguration.
 
;Zeigt nur aktive Konfiguration.
 +
*grep "^[^#]" squid.conf.org > squid.conf
  
 
==Bereinigte squid.conf==
 
==Bereinigte squid.conf==
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
 
 
 
;Erlaubt allen internen Netzen Zugriff auf den Proxy.
 
;Erlaubt allen internen Netzen Zugriff auf den Proxy.
 
;Am Ende blockiert "deny all" alles nicht explizit Erlaubte.
 
;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
  
 
==Prinzip der ACL==
 
==Prinzip der ACL==
*Squid arbeitet von oben nach unten – erste passende Regel gewinnt.
+
;Squid arbeitet von oben nach unten – erste passende Regel gewinnt.
 
;Falsche Reihenfolge führt häufig zu unerwartetem Verhalten.
 
;Falsche Reihenfolge führt häufig zu unerwartetem Verhalten.
;Debugging beginnt fast immer hier.
+
*Squid arbeitet von oben nach unten – die erste passende Regel gewinnt.
  
 
{{#drawio:Prinzip der ACL}}
 
{{#drawio:Prinzip der ACL}}
Zeile 76: Zeile 75:
  
 
==Neue squid.conf==
 
==Neue squid.conf==
<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
 
 
<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>
 
 
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
 
 
<span style="color:blue"># http_access allow localnet</span>
 
 
<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
 
 
 
;RFC1918 wurde entfernt, damit nicht jeder Zugriff bekommt.
 
;RFC1918 wurde entfernt, damit nicht jeder Zugriff bekommt.
 
;Nur definierte Netze dürfen den Proxy nutzen.
 
;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
 +
|
 +
| <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>
 +
|
 +
| 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
 +
|
 +
| <span style="color:blue"># http_access allow localnet</span>
 +
|
 +
| <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
  
 
==First run==
 
==First run==
 
==läuft squid?==
 
==läuft squid?==
 +
;Zeigt ob Squid auf Port 3128 lauscht.
 +
;Kein Output bedeutet, der Dienst läuft nicht.
 
*ss -lntp | grep 3128
 
*ss -lntp | grep 3128
;Zeigt ob Squid auf Port 3128 lauscht.
 
;Kein Output = Dienst läuft nicht.
 
  
 
==starten==
 
==starten==
 +
;Startet den Proxy-Dienst.
 +
;Fehler können im Journal eingesehen werden.
 
*systemctl start squid
 
*systemctl start squid
;Startet den Proxy-Dienst.
 
;Fehler stehen im Journal.
 
  
 
==Kontrolle==
 
==Kontrolle==
 +
;Zeigt Live-Traffic durch den Proxy.
 +
;Wichtig zum Debuggen und Verständnis.
 
*tail -f /var/log/squid/access.log
 
*tail -f /var/log/squid/access.log
;Zeigt Live-Traffic durch den Proxy.
 
;Wichtig zum Debuggen.
 
  
 
;TCP_MISS bedeutet kein Cache wurde genutzt.
 
;TCP_MISS bedeutet kein Cache wurde genutzt.
Zeile 147: Zeile 145:
  
 
==Hinweis==
 
==Hinweis==
 +
;HTTPS wird nur getunnelt und nicht analysiert.
 +
;Caching spielt heute kaum noch eine Rolle.
 
*HTTPS wird nur getunnelt (CONNECT)
 
*HTTPS wird nur getunnelt (CONNECT)
 
*Caching ist heute meist irrelevant
 
*Caching ist heute meist irrelevant
;Für Inhaltsanalyse wäre SSL-Bump nötig.
 
;In der Praxis dient Squid oft nur als Access-Proxy.
 

Version vom 2. April 2026, 12:53 Uhr

Installation

Installiert den Squid Proxy inkl. HTTPS-Unterstützung.
Ohne SSL-Unterstützung funktioniert CONNECT nicht korrekt.
  • apt install squid-openssl

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

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

läuft squid?

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

starten

Startet den Proxy-Dienst.
Fehler können im Journal eingesehen werden.
  • systemctl start squid

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