Gestern287
Woche675
Monat1735
Suse - Proxy-Server Squid
Ziel
Innerhalb eines Netzwerkes soll ein Proxy-Server eingerichtet werden, über den Computer des Netzwerkes mit dem Internet verbunden sind. Zugriff soll für einzelne Computer eingerichtet werden können. Mehr Konfigurationsbeispiele (für alle gesperrte und frei gegebene Webadressen, IP-Adressen von Computern, die Internetverbindung haben, Abfrage von Benutzername und Passwort für Anwender/innen) sind unter Debian, Lenny beschrieben.
Verwendet habe ich:
Suse 9.3, Minimalinstallation
+ mc (zum Bearbeiten der Dateien)
+ squid (der Proxy-Server; mit installiert werden will dann 'slang')
Die Konfigurationsdatei ist: /etc/squid/squid.conf
Installation
Installation über Yast
Konfigurationsdatei
Die Konfigurationsdatei ist: /etc/squid/squid.conf vgl. unter Debian, Debian allgemein, 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 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
#
# 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>
auth_param basic children 5
auth_param basic realm Squid proxy-caching web 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 verwendet.
# Das ist noch keine Erlaubnis zum surfen!
# Die wird weiter unten gesondert erteilt!
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.
# =======================================================
#
# 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
# 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.
http_access allow computer001
http_access allow computer002
# und so weiter
# =======================================================
# 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
#
# 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
# E-Mailadresse entsprechend aendern.
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 deny netzkah
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
#
Adressen/Ausdrücke sperren
Unter /etc/squid ist die Datei 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
Ä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 ist nicht erforderlich und würde zudem auch länger dauern.
Firewall - Port freigeben
Yast starten,
unter 'Sicherheit und Benutzer' den Punkt 'Firewall' auswählen,
unter 'Erlaubte Dienste' bei 'Erweitert' zusätzlich TCP-Port 3128 freigeben (der Port, der in der squid.conf angegeben ist).
Squid starten mit /etc/init.d/squid start
Automatischer Start
Damit das Programm beim Booten automatisch gestartet wird, habe ich in /etc/init.d/boot.local eine Zeile angefügt:
/etc/init.d/squid start
Beim herunterfahren wird es automatisch beendet durch/etc/init.d/halt.local mit dem Eintrag:
/etc/init.d/squid stop


