Inhalt:
Config Apache
Config Samba
Config Squid
Apache ist in der Unix-Welt der meistgebrauchte Webserver. Apache ist sehr viel kleiner als der Microsoft IIS oder die Netscape Server Fasttrack und Enterprise. Trotzdem ist Apache leicht erweiterbar durch CGI-Skripte mit Perl und dynamische Webseiten mit PHP. Letzteres ermöglicht den Datenbankzugriff mit SQL oder ODBC. Apache verfügt sogar über ein Proxy-Modul, das leider keinen eigenen Dialler mitbringt. Apache wird konfiguriert mit Eintragungen in der Datei conf\httpd.conf, ein Web-Interface ist nicht nötig.
Apache ist Freeware und wird betreut von der Open-Source-Gruppe Apache.org. Die von uns benutzte Version ist 1.3.12 und kommt als selbstentpackende Exe-Datei, (bei Linux falls nötig mit YAST Installieren --> Paketauskunft)die nach dem Start das Programm einrichtet und die notwendigen Eintragungen im Startmenu des Rechners macht. Danach kann man Apache von Hand starten oder als Service installieren. Ggf. sind noch einige Änderungen in httpd.conf vorzunehmen und Apache neu zu starten, dann kann mit einem Browser auf dem Server und dem Url "http://localhost" ein erster Test stattfinden. Die Einstellungen, die am MPG verwendet werden, kann man dem folgenden Text entnehmen:
So könnte z. B. eine "httpd.conf" Aussehen
Nach der Installation von Apache sind in der Datei apache/conf/httpd.conf eine Anzahl Eintragungen vorzunehmen. Der folgende Text dokumentiert die am MPG verwendeten Einstellungen. Mit "#" gekennzeichnete Zeilen sind aus der Original-httpd.conf übernommene Kommentare, mit "->" gekennzeichnete Zeilen enthalten Parameter, die an den entsprechenden Stellen in httpd.conf gesetzt werden können oder müssen. Wichtig: Analog zur Unix-welt sind in allen Pfaden die "\" durch "/" zu ersetzen! ### Section 1: Global Environment In welchem Verzeichnispfad ist Apache installiert? ->ServerRoot "d:/apache" Hier sind die Pfade zu srm.conf und access.conf anzugeben. Da empfohlen wird, diese Dateien leer zu lassen und stattdessen die Informationen in httpd.conf zu schreiben, kann man diese Dateien gleich als zu ignorierende kennzeichnen: ->ResourceConfig nul ->AccessConfig nul Zeit in Sekunden, bis der Server Timeout an den Browser schickt. Wichtig, falls man länger laufende CGI-Skripte benutzen will. ->Timeout 300 Es folgt eine Liste der zu ladenden Module. Was geladen werden soll, muss auskommentiert werden. Wichtig ist, die vorgegebene Reihenfolge einzuhalten. Hier wird nur das Modul geladen, das Apache als Proxy-Server arbeiten lässt. Beim Browser ist dann als Port des Proxy-Servers 8080 einzutragen und um den Proxy-Betrieb zu aktivieren, |
Jetzt kann man den Zugriff auf ein Verzeichnis regeln, indem man in diesem Verzeichnis eine Datei .htaccess anlegt. Z.B. soll das Verzeichnis nur für bestimmte Benutzer erreichbar sein, die sich mit Benutzername und Kennwort ausweisen müssen.Die .htacces in diesem Verzeichnis sieht so aus:
AuthName "lycos" AuthType Basic AuthUserFile d:/server/apache/bin/sicher require valid-user require user netware |
Zunächst wird ein Bereichsname für die Benutzerauthentifizierung festgelegt. Verlangt der Benutzer innerhalb einer Browsersitzung mehrere Dateien mit dem selben AuthName, dann wird er vom Browser nur beim ersten Mal nach Username und Kennwort gefragt. Als AuthType wird derzeit von Apache nur "Basic" unterstützt. AuthUserFile legt eine Datei fest, in der die zulässigen Benutzer oder Gruppen definiert werden. Require legt schließlich fest, welche Benutzer oder Gruppen authorisiert sind.
Die Datei AuthUserFile wird an der Kommandozeile mit dem Programm htpasswd.exe im Verzeichnis apache/bin erzeuugt:
htpasswd -c sicher netware
Dabei wird ein erster Benutzer
eingetragen, dessen Passwort anschließend interaktiv erfragt wird.
Wenn die Datei schon existiert, kann ein neuer Benutzer eingetragen bzw. sein
Passwort geändert werden:
htpasswd -b sicher netware passwort
Bei Samba handelt es sich um ein Paket von Programmen für Unix und ähnliche Betriebssysteme, insbesondere Linux, das die Funktionalität eines Microsoft LanManager kompatiblen Servers zur Verfügung stellt. Es werden einem Client Dienste (sog. "shares"), d.h. die Nutzung von Druckern und Festplatten auf dem Server, zur Verfügung gestellt. Es sind aber auch Programme vorhanden, mit deren Hilfe von Linux aus auf geteilte Drucker und Festplatten von Rechnern zugegriffen werden kann, auf denen ein LanManager kompatibler Server, wie z.B. Windows 3.11, NT, 95 oder OS/2 installiert ist. Die Software wurde im wesentlichen von Andrew Tridgell entwickelt, der das Paket kostenlos unter den Bedingungen der Gnu Public License zur Verfügung stellt.
Samba benutzt auf der Basis von TCP/IP das SMB-Protokoll (Session Message Block), das ich im nächsten Abschnitt kurz einführen werde.
Das SMB-Protokoll ist im Gegensatz zu anderen Microsoft-Produkten gut dokumentiert, da es zum einen in Zusammenarbeit mit anderen Firmen wie z.B. Intel entstanden ist und zum anderen auf dem Netzwerk-Protokoll NetBIOS basiert. Das Protokoll ist in etliche Stufen gegliedert. Dies begründet sich dadurch, daß es von Microsoft immer wieder an neue Versionen der Betriebssysteme (DOS und Windows) angepaßt wurde. Es entstanden dadurch verschiedene Dialekte des Protokolls, von denen folgende von Samba unterstützt werden: CORE, COREPLUS, LANMAN1, LANMAN2 und NT1. Dabei ist NT1 die Standardeinstellung von Samba.
Im SMB-Protokoll gibt es ca. 65 Hauptfunktionen, z.B. SMBread und SMBwrite. Manche dieser Funktionen sind wiederum in etliche Unterfunktionen untergliedert (SMBtrans hat mindestens 120 Unterfunktionen, z.B. DosPrintQAdd oder NetSessionEnum). Jede Funktion hat selbstverständlich mehrere Optionen und sogenannte "Information Levels", die die Art der Datenstruktur, die zurückgeliefert wird, bestimmen.
Samba unterstützt zur Zeit 63 der 65 Hauptfunktionen, jedoch nur 8 der Unterfunktionen von SMBtrans, wobei fairerweise dazu gesagt werden muß, daß sogar Windows NT nicht alle Unterfunktionen unterstützt. Das aktuellste Protokoll, das von Samba unterstützt wird, wird auch von Windows 95 und NT 3.5 verwendet und hat die genaue Bezeichnung "NT LM 0.12".
Aufgrund der Komplexität des Protokolls wird auch die Implementierung eines SMB-Servers für Unix groß und komplex. Das heißt nun aber auch, daß es sehr schwer ist, eine fehlerfreie Implementierung zu erreichen bzw. jeden beliebigen Client ohne Einschränkungen zu unterstützen.
Das Programmpaket kann mittels ftp von den in Abschnitt 5 genannten Servern bezogen werden. Dieses Archiv sollte im Pfad "/usr/local/src" mit dem Befehl
"tar xvzf samba.Version.tar.gz"
entpackt werden. Anschließend muß im Verzeichnis
"/usr/local/src/samba.Version/source"
die Datei "Makefile" mit einem Editor (z.B. vi) bearbeitet werden. In ihr sind Konfigurationen für viele Unix-Dialekte enthalten, unter anderem auch für Linux. Für Linux existieren zwei Versionen: Mit und ohne Shadow-Passwort-Unterstützung. Je nachdem, wie die Passwort-Abfrage auf dem Linux-Rechner konfiguriert ist, müssen dann die Kommentare in "Makefile" entfernt und die Datei gespeichert werden. Für die Version, die auf dem ftp-Server sunsite.unc.edu bzw. einem der Mirrors vorhanden ist, ist dies bereits geschehen (Konfiguration ohne Shadow-Passwort-Unterstützung).
Nach der Eingabe von "make" werden die Binärdateien compiliert. Nachdem diese erfolgreich erzeugt wurden, werden nach der Eingabe von "make install" die Binärdateien sowie die Manual Pages in den Verzeichnissen "/usr/local/samba" bzw. "/usr/local/man" installiert. Die ausführbaren Dateien befinden sich nun im Verzeichnis "/usr/local/samba/bin", die Konfigurationsdateien in "/usr/local/samba/lib" und die Dateien, die zur Laufzeit erzeugt werden (z.B. Logdateien) in "/usr/local/samba/var".
Falls Samba bereits installiert war, werden die alten Binärdateien mit einer ".old"-Erweiterung umbenannt. Wenn die neu installierte Version nicht funktionieren sollte, kann man leicht mittels "make revert" wieder zur alten Version zurückkehren.
Im Verzeichnis "/usr/local/samba/bin" sollten sich nun folgende Programme befinden:
Progammname | Funktion |
---|---|
smbd | Der Samba-Server. Hier werden Anfragen auf Dienste anhand der Informationen in der Konfigurationsdatei bedient. |
nmbd | Der NetBIOS Nameserver. Dieses Programm übersetzt Anfragen von Rechnernamen in die zugehörige IP-Adresse. |
smbclient | Dies ist ein Client-Programm für Unix-basierte Rechner. Man kann mit dessen Hilfe auf Dienste von Samba-Rechnern, aber auch auf geteilte Dienste von Windows-Rechnern zugreifen. |
testprns | Ein kleines Programm zur Überprüfung der Druckerkonfiguration. |
testparm | Überprüft die Konfigurationsdatei auf eventuelle Fehler. |
smbprint | Ein Shell-Script, das Drucken auf Windows-Rechnern ermöglicht, die ihre(n) Drucker zur Nutzung im Netzwerk freigegeben haben. |
smbstatus | Ein Programm, das Statusinformationen anzeigt, falls diese aufgezeichnet wurden |
Die Konfiguration wird in der Datei "/usr/local/samba/lib/smb.conf" gespeichert. Zu diesem Thema ist auch eine ca. fünfzigseitige ManPage vorhanden, die alle Optionen ausführlich beschreibt. Im Folgenden werde ich nur auf die wichtigsten Optionen eingehen, die zur Einrichtung wirklich notwendig sind, und die meisten Fälle der Praxis abdecken. Die ManPages kann man mittels dem Befehl "man smb.conf" abrufen und sich damit alle verfügbaren Einstellungsmöglichkeiten anzeigen und erläutern lassen.
Die Datei "smb.conf" ist ähnlich aufgebaut wie ".ini"-Dateien von Windows. Sie besteht aus Abschnittsüberschriften in eckigen Klammern und nachfolgend Einstellungen für diesen Abschnitt. Die einfachste nützliche Konfiguration hierbei sieht wie folgt aus:
[homes] comment = Home-Verzeichnisse guest ok = false writable = yes
Mit dieser Konfiguration können Benutzer, die bereits ein Account auf dem Samba-Rechner haben, bequem auf die Dateien in ihrem Home-Verzeichnis zugreifen.
Die Werte "0", "false" und "no" bzw. "1", "true" und "yes" für boolesche Optionen können synonym verwendet werden. Spaces bzw. Tabulatorschritte zwischen den einzelnen Schlüsselwörtern sowie Groß- bzw. Kleinschreibung werden ignoriert. Die Namen der Abschnitte können bis auf drei frei gewählt werden, da den Sektionen [global], [homes] und [printers] besondere Bedeutungen zukommen, die ich im Folgenden noch erklären werde. Namen von Benutzern, die auf den Server zugreifen wollen, müssen in der Datei /etc/passwd vorhanden sein, auch wenn sie kein Account auf dem Server besitzen, da Samba die Benutzerautorisierung anhand dieser Datei vornimmt.
Ob die Einstellungen in der Konfigurationsdatei korrekt sind, läßt sich mit Hilfe des Programms "testparm" ermitteln. Dieses Programm arbeitet die Konfigurationsdatei ab und gibt bei erfolgreichem Abschluß die konfigurierten Dienste aus. Bei fehlerhaften Einträgen werden diese angezeigt und man kann sie entsprechend korrigieren.
Einstellungen im Abschnitt [global] beziehen sich auf die allgemeine Verhaltensweise von Samba. Hier nun ein Beispiel für diesen Abschnitt:
[global] comment = Globale Einstellungen protocol = NT1 printing = SYSV status = Yes password level = 2
Diese Einstellungen legen die SMB-Protokoll-Version (NT1) und die Art wie Drucker angesprochen werden (SYSV) fest. Durch die Einstellung "status = Yes" wird bestimmt, daß Informationen über den Zustand des Servers in einer Statusdatei (im Verzeichnis "/usr/local/samba/var") abgelegt werden, die mit dem Programm "smbstatus" angezeigt werden können.
Eine wichtige
Option ist "password level". Da LAN-Manager-Clients die Passwörter
grundsätzlich in Großbuchstaben umwandeln (außer bei der Verwendung des Protokolls
COREPLUS), muß Samba alle möglichen Kombinationen von Groß- und Kleinbuchstaben
für die Passwörter testen. Diese Option bestimmt nun die maximale Anzahl der
Zeichen, die im Passwort groß geschrieben sein dürfen. Dies schränkt die Anzahl
der zu versuchenden Buchstaben-Kombinationen ein und beschleunigt den Prozeß
der Anmeldung auf dem Samba-Server.
Einrichten von geteilten Verzeichnissen
Ich will das Einrichten von geteilten Verzeichnissen am Beispiel einer Daten demonstrieren, die von den Benutzern Max, Moritz und Fritz erstellt werden muß. Auf dem Linux-Rechner muß ein Verzeichnis eingerichtet werden, das die Daten der Arbeit enthält (z.B. "/samba/data"). Um den Dreien nun den Zugriff auf das Verzeichnis zu ermöglichen, muß folgendes in der Datei "smb.conf" eingetragen werden:
[data] comment = Daten user = max,moritz,fritz only user = True path = /samba/data writable = Yes max connections = 2
Der geteilte Dienst "data" kann nun einem Laufwerksbuchstaben auf dem Windows-Rechner zugeordnet werden. Dabei haben zu diesem Dienst nur die angegebenen Benutzer Zugriff (only user - Option), was auch zur logischen Folge hat, das maximal drei Benutzer auf einmal (max connections) diesen Dienst in Anspruch nehmen können.
Um Benutzern, die ein Account auf dem Samba-Rechner besitzen, Zugang zu ihrem Home-Verzeichnis zu ermöglichen, wird der Abschnitt [homes] verwendet, wie ich schon im einführenden Teil erläutert hatte.
Mit der Option "mangled names" wird eingestellt, ob Dateinamen, die nicht der DOS-Norm "Name (8 Zeichen).Erweiterung (3 Zeichen)" entsprechen, umgeformt werden sollen oder einfach übergangen werden. Die Option "mangling char" wählt das Zeichen aus, das zur Namensverkürzung verwendet wird (Standardeinstellung: ~).
[data] comment = DatenDos ... mangled names = 1 mangling char = ° ...
In diesem
Beispiel würde der Dateiname slackware-2.1.4 unter Windows als slack°1.4
erscheinen.
Einrichten von geteilten Druckern
Der allgemeine Abschnitt [printers] dient dazu, die Drucker unter den selben Namen wie sie auf dem Linux-Rechner (in der Datei "/etc/printcap") definiert sind, zu benutzen. Ein typisches Beispiel hierfür wäre:
[printers] comment = Globale Druckereinstellungen public = Yes path = /usr/spool/pub printable = Yes
Jeder Benutzer kann jetzt jeden Drucker das Servers ansprechen (public = Yes). Die Dateien, die vom Client aus gedruckt werden sollen, werden im Verzeichnis "/usr/spool/pub" abgelegt. Der Benutzer darf jedoch nicht direkt in das Verzeichnis schreiben (writable = No), sondern diese Aufgabe wird von Samba übernommen (printable = Yes).
Hinweis: Das angegebene Verzeichnis muß für jeden Benutzer alle Zugriffsrechte aufweisen (zu Erreichen durch den Befehl "chmod 777 /var/spool/pub").
Um spezielle Drucker zu definieren, die nur von bestimmten Personen verwendet werden dürfen, muß ein neuer Abschnitt definiert werden, der wie folgt aussehen kann (vgl. auch Abschnitt 2.2.2 Einrichten von geteilten Verzeichnissen):
[laserjet] comment = HP Laserjet 4M printer = laserjet users = max,moritz,fritz only user = True printable = True public = False path = /var/spool/pub
Hier können die Benutzer Max, Moritz und Fritz nun exklusiv auf den Dienst laserjet zugreifen und das Resultat ihrer Daten zu Papier bringen. Es wird der Drucker verwendet, der in der Datei "/etc/printcap" als "laserjet" definiert ist.
Die Befehle zum Drucken bzw. Löschen eines Druckauftrages sowie Art der Anzeige der Druckerwarteschlange können auch verändert werden. Im folgenden Beispiel werden die zusätzlichen Befehle aufgezeigt:
[ascii2ps] comment = ASCII auf Postscript ... print command = /usr/bin/mpage -2 %s | /usr/bin/lpr -P%p lpq command = /usr/bin/lpq %p lprm command = /usr/bin/lprm -P%p %j
Hierbei enthalten die Variablen %s den Namen der zu druckenden Datei, %p den Druckernamen und %j die Druckauftragsnummer. In diesem Beispiel wird der Laserdrucker zum Drucken von ASCII-Dateien im Postscript-Format verwendet. Es sollen zwei Seiten auf einem Blatt erscheinen, was mit dem Befehl "mpage -2" erreicht wird. Die Art der Anzeige der Warteschlange, sowie der Befehl zum Löschen eines Druckauftrages enthalten Standard-Einstellungen.
Mit dem Programm
"testprns" kann man zusätzlich noch überprüfen, ob die angegebenen
Namen der Drucker in der Konfigurationsdatei gültig sind.
Browsing
Samba stellt die Möglichkeit zur Verfügung, einem Client sämtliche geteilte Dienste aufzulisten. Ist dies nicht erwünscht, d.h. nur Benutzer, die den Namen von bestimmten Diensten kennen, sollen auch von diesen Kenntnis haben, kann dies mit der Option
[dienst] comment = Dienstplanung ... browseable = No ...
ausgeschaltet werden. Auf diese Weise können einzelne oder auch alle (wenn die Option im [global]-Abschnitt angegeben wird) Dienste versteckt werden.
Es handelt sich hierbei allerdings eine sehr nützliche Eigenschaft, da man beim Anmelden von Windows aus automatisch eine Liste der zur Verfügung stehenden Dienste erhält und den gewünschten dann leicht mit einem Maus-Klick auswählen kann. Aus diesem Grund sollte man nur bei erhöhtem Sicherheitsbedarf auf diese Möglichkeit verzichten.
Manche Dienste benötigen zu Ihrer Laufzeit bestimmte Ressourcen, wie z.B. eine CD-ROM. Damit diese Ressource nun bei der Anforderung des Dienstes zur Verfügung gestellt werden kann und bei dessen Beendigung wieder freigegeben wird, existieren die Optionen "preexec" und "postexec". Das mounten bzw. unmounten einer CD-ROM am Beginn bzw. Ende des Dienstes würde wie folgt realisiert:
[data] comment = DatenCD ... preexec = mount /cdrom postexec = umount /cdrom ...
Um die Konfiguration flexibler zu gestalten, sind folgende Variablen definiert:
Variable | Bedeutung |
---|---|
%S | Der Name des aktuellen Dienstes. |
%P | Der Pfad des aktuellen Dienstes. |
%u | Der Name des Benutzers des aktuellen Dienstes. |
%H | Das Home-Verzeichnis des aktuellen Benutzers (%u). |
%v | Die verwendete Samba-Version. |
%h | Der Name des Samba-Rechners. |
%m | Der NetBIOS-Name des Client-Rechners. |
%M | Der Internet-Name des Client-Rechners. |
%d | Die Prozess-Nummer von smbd. |
%a | Die Architektur des Client-Rechners (bisher nur erkannt (v1.9.15p8): Samba und Windows für Workinggroups, 95 und NT; ansonsten "UNKNOWN"). |
%I | Die IP-Adresse des Client-Rechners. |
%T | Das aktuelle Datum und Zeit. |
Die Verwendung der Variabeln möchte ich nun an zwei Beispielen demonstrieren:
Beispiel 1:
[dienst] comment = Dienstplanung ... path = /samba/%u ...
In diesem Beispiel wird einem Benutzer anhand seiner Kennung ein entsprechendes Arbeitsverzeichnis im Verzeichnis-Ast /samba zugewiesen. Der Benutzer moritz würde also das Verzeichnis /samba/moritz zugeordnet.
Beispiel 2:
[FastASCII] comment = ASCII zweiseitig pro Blatt public = yes printer = laserjet printcommand = mpage -2 -h"%u %T" %s | lpr -P%p
Der Dienst FastASCII aus diesem Beispiel druckt Textdateien zweiseitig pro Blatt versehen mit Benutzernamen und Druckzeitpunkt aus.
Um eine gewisse Sicherheit des Samba-Rechners zu gewährleisten, existieren verschiedene Sicherheits-Einstellungen, von denen einige denen des ftp-Daemons ftpd ähneln. Es ist möglich bestimmte Rechner oder Benutzer von der Nutzung der Dienste ein- bzw. auszuschließen. Außerdem können bestimmte Verzeichnis vor einem Zugriff geschützt werden. Abhängig davon, ob sich diese Einstellungen im Abschnitt [global] oder einem anderen, speziellen Abschnitt befinden, sind diese Einstellungen für alle Dienste oder nur für diesen speziellen Dienst gültig.
Mit den Optionen "hosts allow" und "hosts deny" ist es möglich nur bestimmten Rechnern Zugriff auf die Dienste von Samba zu gewähren. Im folgenden Beispiel erhalten alle Rechner mit der IP-Adresse 192.168.2.*, jedoch nicht das Gateway mit der Adresse 192.168.2.1 Zugriff auf die Samba-Dienste:
[global] comment = Globale Einstellungen ... hosts allow = 192.168.2. except 192.168.2.1 ...
Das gleiche Resultat kann aber auch durch die folgenden Einstellung erreicht werden:
[dienst] comment = Dienstplanung ... hosts allow = 192.168.2. hosts deny = 192.168.2.1 ...
Um nur Rechner zuzulassen, die nur an einem bestimmten Netzwerk mit einer bestimmten Netzmaske angeschlossen sind, muß man folgendermaßen vorgehen
[data] comment = DatenServer ... hosts allow = 192.168.2.0 / 255.255.255.0 ...
Um bestimmte Verzeichnisse vor einem Zugriff zu schützen, können diese mit der Option "dont descend" angegeben werden. In diese Verzeichnisse kann zwar gewechselt werden, jedoch werden keine Dateien angezeigt (ähnlich einem Verzeichnis auf Linux mit den Zugriffsrechten x--).
[global] comment = Globale Einstellungen ... dont descend = /dev, /etc, /proc ...
Um einzustellen, ob in Verzeichnisse gewechselt werden darf, die nur als Verweis (link) in einen anderen Teil des Verzeichnisbaumes existieren, kann man die Option "wide links" verwenden:
[global] comment = Globale Einstellungen ... wide links = true ...
Um bestimmte Benutzer mit Sicherheit von der Benutzung eines Dienstes auszuschließen, können diese mit der Option "invalid users" explizit genannt werden:
[data] comment = Daten ... user = volker, gerhard, peter only user = True ... invalid users = klausk,ulrike,brigitte
...
Hier dürfen die Benutzer Axel, Klaus und Peter sowie die Benutzer in der Unix-Gruppe "diplom" nicht auf die Daten von Max, Moritz und Fritz zugreifen, da die Gefahr besteht, daß sie abschreiben könnten. Es handelt sich hierbei um eine eigentlich unnötige Option, da diese bereits durch die Kombination der Optionen "user" und "only user" abgedeckt ist. Sie ist aber sehr hilfreich, wenn die Definition der erlaubten Benutzer nicht so eindeutig wie in dem obigen Beispiel ist.
Um auch Benutzer zuzulassen, die ein Account ohne Passwort besitzen, kann man die Option "null passwords" verwenden.
[global] comment = Globale Einstellungen ... null passwords = true ...
Die Option "password level" wurde bereits im Abschnitt 2.2.1 Globale Einstellungen behandelt. Es wird hierbei eingestellt, wieviele Großbuchstaben ein Passwort enthalten darf, da Windows das Passwort nur in Großbuchstaben übermittelt und Samba das Passwort quasi "erraten" muß.
[global] comment = Globale Einstellungen ... password level = 2 ...
Um bei einem Wechsel des genutzten Dienstes sicherzustellen, daß immer noch ein autorisierte Benutzer den neuen Dienst anfordert, kann man die Option "revalidate" verwenden. Sie stellt sicher, daß bei jedem Zugriff des gleichen Benutzers auf einen anderen Dienst das Passwort nochmals abgefragt wird.
[global] comment = Globale Einstellungen ... revalidate = true ...
Der Server besteht aus zwei Teilen: Das Programm "nmbd" ist für die Zuordnung von Namen zu den entsprechenden Diensten zuständig. Das Programm "smbd", stellt den eigentlichen SMB-Server dar und ist somit das Herz von Samba.
Das Starten des Servers kann auf zwei Arten realisiert werden: Erstens, als Daemon, der immer als Hintergrundprozeß präsent ist oder als Service, der in der Datei "/etc/inetd.conf" eingetragen ist. Im ersten Fall müssen folgenden Zeilen in die Datei "/etc/rc.d/rc.local" eingfügt werden:
# Starten der SMB-Daemons echo Starting SaMBa... /usr/local/samba/bin/smbd -D /usr/local/samba/bin/nmbd -D
Der Parameter "-D" teilt den Programmen mit, daß sie als Daemons im Hintergrund arbeiten sollen und somit die benötigten Ports (139 für smbd und 137 für nmbd) selbst verwalten.
Um die Dateien als Service von inetd laufen zu lassen, müssen in die Datei "/etc/inetd.conf" folgende Zeilen eingefügt werden:
# SMB-Requests netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd
Falls die Dienste, die hier angesprochen werden, noch nicht in der Datei "/etc/services" mit einem Port verbunden sind, müssen in dieser Datei noch folgende Zeilen eingefügt werden:
# NETBIOS-Services netbios-ns 137/tcp # NETBIOS name service netbios-ns 137/udp *) netbios-dgm 138/tcp # NETBIOS datagram netbios-dgm 138/udp netbios-ssn 139/tcp # NETBIOS session *) netbios-ssn 139/udp
Nur die Zeilen, die mit einem *) markiert sind, sind wirklich notwendig; die anderen wurden nur der Vollständigkeit halber mit angegeben. In einer normalen Slackware-Distribution von Linux sind diese Einträge in beiden Dateien bereits vorhanden. Man sollte jedoch immer vorsichtshalber überprüfen, ob diese wirklich vorhanden sind.
Der Internet-Daemen "inetd" wird mit dem Befehl "kill -HUP Prozess-Nummer" (wobei die Prozess-Nummer die des Internet-Daemon bezeichnet) neu initialisiert. Jetzt kann eine Anfrage auf Port 139 bzw. 137 über "inetd" von "smbd" bzw. "nmbd" korrekt beantwortet werden, d.h. der SMB-Server kann jetzt seiner Aufgabe nachgehen. Den Server als Daemon im Hintergrund laufen zu lassen, hat den einzigen Vorteil, daß Verbindungs-Anfragen ein wenig schneller bearbeitet werden können, da "smbd" bzw. "nmbd" nicht mehr gestartet werden müssen.
Zum Testen des Servers kann das Programm "smbclient" verwendet werden. Alle verfügbaren Dienste werden mit dem Befehl
smbclient -L Hostname
aufgelistet. War dieser Test erfolgreich, kann man eine ftp-ähnliche Oberfläche mit dem Befehl
smbclient \\Hostname\Dienstname
aufgerufen werden. Manche Unix-Befehls-Interpreter verlangen, daß "Backslashes escaped" (der Rückstrich wird verwendet, um nicht-druckbare Zeichen anzusprechen bzw. einen Zeilenumbruch anzuzeigen) werden müssen, d.h. der Aufruf folgendermaßen aussieht:
smbclient \\\\Hostname\\Dienstname
Falls auch dieser Aufruf funktioniert, d.h. man kann mit den Dateien dieses Dienstes arbeiten, kann die Installation auf den Windows-Clients erfolgen, was ich im nächsten Abschnitt erläuteren möche.
Für Windows 3.1 und Windows 3.11 (für Workgroups) gibt es zwei verschiedene Vorgehensweisen, da Windows 3.11 bereits netzwerkfähig ist. Die ältere Windows-Version ist durch eine (kostenlose) Aufrüstung außerdem nur in der Lage die zur Verfügung gestellten Dienste zu nutzen, jedoch keine eigenen Dienste zur Verfügung zu stellen. Beiden Versionen fehlen das Netzwerk-Protokoll TCP/IP, dessen Installation ich im Folgenden im Zusammenhang mit der Einrichtung des Clients erklären werde.
Die Installation unter Windows 3.1 kann nur indirekt durchgeführt werden. Da Windows 3.1 keine Netzwerkunterstützung hat, und von Microsoft (kein mir bekanntes) Paket zur Aufrüstung anbietet, müssen die Netzwerkdienste unter DOS installiert werden. Leider ist es hier auch nicht möglich eigene Drucker oder Verzeichnisse anderen Rechnern zur Verfügung zu stellen, da Microsoft nur einen Client (leider auch nur die englische Version) auf seinem ftp-Server zur Verfügung stellt. Natürlich ist es möglich mit Hilfe des Microsoft LAN-Manager diese Dienste zur Verfügung zu stellen, jedoch möchte ich diese Möglichkeit aus Kostengründen ausschließen.
Auf dem ftp-Server von Microsoft befinden sich die Dateien DSK3-1.EXE und DSK3-2.EXE. Sie müssen in einem leeren Verzeichnis entpackt werden und die Dateien anschließend auf zwei Disketten (Installationsdisketten) kopiert werden. Anschließend muß die Installation mit setup gestartet werden. Die Installation funktioniert weitesgehend automatisch; es wird sogar versucht, die Netzwerkkarte zu erkennen. Da in der Standard-Konfiguration das TCP/IP-Protokoll nicht vorgesehen ist, muß dies während der Installation nachgetragen werden. Die nötigen Änderungen der Dateien config.sys, autoexec.bat, windows.ini und system.ini werden in den meisten Fällen auch automatisch vorgenommen. Kann das Installationsprogramm die Dateien nicht selbst ändern (bei mehreren Konfigurationen in der Datei config.sys oder einem bestehenden Netzwerk-Zusatz für Windows, z.B. Novell NetWare), werden die betreffenden Dateien im Installationsverzeichnis abgelegt und die entsprechenden Systemdateien müssen von Hand geändert werden. In den Dateien hosts bzw. lmhosts müssen noch die IP-Adresse des Linux-Rechners eingetragen werden.
Hinweis: Der Eintrag von IP-Adressen erfolgt hier ohne die trennenden Punkte: Die IP-Adresse 192.168.1.2 muß also als 192 168 1 2 eingetragen werden.
In der Datei protocol.ini muß im Abschnitt [TCPIP] der Eintrag disableDHCP von 0 auf 1 geändert werden. Das Protokoll DHCP (Dynamic Host Configuration Protocol) wird von Windows NT zur Verfügung gestellt und ermöglicht dem Client eine automatische Konfiguration der IP-Adresse, Netzmaske sowie Default-Gateway. Ist kein enstsprechender Server im Netzwerk vorhanden, hängt sich der Client beim Hochfahren auf, da die Suche nach einem solchen Server offensichtlich nicht zeitlich eingeschränkt ist.
Nach einem Neustart des Rechners wird der Client automatisch gestartet. Der Benutzer wird nach seiner Kennung und seinem Passwort gefragt und ist anschließend im Netzwerk eingeloggt. Nach der Eingabe des Befehls net können nun beliebig die Dienste des Samba-Hosts (Drucker und Verzeichnisse) benutzt werden.
Für die Installation in Windows 3.11 wird das Packet wfwt32.exe benötigt, welches das Netzwerkprotokoll TCP/IP hinzufügt (Quellen für dieses Paket sind in Abschnitt 5, Bezugsquellen, Seite 14 aufgelistet). Bei dem Paket handelt es sich um ein selbstenpackendes Archiv. Es muß in einem leeren Verzeichnis (z.B. c:\temp) entpackt werden und anschließend kann die Installation in Windows beginnen.
Mit dem Programm Netzwerk-Setup aus der Gruppe Netzwerk kann nun das TCP/IP-Protokoll installiert werden. Es müssen die IP-Adresse, die Subnetz-Maske sowie die Gateway-Adresse eingetragen werden. Die Einträge Enable Automatic DHCP Configuration, Primary und Secondary WINS-Server können nur verwendet werden, falls ein Windows-NT-Rechner mit den entsprechenden Diensten DHCP (Dynamic Host Configuration Protocol) und WINS (Windows Internet Name Service) im gleichen Netz vorhanden ist. In diesem Fall kann die IP-Adresse, die Subnetz-Maske und die Gateway-Adresse automatisch eingetragen werden und es können mit Hilfe des Name-Servers Rechner-Namen verwendet werden, die sich nicht in der Datei hosts befinden.
Um statt IP-Adressen Rechnernamen (insbesondere der des Samba-Hosts) verwenden zu können müssen mit Hilfe des Editors die Dateien hosts und networks bearbeitet werden. Das Format ist gleich dem Format auf Unix-Rechnern:
127.0.0.1 localhost 195.93.160.13 sysnet.at.gs
Für die Datei networks:
localnet 127 sysnet.at.gs 195.93
Nach dem Neustart von Windows kann nun auf die Dienste des Samba-Hosts mit Hilfe des Dateimanagers zugegriffen werden. Hier können die Druckerports bzw. Laufwerksbuchstaben den entsprechenden Diensten zugeordnet werden.
Die Installation in Windows 95 bzw NT gestaltet sich leicht, da das TCP/IP-Protokoll bereits im Lieferumfang des Betriebssystems. Es muß lediglich über das Netzwerk-Setup hinzugefügt werden.
Account | Kombination von Benutzername und Passwort, die einen Zugang zu einem (meist Mehrbenutzer-) Rechner ermöglicht. |
Client | Rechner, der auf die zur Verfügung gestellten Ressourcen eines Servers (siehe unten) zugreift. |
DHCP | Dynamic Host Configuration Protocol. Wird von Windows-NT-Servern zur Verfügung gestellt, damit Clients die Möglichkeit haben, ihre IP-Adresse, die Subnetz-Adresse und die Gateway-Adresse über das Netzwerk zu erhalten, d.h. automatisch zu konfigurieren. |
ftp | File Transfer Protokoll. Programm, mit dessen Hilfe Dateien von und zu anderen Rechnern übertragen werden können. |
Home-Verzeichnis | Verzeichnis, in dem sich die persönlichen Dateien eines Benutzers auf einem Mehrbenutzer-Rechner befinden. |
link | Querverweis auf eine Datei oder ein Verzeichnis in Unix-Datei-Systemen. |
ManPage | Anleitung zu Befehlen, die mittels "man Befehlsname" angezeigt werden kann. |
mounten | Einbinden einer bestimmten Datei-Ressource, z.B. Festplatten, Disketten oder CD-ROMs, in den Verzeichnisbaum eines Unix-Betriebssystems. |
Server | Rechner, zu dessen Ressourcen Zugang durch ein spezielles Programm (hier: Samba) gewährt wird. Ein Server stellt auch weitere Dienste, z.B. das DHCP-Protokoll eines Windows-NT-Servers zur automatischen Konfiguration der IP-Daten. |
Shadow-Passwörter | Werden Shadow-Passwörter verwendet, befinden sich die Passwörter für den Linux-Rechner nicht mehr in der Datei "/etc/passwd" sondern werden in einer gesonderten Datei "/etc/shadow" gesichert, die nur der Benutzer root lesen kann. Die Verwendung von Shadow-Passwörtern erhöht die Sicherheit eines Rechners gegen unerlaubten Zugang. |
Shell-Script | Eine Auflistung von Unix-Befehlen in einer Datei. Wird diese Datei aufgerufen, werden die dort enthaltenen Befehle nacheinander abgearbeitet (vgl. Batch-Dateien unter MS-DOS). |
share | Ein geteilter Dienst, d.h. eine Ressource (ein Drucker oder ein Verzeichnis), die von einem Server zur Verfügung gestellt wird. |
unmounten | Entfernen einer bestimmten Datei-Ressource, z.B. Festplatten, Disketten oder CD-ROMs, aus dem Verzeichnisbaum eines Unix-Betriebssystems. |
WINS | Windows Internet Name Service. Es handelt sich hierbei um die Windows-Variante der von Unix her bekannten Nameservern. Ein Windows-Server übersetzt hierbei auf Anfrage einen Rechner-Namen (z.B. sysnet.at.gs) in deren IP-Adresse (z.B. 195.93.160.13) und liefert diese Informationen zurück. |
Linux Rechte
Auflösung der Rechte
Die Rechte werden in einem Zahlen Code Aufgelöst.
Beispiel: rwx rwx rwx
421 421 421
pro Block werden die Zahlen Addiert
cmod 755 <Dateiname> die Rechte an dieser Datei :
rwx |
r - x |
r - x |
4+2+1 |
4+0+1 |
4+0+1 |
7 |
5 |
5 |
Via FTP auf Linux Server zugreifen
Mit YAST Pakete Installieren
WUFTP* Relativ geringe Sicherheit
PROFTP* Hohe Sicherheit
/export/home/fd1891/squidNachdem die Datei aus dem Internet in das Unterverzeichnis ./src heruntergeladen ist, muß sie mit dem Befehl gunzip entpackt werden.
gunzip squid-1.1.19-src.tar.gzDa es sich hier um eine doppelt gepackte Datei handelt, muß sie nun nochmals ausgepackt werden. Dazu wird diesmal der Befehl tar benötigt, der diese Archivdatei auspackt und die entsprechende Verzeichnisstruktur anlegt. Durch die Optionen wird angegeben, daß die Datei entpackt wird und die Namen der archivierten Dateien angezeigt werden.
tar xvof squid-1.1.19-src.tarDanach liegen die Dateien mit dem Quellcode in dem Verzeichnis. Vor dem Kompilieren des Codes muß nun zuerst eine Konfiguration vorgenommen werden, damit die richtige Verzeichnisstruktur erstellt wird. Damit die Installation in dem gewünschten Verzeichnis erstellt wird, gibt man im aktuellen Verzeichnis (./src) an
./configure /export/home/fd1891/squidDanach kann das Kompilieren mit dem Befehl
makegestartet werden. Nachdem dies erfolgreich beendet wurde, gibt man nun zum Installieren
make installein. Nun wird die Verzeichnisstruktur und die notwendigen Programme werden erstellt.
/export/home/fd1891/squid/ /bin /cache /etc /logs /src |
Programmdateien Cache-Verzeichnisse Konfigurationsdatei Protokolldateien (war schon vorhanden) |
squid –zeingibt. Danach werden die Verzeichnisse automatisch angelegt. Um nun den Squid Proxy-Server endgültig zu starten, muß man im selben Verzeichnis den Befehl
RunCache&aufrufen. Damit ist der Proxy-Server gestartet und sollte ohne Probleme laufen.
http_port 9000Hier wird der Port angegeben, auf welchem die HTTP-Anfragen von den Clients eingehen. Wenn ein Client einen Proxy-Server verwenden will, muß er neben dem Domänennamen die-sen Port angeben.
icp_port
icp_port 3130
Auf diesem Port sendet und empfängt der Proxy-Agent ICP-Anfragen (ICP = Internet Caching Protocol). Über diesen Port kommuniziert der Proxy mit benachbarten Caches über das ICP. Dieses hat gegenüber IP und HTTP den Vorteil, daß es auf UDP basiert und damit deutlich schneller ist.
mcast_groups
Multicast groups ist ein relativ neuer Dienst, der im Netz noch nicht unterstützt
wird. Daher ist hier keine Angabe notwendig.
tcp_incoming_address
tcp_outgoing_address
udp_incoming_address
udp_outgoing_address
Diese Angaben sind notwendig, wenn „multihomed hosts“ verwendet
werden. Da dies hier nicht vorliegt, sind keine Angaben notwendig.
cache_host
cache_host proxy.sysnet.de sibling 8080 3130 cache_host hercule.daa.net sibling 8000 3130 cache_host wwwproxy.linux.de parent 80 3130
Mit dieser Option werden die benachbarten Caches mit ihrer Internetadresse und dem dazugehörigen Port angegeben, sowie ihre Funktion als gleichberechtiger Proxy (sibling) oder in der Hierarchie höher stehend (parent). Ebenfalls angegeben wird hier der ICP-Port, über den der Proxy mit den benachbarten Caches kommuniziert. Über weitere Optionen können weitere Merkmale eingestellt werden, die aber in diesem Falle nicht von Bedeutung sind.
cache_host_domain
Mit dieser Option kann begrenzt werden, für welche Domänen bei benachbarten
Caches angefragt werden soll.
Es werden für alle Domänen Anfragen geschickt.
neighbor_type_domain
Mit dieser Option ist es möglich, daß für bestimmte Domänen die benachbarten
Caches als anderer Typ behandelt werden, als es bei cache_host angegeben ist.
Dies ist jedoch hier nicht notwendig.
inside_firewall
Hiermit können Domänen spezifiziert werden, die sich innerhalb des lokalen Internet
Firewalls befinden.
Da das System nicht von einer Firewall umgeben ist, ist es nicht notwendig,
hier Angaben zu machen.
local_domain
local_domain sysnet.deHier kann eine Liste von Domänen angegeben werden, die sich in dem lokalen Netz befinden. Alle Anfragen auf Domänen, die hier angegeben werden, werden direkt von der Quelle geholt, nicht zwischengespeichert und es werden keine Anfragen an benachbarte Caches durchgeführt.
local_ip
Diese Angabe beinhaltet dasselbe wie local_domain, jedoch wird hier die IP-Adresse
des URLs überprüft. Dazu muß eine DNS-Nachfrage gestartet werden. Aus diesem
Grund wird jedoch die Anfrage nach local_domain vorgezogen.
Eine Angabe ist hier also nicht notwendig, da in dem lokalen Netz der SYSNET
nur eine Hauptdomäne existiert und eine DNS-Nachfrage nicht notwendig ist.
firewall_ip
Hier wird die IP-Adresse der Firewall angegeben. Dies hat dieselbe Auswirkung
wie die An-gabe bei inside_firewall, nur für IP-Adressen. Da sich aber firewall_ip
und local_ip gegenseitig ausschließen, werden bei einer Angabe hier die Angaben
bei local_ip ignoriert.
Eine Angabe ist in diesem Falle nicht notwendig.
neighbor_timeout (seconds)
neighbor_timeout 2Hier wird die Zeit in Sekunden angegeben, wie lange auf eine Antwort von einem Nachbarn gewartet werden soll. Nach verstreichen dieser Zeit ohne eine Antwort, wird die Anfrage direkt an die Quelle geleitet.
hierarchy_stoplist
hierarchy_stoplist cgi-bin cgi ?
Die Ausdrücke, die hier angegeben werden, bewirken, daß Anfragen auf URLs, in denen diese Ausdrücke vorkommen, nicht an benachbarte Caches weitergegeben werden, sondern direkt an die Quelle weitergeleitet werden. Dies ist beispielsweise sinnvoll für Seiten, in denen über Skripte Abfragen gestartet werden.
Die Standardeinstellung wird hier übernommen, um Seiten mit cgi-Scripts und Anfragen direkt an die Quelle weiterzuleiten.
cache_stoplist
cache_stoplist cgi-bin cgi ?In dieser Liste wird angegeben, daß Seiten, in deren Adresse die spezifizierten Ausdrücken vorkommen, nicht gespeichert werden und jedesmal neu von der Quelle geholt werden.
cache_stoplist_pattern
# case sensitive
cache_stoplist_pattern/i # case insensitive
bedeutet dasselbe wie cache_stoplist, jedoch können hier reguläre Ausdrücke
anstatt einfacher Zeichenketten angegeben werden. Es gibt keine Standardeinstellung.
Eine Angabe ist nicht notwendig.
Optionen für die Cachegröße
cache_mem (megabytes)
cache_mem 8Angabe der maximalen Größe des virtuellen Speichers zum zwischenspeichern von Seiten. Eine sinnvolle Angabe dieser Größe hat erheblichen Einfluß auf die Performance des Proxys, da hier Daten im Arbeitsspeicher gehalten werden und dadurch wesentlich schneller abgerufen werden können, als vorhandene Seiten, die auf der Platte gespeichert sind. Die Größe muß aber auch von den Gegebenheiten der Maschine abhängig gemacht werden, um parallel verlaufende Prozesse nicht zu sehr zu behindern.
cache_swap (megabytes)
cache_swap 100Maximaler Plattenplatz, der zur Verfügung steht, um Seiten zu speichern. Es ist darauf zu achten, daß hier mehr angegeben wird, als bei cache_mem. Wenn dieser Speicherplatz voll ist, werden alte oder lange nicht benutzte Seiten aus dem Speicher gelöscht.
cache_swap_low
(percent, 0-100)
cache_swap_high (percent, 0-100)
cache_swap_low 90 cache_swap_high 95Mit diesen Angaben wird eingestellt, bei welcher Auslastung des Plattenspeichers damit angefangen wird, Objekte zu löschen (cache_swap_high). Wenn genug Objekte gelöscht wurden und die cache_swap_low-Marke erreicht ist, wird das Löschen beendet.
cache_mem_low
(percent, 0-100)
cache_mem_high (percent, 0-100)
cache_mem_low 75 cache_mem_high 90Wie bei den vorherigen Angaben, werden auch hier Ober- und Untergrenzen festgelegt. Jedoch erfolgt dies hier für den Cache im Arbeitsspeicher. Da die Zugriffszeiten hier wesentlich schneller sind und dadurch auch Löschvorgänge schneller sind, kann der Bereich hier größer gewählt werden. Gelöschte Objekte werden nur aus dem RAM gelöscht und bleiben auf der Festplatte erhalten.
maximum_object_size
maximum_object_size 4096Hier wird die maximale Größe zu speichernder Objekte in Kilobyte angegeben. Objekte, die größer sind, werden nicht gespeichert.
ipcache_size
(number of entries)
ipcache_low (percent)
ipcache_high (percent)
Mit diesen Optionen wird die Größe, Ober- und Untergrenze des IP-Caches angegeben.
Für den vorliegenden Fall werden keine Angaben benötigt.
Pfadnamen für Log-Dateien und Cache-Verzeichnisse
Im Folgenden werden die Pfadnamen für die Log-Dateien und Cache-Verzeichnisse
angege-ben. Diese ergeben sich aus der Verzeichnisstruktur, die bei der Installation
erstellt wurde.
cache_dir
cache_dir /export/home/fd1891/squid/cacheVerzeichnis für die Zwischenspeicherung auf der Festplatte.
cache_access_log
cache_access_log /export/home/fd1891/squid/logs/access.logIn dieser Log-Datei wird gespeichert, von welchem Client auf welchen URL zugegriffen wurde.
cache_log
cache_log /export/home/fd1891/squid/logs/cache.logHier werden die Ereignisse des Caches protokolliert.
cache_store_log
cache_store_log /export/home/fd1891/squid/logs/store.logIn dieser Datei wird protokolliert, welche Objekte aus dem Cache herausgeworfen wurden, welche gespeichert wurden und für wie lange.
cache_swap_log
Hier kann ein Pfadname für die swap log-Datei angegeben werden. In dieser werden
die Daten der Objekte auf der Platte gespeichert, um den Cache bei einem Neustart
zu rekonstruieren. Eine Angabe ist hier allerdings nicht notwendig, da diese
Datei standardmäßig im ersten Cache-Verzeichnis abgelegt ist.
emulate_httpd_log
emulate_httpd_log onDer Cache kann das Format von Log-Dateien emulieren, welches von vielen HTTPD-Programmen benutzt wird. Dies hat keine Auswirkungen auf die Performance des Caches und wird daher bei der Standardeinstellung auf ‚on‘ belassen.
log_mime_hdrs
#log_mime_hdrs offDiese Option wird hier nicht benötigt. Die Standardeinstellung ‚off‘ wird beibehalten.
useragent_log
#useragent_log noneDiese Option wird hier nicht benötigt. Die Standardeinstellung ‚none‘ wird beibehalten.
pid_filename
pid_filename /export/home/fd1891/squid/logs/squid.pidIn dieser Datei wird die Prozeß-ID des Squid gespeichert. Diese ist notwendig, um den Squid zu beenden. Bei Beenden des Squid wird die Datei gelöscht und bei einem Neustart neu angelegt.
debug_options
debug_options ALL,1Hier wird festgelegt, welche Debug-Informationen in den Log-Dateien gespeichert werden. Die Angabe erfolgt in section, level, wobei jeder Quelldatei eine section zugewiesen ist. Niedrige Level ergeben nur wenig Informationen, der höchste Level (Level 9) verursacht allerdings sehr große Log-Dateien, es ist also Vorsicht angeraten und nur dann ein höherer Level anzugeben, wenn die Informationen unbedingt notwendig sind. Mit der Angabe ALL werden für alle Sections die gleichen Debug-Level gesetzt.
ident_lookup
#ident_lookup offDiese Einstellung ist notwendig, um für jede Verbindung eine Verifizierung des Client-Benutzernamen nach RFC931 zu machen. Die Standardeinstellung ,off' wird beibehalten, da dies im vorliegenden Fall nicht notwendig ist.
log_fqdn
#log_fqdn offDiese Option muß auf on gesetzt werden, wenn in der Datei access.log die vollen Domänennamen gespeichert werden sollen. Auch hier wird die Standardeinstellung übernommen.
client_netmask
client_netmask 255.255.255.0Diese Option hat eine zentrale Bedeutung für den Datenschutz und die Wahrung der Privatsphäre der Benutzer. Durch die Angabe einer Netzmaske kann hier bewirkt werden, daß in der Datei access.log die IP-Adresse des Clients überdeckt wird. Die Standardeinstellung sieht keine Netzmaske vor. Es ist aber anzuraten hier eine sinnvolle Maske zu generieren, damit auf der einen Seite die Privatsphäre der Benutzer gewahrt ist, auf der anderen Seite aber noch eine Rückverfolgung möglich ist, um mögliche Fehler zu verfolgen.
ftpget_program
ftpget_program /export/home/fd1891/squid/bin/ftpgetDer Pfad für das FTP-Programm.
ftpget_options
#ftpget_optionsHier können die Optionen angegeben werden, mit dem das FTP-Programm gestartet werden soll.
ftp_user
ftp_user user@sysnet.deUm bei einem anonymen Login das Paßwort informativer zu machen kann hier die eine E-Mailadresse angegeben werden, bzw. die Domäne. In dem vorliegenden Fall wäre dies user@sysnet.de. Manche FTP-Server verlangen eine gültige E-Mailadresse um einen Zugang zu ermöglichen. Daher wird hier eine Adresse gesetzt.
cache_dns_program
cache_dns_program /export/home/fd1891/squid/bin/dnsserver
dns_children
dns_children 10Wird der Proxy-Server stark frequentiert, sind oft mehrere DNS-Abfragen gleichzeitig notwendig. Hier wird angegeben, wieviel Kind-Prozesse für DNS-Abfragen gestartet werden dürfen.
dns_defnames
#dns_defnames offIn einem lokalen Netzwerk reicht es oft aus, zum Holen von Seiten innerhalb der Domäne nur die Internetadresse ohne den Domänennamen anzugeben (z.B. die Domäne sysnet.de“ weglassen). Damit der DNS-Server damit umgehen kann, muß diese Option auf „on“ gesetzt werden. Dies kann aber zu Problemen führen, wenn der Proxy Teil einer Cache-Hierarchie ist. Da dies hier zutrifft, muß die Option standardmäßig auf „off“ gelassen werden.
unlinkd_program
unlinkd_program /export/home/fd1891/squid/bin/unlinkd Dieses Programm wird zum Löschen von Ojekten aus dem Cache benötigt.pinger_program
#pinger_program /export/home/fd1891/squid/bin/pingerDieses Programm sendet Pings an andere Rechner, um deren Erreichbarkeit zu überprüfen. Dieses Programm ist hier nicht notwendig und bleibt daher auskommentiert.
redirect_program
#redirect_program /bin/falseHier wird der Pfadname für ein Programm angegeben, welches URLs nachsendet. Dieses Programm muß selber erstellt werden. Deshalb wird dies standardmäßig nicht verwendet und bleibt auskommentiert.
redirect_children
#redirect_children 5Hier wird die maximale Zahl der startbaren Kind-Prozesse für das redirect-Programm angegeben.
#wais_relay localhost 8000Das WAIS (Wide Area Information Service) ist ein älteres Protokoll, welches dem HTTP ähnlich ist. Diese Angabe ist also ähnlich den Angaben unter http_port. Da es allerdings nicht mehr von allen Web-Servern unterstützt wird und nur noch selten angewandt wird, ist eine Angabe hier nicht notwendig.
request_size
Die Angabe bezeichnet die maximal akzeptable Größe für Objekte, die Anfragen
enthalten, wie beispielsweise cgi-Skripte. Diese verwenden die HTTP-Anweisung
POST, um Daten an den referenzierenden Server zu übertragen. Dies ist notwendig,
wenn eine zu große Netzlast verhindert werden soll. An der SYSNET soll dies
derzeit nicht begrenzt werden. Eine Angabe ist also nicht notwendig.
refresh_pattern
# case sensitive
refresh_pattern/i # case insensitive
refresh_pattern . 0 20% 4320Mit diesen Angaben kann der beeinflußt werden, wie sich der Proxy beim Löschen von im Cache gespeicherten Objekten verhält. Hier werden die Standardeinstellungen verwendet, da es nicht möglich war, die Einstellungen zu testen.
Die Liste wird beim Löschen in dieser Reihenfolge gelesen und die erste zutreffende Eigenschaft wird angewendet. „Schale“ Objekte werden dabei gelöscht.
reference_age
reference_age 1 yearBeim Löschen der auf Festplatte gespeicherten Objekte unterstützt der Squid-Proxy LRU (Least Recently Used). Dabei wird ein Objekt nach seinem letzten Gebrauch beurteilt. Das hier angegebene Alter gilt dabei als Höchstgrenze. Hier ist es sinnvoll, eine recht lange Zeitspanne anzugeben, da eine zu kurze Lebensdauer im Zwischenspeicher dem Sinn eines Proxy-Caches entgegenwirkt. Außerdem wird vorausgesetzt, daß der zur Verfügung stehende Plattenplatz auch ausgenutzt werden kann und damit ein sehr altes Objekt nicht als störend auffällt, solange genug Platz vorhanden ist. Die Marken, die beim Löschen von der Platte beachtet werden sollen, sind weiter oben bereits beschrieben. Aus den beschriebenen Gründen ergibt sich, daß es sinnvoll ist, die Standardeinstellung von einem Jahr zu übernehmen.
quick_abort
quick_abort -1 0 0Standardmäßig fährt der Cache fort, ein angefordertes Objekt zu holen, auch wenn der Client die Anfrage abbricht. Bei stark belasteten Caches oder sehr langsamen Links ist dies nicht immer erwünscht. Mit quick_abort kann eingestellt werden, wann eine Übertragung abgebrochen werden soll.
negative_ttl (minutes)
negative_ttl 5Mit TTL (Time-to-Live) wird angegeben, für welche Zeitdauer ein Objekt im Speicher gehalten werden soll. Bei negative_ttl werden Negativ-Antworten auf HTTP-Anfragen, wie „connection refused“ (Verbindung verweigert) oder „404 Not Found“ (Objekt nicht gefunden) für die angegebene Zeit gespeichert.
positive_dns_ttl (minutes)
positive_dns_ttl 360Hier wird angegeben, wie lange die Ergebnisse erfolgreicher DNS-Anfragen im Cache gehalten werden sollen. Die Standardeinstellung von 6 Stunden (360 Minuten) wird nicht geändert. Es muß ein Test im laufenden Betrieb vorliegen, um diese Einstellung bei Bedarf zu optimieren .
negative_dns_ttl (minutes)
negative_dns_ttl 5Negative DNS-Anfragen werden die hier angegebene Zeit im Speicher gehalten. Die Standardeinstellung von 5 Minuten muß nicht geändert werden.
connect_timeout (seconds)
connect_timeout 60Es kann vorkommen, daß die Verbindung zu einem Server nicht aufgebaut werden kann. Nach der hier angegebenen Zeit wird der Versuch zum Aufbauen einer Verbindung vom Squid abgebrochen.
read_timeout (minutes)
read_timeout 15Wenn bei einer aufgebauten Verbindung nach der hier angegebenen Zeit keine Aktivität festgestellt wird, wird die Verbindung geschlossen.
client_lifetime (minutes)
client_lifetime 200Mit diesem Wert wird begrenzt, wie lange ein Client (in diesem Falle ein Browser) mit dem Proxy-Server verbunden sein darf. Dies soll davor schützen, daß zu viele unbenutzte Verbindungen zum Cache aufgebaut sind, da es vorkommen kann, daß aufgrund eines Netzwerkfehlers eine Verbindung nicht sauber beendet wurde oder eine Verbindung unnötig aufgebaut bleibt, wenn ein Anwender den Browser zwar gestartet hat, aber nicht benutzt.
shutdown_lifetime (seconds)
#shutdown_lifetime 30Soll der Server heruntergefahren werden, müssen alle Verbindungen beendet werden. Nach Ablauf dieser Zeit erhalten die noch aktiven Clients eine Nachricht, daß ihre Verbindung ab-gebrochen wird. Für diese Zeit wird der Server im „shutdown mode“ gehalten.
Für die Zugriffskontrollen
werden ACLs (Access Control Lists) erstellt, über die dann der Zugriff geregelt
wird. Dabei können Listen für die verschiedensten Zwecke angelegt werden.
Dazu wird der Syntax acl aclname acltype string1 ... verwendet. Mit aclname
wird der Liste ein Name gegeben und mit acltype der Typ bestimmt. In
diesen Listen können für den festgelegten Typ eine Reihe von Objekten, Adressen
oder Ähnliches eingetragen werden. Weiter unten wird dann festgelegt, ob für
diese Objekte der Zugriff erlaubt oder verboten wird. Dabei können die folgenden
Typen verwendet werden.
src ip-address/netmask ... | IP-Adresse des Clients |
src addr1-addr2/netmask ... | Adressbereich für Clients |
dst ip-address/netmask ... | IP-Adresse des URL-Ziels |
srcdomain foo.com ... | Domänenname der Clients |
dstdomain foo.com ... | Domänennamen der zu erreichenden URLs |
time [Tages-Abkürzungen] [h1:m1-h2:m2] | zum Regeln, wann auf den Proxy zugegriffen werden darf. |
Tages-Abkürzungen: | S - Sonntag M - Montag T - Dienstag W - Mittwoch H - Donnerstag F - Freitag A - Samstag h1:m1 muß kleiner sein als h2:m2 |
url_regex ^http:// ... | Ausdruck, der auf den gesamten URL zutrifft |
urlpath_regex \.gif$ ... | Ausdruck, der nur auf einen Teil des URLs zutrifft, z.B. wenn im URL der Ausdruck „.gif“ vorkommt. |
port 80 70 21 ... | Angabe von Portnummern |
proto HTTP FTP ... | Angabe von Protokolltypen |
method GET POST ... | Angabe von HTTP-Befehlen |
Für die vorliegende Konfiguration werden folgende ACLs benötigt:
acl localhost1 src 193.174.24.0-193.174.31.255/255.255.255.255 acl localhost2 src 194.94.230.0/255.255.255.0 acl all src 0.0.0.0/0.0.0.0Hier sind die IP-Adressen, bzw. der IP-Adreßbereich für die SYSNET angegeben. Die ACL all deckt alle übrigen IP-Adressen ab. Mit der Netzmaske wird angegeben, welcher Bereich der Adresse nicht beachtet werden soll. In dem vorliegenden Fall trifft dies für die ACL localhost2 zu. Bei der angegebenen Adresse werden mit der Netzmaske die letzten vier Bits abgedeckt, wodurch der gesamte Bereich von 194.94.230.0 bis 194.94.230.255 gemeint ist.
Aufgrund dieser ACLs kann
der Zugriff auf den Proxy-Server und der Zugriff auf Objekte begrenzt werden.
Da außer dem ICP alle Protokolle über den HTTP-Port laufen, werden hier die
meisten Beschränkungen eingetragen.
Der Syntax dazu lautet: http_access allow|deny [!]aclname ... Das !-Zeichen
bedeutet dabei eine Negation der ACL.
Für den Proxy-Server der SYSNET sind die Beschränkungen wie folgt:
http_access allow localhost1 http_access allow localhost2 http_access deny allDies bedeutet, daß nur von den Rechnern der SYSNET auf den Proxy zugegriffen werden darf. Weitere Einschränkungen sind hier derzeit nicht notwendig. Bei dieser Angabe muß unbedingt auf die Reihenfolge geachtet werden, da die Zugriffsrechte von oben nach unten abgearbeitet werden. Würde z.B. http_access deny all in der ersten Zeile stehen, könnte kein Client auf den Proxy zugreifen, da alle IP-Adressen auf diese ACL zutreffen.
Für den ICP-Port können ebenso Einschränkungen gemacht werden. Dies ist aber hier nicht notwendig. Die Einstellung ist also
icp_access allow all
Es gibt noch eine Reihe
weiterer Einstellungsmöglichkeiten, die jedoch hier nicht von Bedeutung sind
und daher nicht erläutert werden. Sie wurden, soweit vorhanden, bei den Stan-dardeinstellungen
belassen. Auf die Performance des Proxy-Caches haben sie keinen oder nur unbedeutenden
Einfluß.
Ein Teil dieser Optionen dient zum Konfigurieren des Caches, wenn dieser im
Accelerator-Mode gestartet wird. Da dies hier nicht zutrifft, können diese Einstellungen
ebenfalls ignoriert werden.