Gestern287
Woche677
Monat1737
Debian
Debian allgemein
Debian - Proxy-Server Squid - Benutzer
Debian - Proxy-Server Squid - Benutzer
Situation
Benutzer/innen des Netzwerkes arbeiten an Workstations und melden sich an Terminalservern an. Die Workstation haben bereits Internetzugang über ihre IP-Adresse.
Ziel
Benutzer/innen, sollen Zugang zum Internet erhalten, unabhängig davon, ob sie den Internetzugang über eine Workstation oder in der Terminalsitzung nutzen wollen. Sie sollen nach Benutzername und Passwort gefragt werden. Es sollen also nicht etwa alle Benutzer/innen des Terminalservers über dessen IP-Adresse Zugang zum Internet erhalten.
Die Kombination verschiedener Funktionen (für alle gesperrte und frei gegebene Webadressen, IP-Adressen von Computern, die Internetverbindung haben, Abfrage von Benutzername und Passwort für Anwender/innen) ist unter Debian Lenny zu sehen.
Ich bedanke mich bei Christian Scholz, dessen Anleitung und Tipps mir geholfen haben.
Verwendet habe ich:
Debian Sarge in der Grundinstallation
+ apache2 Webserver (wegen der Passworteinrichtung)
+ mc (zum Bearbeiten der Dateien)
+ squid
Installation
# apt-get install squid
Eventuell # apt-get install mc
Passwortdatei anlegen
# touch /etc/squid/passwd
Mit touch /etc/squid/passwd wird die Datei angelegt, in der die Passworte gespeichert werden sollen.
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
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 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.
Konfigurationsdatei
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. Einige Zeilenumbrüche habe ich in den Kommentaren wegen der besseren Lesbarkeit/Formatierung eingefügt.
#/etc/squid/squid.conf
#Default:
# http_port 3128
http_port 3128
# Fuer cache_peer einen Proxy eintragen, der gegebenenfalls
# den eigenen Proxy mit dem Internet verbindet.
cache_peer [ip.ad.res.se] parent 8000 0 no-query default
# Wenn squid (z. B. bei etch und lenny) https-Seiten nicht
# anzeigen sollte, dann die naechste Zeile aktivieren.
# never_direct allow all
#
# TAG: hierarchy_stoplist
# A list of words which, if found in a URL, cause the
# object to be handled directly by this cache. In
# other words, use this to not query neighbor caches
# for certain objects. You may list this option
# multiple times.
#We recommend you to use at least the following line.
# Naechste Zeile ist deaktiviert, weil sonst
# zum Beispiel keine Zugriffszaehler funktionieren
#hierarchy_stoplist cgi-bin ?
#
#We recommend you to use the following two lines.
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
#
#
#auth_param basic program <UNCOMMENT AND COMPLETE THIS LINE>
# Naechste Zeile fuer Benutzerauthentifizierung eingefuegt
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
# Naechste Zeile deaktiviert
#auth_param basic realm Squid proxy-caching web server
#Naechste Zeile hinzugefuegt
auth_param basic realm Squid - Proxy Server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
#
#
#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 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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
# zusaetzlich eingetragene Zeilen Anfang
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # swat
acl purge method PURGE
# zusaetzlich eingetragene Zeilen Ende
acl CONNECT method CONNECT
#
# Verweis zu einer Datei, in der Ausdruecke genannt sind
# die in Webadressen gesperrt werden.
# Darin immer nur ein Wort je Zeile eintragen.
acl gesperrt url_regex -i "/etc/squid/gesperrt"
# =======================================================
# Hier die Computer eintragen, die sufen duerfen.
# Ich habe hier die Computernamen und IP-Adressen
# verwendet.
# Das ist noch keine Erlaubnis zum surfen!
# Die wird weiter unten gesondert erteilt!
# Jetzt ist das natuerlich deaktiviert.
# acl computer001 src 192.168.0.1/255.255.255.255 # Hinweis
# acl computer002 src 192.168.0.2/255.255.255.255 # Hinweis
# und so weiter. Als 'Hinweis' kann zum Beispiel der
# Name einer Benutzerin/eines Benutzers oder die
# Zimmernummer eingetragen werden.
# Diese Datei wird von oben nach unten abgearbeitet.
# Deswegen steht die Benutzerauthentifizierung erst hier.
# Hat ein PC mit seiner IP-Adresse keinen Zugriff
# auf das Internet oder arbeitet ein/e Benutzer/in
# über eine Terminalverbindung, wird nach
# Benutzername und Passwort gefragt.
acl AUTHUSERS proxy_auth REQUIRED
# =======================================================
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
#
# We strongly recommend the following be uncommented to
# protect innocent web applications running on the proxy
# server who think the only one who can access services
# on "localhost" is a local user http_access
# deny to_localhost
# =======================================================
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS
# FROM YOUR CLIENTS
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where
# browsing should be allowed
#acl our_networks src 192.168.1.0/24 192.168.2.0/24
#http_access allow our_networks
http_access allow localhost
#
# In diesem Bereich die Erlaubnis zum Surfen erteilen
# und dabei die Kennungen von oben verwenden!
# Die naechste Zeile weist auf eine Datei, mit der
# bestimmte Inhalte gesperrt werden koennen.
# Datei in /etc/squid/gesperrt
# Liste der in der www-Adresse gesperrten Ausdruecke.
# Darin ein Wort je Zeile eintragen
http_access deny gesperrt
#
# Ab hier wird die Erlaubnis zum Surfen gegeben.
# Jetzt ist das naatuerlich deaktiviert.
# http_access allow computer001
# http_access allow computer002
# und so weiter
# Naechste Zeile erlaubt authentifizierten Benutzern
# den Zugriff auf das Internet
http_access allow AUTHUSERS
# =======================================================
# And finally deny all other access to this proxy
http_access deny all
#
# TAG: http_reply_access
#
# and finally allow by default
http_reply_access allow all
#
# TAG: icp_access
#Allow ICP queries from everyone
icp_access allow all
#
# ADMINISTRATIVE PARAMETERS
# -------------------------------------------------------
#
# TAG: cache_mgr
# Email-address of local cache manager who will
# receive mail if the cache dies.
# The default is $quot;webmaster."
# Eine Emailadresse eintragen, die bei
# Fehlermeldungen angezeigt wird.
#Default:
# cache_mgr webmaster - korrekte Adresse eintragen
cache_mgr mailbox[at]domainname.de
#
# MISCELLANEOUS
# -------------------------------------------------------
#
# TAG: dns_testnames
# The DNS tests exit as soon as the first site is
# successfully looked up
#
# This test can be disabled with the -D
# command line option.
#Default:
# dns_testnames netscape.com internic.net
# nlanr.net microsoft.com
#
# TAG: logfile_rotate
#Default:
# logfile_rotate 0
logfile_rotate 5
#
# TAG: never_direct
#Default:
# none
never_direct allow all
#
# TAG: coredump_dir
# By default Squid leaves core files in the directory
# from where it was started. If you set 'coredump_dir'
# to a directory that exists, Squid will chdir() to
# that directory at startup and coredump files will
# be left there.
#
#Default:
# coredump_dir none
#
# Leave coredumps in the first cache dir
coredump_dir /var/cache/squid
#
# TAG: error_directory
# If you wish to create your own versions of the default
# (English) error files, either to customize them to suit
# your language or company copy the template English
# files to another directory and point this tag at them.
#
# Fehlermeldungen des Systems auf Deutsch stellen.
# Die Dateien koennen inhaltlich bearbeitet werden.
#Default:
# error_directory /usr/share/squid/errors/English
error_directory /usr/share/squid/errors/German
#
Ä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.
# /etc/init.d/squid reload
Adressen/Ausdrücke 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.
#/etc/squid/gesperrt
# Liste der in der www-Adresse
# gesperrten Ausdruecke
# ein Wort je Zeile
porno


