Squid unter Debian / Ubuntu Linux
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