Ziele
- Bestimmte Benutzer/innen, sollen über Benutzername und Passwort Zugang zum Internet erhalten.
- Bestimmte Ausdrücke in Webadressen oder Suchbegriffen sollen gesperrt werden.
- Bestimmte Computer sollen auf Grund Ihrer IP-Adresse einen Internetzgang erhalten.
- Bestimmte Webadressen sollen ohne Benutzername und Passwort aufgerufen werden können.
- Bestimmte Webadressen sollen nicht aufgerufen werden können.
Dass die Benutzer/innen sich manuell am Proxy authentifizieren müssen, ist kein Nachteil, wenn man beachtet, dass im Alltag viele Inhalt in E-Mails externe Inhalte nach laden wollen. Mir gefällt das nicht. So kann ich immer entscheiden, ob ich zulasse, dass weitere Daten geladen werden.
Verwendet habe ich:
Debian Lenny der Grundinstallation
+ apache2 Webserver - wegen der Passworteinrichtung; es genügt auch, 'apache2-utils' zu installieren
+ mc (zum Bearbeiten der Dateien)
+ squid
Installation
# apt-get install squid
# apt-get install mc
Passwortdatei anlegen
In dieser Datei sollen die Passworte gespeichert werden.
# touch /etc/squid/passwd
Berechtigungen für die Passwortdatei einstellen
# chmod 644 /etc/squid/passwd
Durch chmod 644 /etc/squid/passwd werden die Berechtigungen eingestellt. Mit 644 klappte es in meiner Testumgebung nicht. Die Passwortabfrage erschien zwar, aber die Eingabe blieb ohne Wirkung. Hilfsweise kann man es auch mit weniger strengen Berechtigungen versuchen.
root wird Eigentümer der Passwortdatei
# chown root:root /etc/squid/passwd
Benutzer und Passwörter anlegen/Zugang einrichten
In der Konsole als root htpasswd /etc/squid/passwd benutzername eingeben, wobei 'benutzername' für den betreffenden Benutzernamen steht. Danach gibt man zwei Mal das Passwort für die/den Benutzer/in ein.
# htpasswd /etc/squid/passwd benutzername
Wenn ein neuer Zugang eingerichtet oder ein Zugang entfernt wurde, muss die Konfiguration von Squid nicht neu eingelesen (das wäre /etc/init.d/squid/reload) werden. Die Zugangsdaten werden vom System abgefragt, wenn der Zugang zum Internet angefordert wird.
Benutzer/inne/n den Zugang wieder entziehen
Um einen eingerichteten Zugang wieder zu entfernen, genügt es, die entsprechende Zeile aus /etc/squid/passwd zu entfernen.
Webadressen sperren oder freigeben
Es müssen zwei Dateien angelegt werden. Sie enthalten die Namen der freigegebenen bzw. gesperrten Websites. In der jeweiligen Datei wird für jede Webadresse eine neue Zeile verwendet. Als Einträge sind möglich: IP-Adresse, Webadressen ohne und mit vorangestelltem www - je nach Adresse eben.
Beispiele für Inhalte von /etc/squid/bad_domains oder /etc/squid/good_domains: IP-Adressen oder Internetadressen.
123.123.123.123
domainname.de
www.domainname.de
Eingaben:
# touch /etc/squid/bad_domains
# touch /etc/squid/good_domains
# chmod 640 /etc/squid/bad_domains
# chmod 640 /etc/squid/good_domains
Ausdrücke/Suchworte sperren
Unter /etc/squid ist die Datei mit names gesperrt gespeichert. Sie enthält je Zeile ein Wort, das in WWW-Adressen nicht vorkommen darf. Adressen, die das Wort oder Wortteile enthalten, werden nicht angezeigt.
# touch /etc/squid/gesperrt
Inhalt
#/etc/squid/gesperrt
# Liste der in der www-Adresse
# gesperrten Ausdruecke
# ein Wort je Zeile
porno
Konfigurationsdatei /etc/squid/squid.conf
Die Konfigurationsdatei ist: /etc/squid/squid.conf vgl. unter Suse, Proxy-Server Squid
Hier die angepasste Datei. Die meisten Kommentarzeilen habe ich weggelassen, so dass beinahe nur aktivierte Einstellungen sichtbar sind. Erläuterungen sind in dieser Datei hinterlegt.
# WELCOME TO SQUID 2.6.STABLE5
# ----------------------------
# Die meisten Kommenttarzeilen und nicht aktivierte Kommandos
# habe ich entfernt.
# IP-Adressen sind durch 123.123.123.123, 123.123.123.124
# und so weiter dargestellt.
#
# TAG: http_port
# Squid normally listens to port 3128
http_port 3128
# Dieser Proxy holt die Daten ueber einen weiteren Proxy.
# Aendern Sie die Daten entsprechend.
cache_peer 123.123.123.123 parent 3128 0 no-query default
#We recommend you to use at least the following line.
# In naechster Zeile Kommentarzeichen gesetzt.
#hierarchy_stoplist cgi-bin ?
#We recommend you to use the following two lines.
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
# Apache mod_gzip and mod_deflate known to be broken so don't trust
# Apache to signal ETag correctly on such responses
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
# Logformat geaendert. Erste Zeile der Vorgabe wurde angepasst,
# damit Datum und Uhrzeit aufgezeichnet werden.
logformat squid %tl.%03tu %6tr %>a %Ss/%03Hs %
access_log /var/log/squid/access.log squid
#Recommended minimum configuration per scheme:
#auth_param negotiate program
#auth_param negotiate children 5
#auth_param negotiate keep_alive on
#auth_param ntlm program
#auth_param ntlm children 5
#auth_param ntlm keep_alive on
#auth_param digest program
#auth_param digest children 5
#auth_param digest realm Squid proxy-caching web server
#auth_param digest nonce_garbage_interval 5 minutes
#auth_param digest nonce_max_duration 30 minutes
#auth_param digest nonce_max_count 50
#auth_param basic program
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
auth_param basic realm Squid - Proxy Server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
#Suggested default:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
#
# Naechste Zeile - gesperrte Ausdruecke
acl gesperrt url_regex -i "/etc/squid/gesperrt"
# Naechste Zeile - gesperrte Domains
acl bad_domains dstdom_regex -i "/etc/squid/bad_domains"
# Naechste Zeile - zugelassene Domains
acl good_domains dstdom_regex -i "/etc/squid/good_domains"
# Naechste Zeilen - Definition der Zugriffe
# Liste mit Computernamen und deren IP-Adresse Anfang
acl computer001 src 123.123.123.123/255.255.255.255 # Hinweistext
acl computer001 src 123.123.123.124/255.255.255.255 # Hinweistext
# Liste mit Computernamen und deren IP-Adresse Ende
# Naechste Zeile - Aktivieren der Benutzerauthentifizierung
acl AUTHUSERS proxy_auth REQUIRED
#Recommended minimum configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Only allow purge requests from localhost
http_access allow purge localhost
http_access deny purge
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
http_access allow localhost
#
# Kennungen von oben verwenden
# Naechste Zeile - Liste gesperrter Ausdruecke anwenden
http_access deny gesperrt
# Naechste Zeile - Liste gesperrter Domains anwenden
http_access deny bad_domains
# Naechste Zeile - Liste zugelassener Domains anwenden
http_access allow good_domains
# Naechste Zeilen - Anwendung der Definitionen von oben
http_access allow computer001
http_access allow computer002
# Naechste Zeile - Zulassen der authentifizierten Benutzer
http_access allow AUTHUSERS
# And finally deny all other access to this proxy
http_access deny all
# Insert your own rules here.
#
#
# and finally allow by default
http_reply_access allow all
#Allow ICP queries from everyone
icp_access allow all
# ADMINISTRATIVE PARAMETERS
# cache_mgr webmaster
# E-Mailadresse des Webmasters, die bei Problemen angezeigt
# wird. Darin natuerlich das '-at-' durch '@' ersetzen
cache_mgr email-at-domainname.de
# TAG: cache_effective_group
cache_effective_group proxy
# TAG: never_direct
#Default:
# none
never_direct allow all
# TAG: coredump_dir
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
Änderungen wirksam werden lassen
Wenn in /etc/squid/squid.conf die Berechtigungen geändert wurden, werden diese aktiviert mit /etc/init.d/squid reload. Ein Neustart mit /etc/init.d/squid restart ist nicht erforderlich und würde zudem auch länger dauern. Dier Verbindungen der Clientcomputer würden unterbrochen.
# /etc/init.d/squid reload

