Squid unter Debian / Ubuntu Linux

Aus Laub-Home Wiki

Hier eine kurze Anleitung wie man unter Debian bzw. Ubuntu Linux einen Squid Proxy Server installiert und konfiguriert.

Installation

Die Installation des Squid, hier in Version 3 geht recht einfach über das Repository:

aptitude install squid3

Konfigurationsbeispiele

Squid von Any nach Any und alle Ports

Features:

  • Zugriff von allen IPs erlaubt
  • Zugriff auf alle Ports erlaubt
  • Logformat für awstats Auswertung (Mehr Infos hier)
  • Eigene Hosts Datei um DNS Einträge zu manipulieren
  • Memory Cache 64MB
  • IPv6 aus
  • Proxy Port 3128
  • Cache Dir cache_dir ufs /var/spool/squid3 100 16 256 (100 MB DiskCache, 16 L1 Directories, 256 L2 Directories)

/etc/squid3/squid.conf

#acl all src all
#acl manager proto cache_object
#acl localhost src 127.0.0.1/32 ::1
#acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
#acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl purge method PURGE
follow_x_forwarded_for allow all
acl_uses_indirect_client on
delay_pool_uses_indirect_client on
log_uses_indirect_client on
#http_access allow manager localhost
#http_access deny manager
#http_access allow purge localhost
http_access deny purge
http_access allow CONNECT all
#http_access allow localhost
http_access allow all
http_reply_access allow all
icp_access allow all
http_reply_access allow all
icp_access allow all
htcp_clr_access allow all
miss_access allow all
ident_lookup_access allow all
http_port 0.0.0.0:3128
cache_mem 64 MB
cache_dir ufs /var/spool/squid3 100 16 256
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /var/log/squid3/access.log combined
emulate_httpd_log on
hosts_file /etc/squid3/hosts

Squid von Any auf Manipulierte DNS Einträge via HTTP, HTTPS

Features:

  • Zugriff von allen IPs erlaubt
  • Zugriff nur auf HTTP und HTTPs auf bestimmte IP
  • Logformat für awstats Auswertung (Mehr Infos hier)
  • Eigene Hosts Datei um DNS Einträge zu manipulieren
  • IPv6 aus
  • Squid Proxy Port 80
  • Memory Cache 256MB
  • Cache Dir cache_dir ufs /var/spool/squid3 500 16 256 (100 MB DiskCache, 16 L1 Directories, 256 L2 Directories)

/etc/squid3/squid.conf

#acl localhost src 127.0.0.1/32 ::1
#acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl to_allowed_subnet dst 222.22.222.64/27
#acl Safe_ports port 21                # ftp
#acl Safe_ports port 70                # gopher
#acl Safe_ports port 210               # wais
#acl Safe_ports port 1025-65535        # unregistered ports
#acl Safe_ports port 280               # http-mgmt
#acl Safe_ports port 488               # gss-http
#acl Safe_ports port 591               # filemaker
#acl Safe_ports port 777               # multiling http
# Nur Zugriff Auf bestimmtes NETZ
http_access deny !to_allowed_subnet
#http_access deny all
http_access allow all
http_port 0.0.0.0:80
cache_mem 256 MB
cache_dir ufs /var/spool/squid3 500 16 256
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /var/log/squid3/access.log combined
emulate_httpd_log on
hosts_file /etc/squid3/hosts

Squid Zugriff mittels Proxy Authentifizierung

Will man den Zugriff auf den Proxy mittels Benutzername und Passwort schützen, so sollte man zuerst die apache2-utils nachinstallieren um eine Basic Auth Passwort Datei zu erstellen.:

aptitude install apache2-utils

Nun kann man eine Passwort Datei mit dem ersten User anlegen:

htpasswd -c /etc/squid3/squid_passwd benutzer1

weitere User werden wie folgt angelegt:

htpasswd /etc/squid3/squid_passwd benutzer2
htpasswd /etc/squid3/squid_passwd benutzer3

Nun noch eine ACL für den Zugriff erstellen: /etc/squid3/squid.conf

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/squid_passwd

# Proxy Auth ACL
acl ncsa_users proxy_auth REQUIRED

# Zugriff für BASIC AUTH Benutzer
http_access allow ncsa_users

# And finally deny all other access to this proxy
http_access deny all
#http_access allow all

Erhöhte Sicherheit mit Digest Authentication

Die gerade gezeigte Methode benutzt die Basic Authentication. Da hierbei das Passwort mehr oder weniger im Klartext per HTTP Header übertragen wird ist diese Methode nicht zu empfehlen, wenn vom Internet auf den Proxy zugegriffen wird. Statt dessen sollte die Digest Authentication genutzt werden. Zuerst erstellen wir hierbei auch eine Passwort-Datei:

htdigest -c /etc/squid3/htdigest_user "Squid Digest Access" username

weitere User werden wie folgt angelegt:

htdigest /etc/squid3/htdigest_user "Squid Digest Access" username

Die Squid-Konfiguration ist ähnlich wie die der BasicAuth:

auth_param digest program /usr/lib/squid3/digest_pw_auth -c /etc/squid3/htdigest_user
auth_param digest children 5
auth_param digest realm "Squid Digest Access"

# Proxy Auth ACL
acl proxy_user proxy_auth REQUIRED

# Zugriff für DigestAuth Benutzer
http_access allow proxy_user

# Alle anderen Zugriffe blockieren
http_access deny all

Besonders wichtig ist bei der Definition des Authentifizierungs-Programmes die Option "-c". Standardmäßig geht digest_pw_auth nämlich davon aus, dass das Passwort in der Passwort-Datei im Klartext vorliegt, mit "-c" wird jedoch wie bei der BasicAuth ein Hash erwartet. Mit children wird angegeben, wie viele Authentifizierungs-Prozesse gestartet werden sollen. Diese Zahl sollte gemäß der Anzahl der User angepasst werden.

Aktivierung der Änderungen

Den Squid kann man wie folgt neu starten um die Änderungen zu aktivieren:

service squid3 restart

Die wichtigsten Logfiles zum debiggen sind diese:

  • /var/log/squid3/access.log
  • /var/log/squid3/cache.log

Weitere Dokus