Apache HTTP Server/Konfiguration: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Beinahe alle Einstellungen von Apache werden durch die Datei "httpd.conf" gesteuert: Servername, Orte von Webverzeichnissen und Logdateien, die Zugriffsrechte, di...“) |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
Beinahe alle Einstellungen | Beinahe alle Einstellungen des [[Apache HTTP Server]] werden durch die Konfigurationsdatei "httpd.conf" gesteuert: Servername, Orte von Webverzeichnissen und Logdateien, die Zugriffsrechte, die Integration von [[PHP]] usw. Bei den meisten [[Linux-Distributionen]] gibt es nicht bloss eine Konfigurationsdatei "httpd.conf", sonderen gleich ein ganzes Rudel von Dateien. Das macht zwar jede einzelne Datei übersichtlicher und ermöglicht eine modulare Konfiguration, gleichzeitig erschwert es aber den Überblick. | ||
Bei | Bei Novell- bzw. Opensuse-Distributionen kommt dazu, dass viele Apache-Konfigurationsdateien bei jedem Start neu erstellt werden. Eigene Änderungen sollten dort in der Datei "/etc/apache2/httpd.conf.local" durchgeführt werden. Damit diese Datei berücksichtigt wird, muss dieser Dateiname in die Variable "APACHE_CONF_INCLUDE_FILES" in der Datei "/etc/sysconfig/apache2" eingefügt werden. | ||
{| class=wiki | {| class=wiki | ||
! Distribution !! Pfad zur Datei "httpd.conf" !! Standardverzeichnis für Webdateien | ! Linux-Distribution !! Pfad zur Datei "httpd.conf" !! Standardverzeichnis für Webdateien | ||
|- | |- | ||
| Fedora, Red Hat || <tt>/etc/httpd/conf/*</tt> || <tt>/var/www/html</tt> | | Fedora, Red Hat || <tt>/etc/httpd/conf/*</tt> || <tt>/var/www/html</tt> | ||
Zeile 10: | Zeile 10: | ||
| Debian, Ubuntu || <tt>/etc/apache2/*</tt> || <tt>/var/www</tt> | | Debian, Ubuntu || <tt>/etc/apache2/*</tt> || <tt>/var/www</tt> | ||
|- | |- | ||
| Novell, | | Novell, Opensuse || <tt>/etc/apache2/*</tt> || <tt>/var/www/htdocs</tt> | ||
|- | |- | ||
| Linux XAMPP || <tt>/opt/lampp/etc/httpd.conf</tt> || <tt>/opt/lampp/htdocs</tt> | | Linux XAMPP || <tt>/opt/lampp/etc/httpd.conf</tt> || <tt>/opt/lampp/htdocs</tt> | ||
|} | |} | ||
Änderungen an der Konfiguration werden erst wirksam, wenn der Apache | Änderungen an der Konfiguration werden erst wirksam, wenn der Apache HTTP Server neu gestartet wird. | ||
Zu beachten ist, dass der Apache HTTP Server unter einem eigenen Benutzerkontro läuft (oft "nobody", bei SUSE "wwwrun"). Bei allen Webdateien müssen die Zugriffsrechte so eingestellt werden, dass dieser Benutzer und damit auch Apache sie lesen kann. | Zu beachten ist, dass der Apache HTTP Server unter einem eigenen Benutzerkontro läuft (oft "nobody", bei SUSE "wwwrun"). Bei allen Webdateien müssen die Zugriffsrechte so eingestellt werden, dass dieser Benutzer und damit auch Apache sie lesen kann. | ||
Zeile 23: | Zeile 23: | ||
Zu den wichtigsten Einstellungen gehören die folgenden. | Zu den wichtigsten Einstellungen gehören die folgenden. | ||
{| class= | {| class=wiki | ||
! !! Beschreibung | ! Parameter !! Beschreibung | ||
|- | |- | ||
| <tt>ServerName</tt> || Netzwerkname des Rechners, auf dem der Apache HTTP Server läuft. Unter diesem Namen ist er von anderen Rechnern aus im | | <tt>ServerName</tt> || Netzwerkname des Rechners, auf dem der Apache HTTP Server läuft. Unter diesem Namen ist er von anderen Rechnern aus im Rechnernetz erreichbar. Fehlt die Einstellung, so versucht Apache, den Netzwerknamen selbst herauszufinden. | ||
|- | |- | ||
| <tt>DocumentRoot</tt> || Das Verzeichnis, in dem die Webdateien (*.html, *.php usw.) | | <tt>DocumentRoot</tt> || Das Verzeichnis, in dem sich die Webdateien (*.html, *.php usw.)befinden. | ||
|- | |- | ||
| <tt>LoadModule</tt> || Wenn der Apache HTTP Server so kompiliert wurde, dass er zur Laufzeit Module laden kann (das ist meist der Fall), so sind dafür "LoadModule"-Anweisungen erforderlich, die beispielsweise wie folgt aussehen. | | <tt>LoadModule</tt> || Wenn der Apache HTTP Server so kompiliert wurde, dass er zur Laufzeit Module laden kann (das ist meist der Fall), so sind dafür "LoadModule"-Anweisungen erforderlich, die beispielsweise wie folgt aussehen. | ||
Zeile 36: | Zeile 36: | ||
|- | |- | ||
| <tt><Directory "xxx"></tt> || Dieser aus mehreren Zeilen bestehende Block beschreibt alle Eigenschaften eines Webverzeichnisses. "<Directory />" enthält die Standardeinstellungen, die unter anderem auch für "DocumentRoot" gelten. Der "<Directory>"-Block endet mit "</Directory>" und kann beispielsweise wie folgt aussehen. | | <tt><Directory "xxx"></tt> || Dieser aus mehreren Zeilen bestehende Block beschreibt alle Eigenschaften eines Webverzeichnisses. "<Directory />" enthält die Standardeinstellungen, die unter anderem auch für "DocumentRoot" gelten. Der "<Directory>"-Block endet mit "</Directory>" und kann beispielsweise wie folgt aussehen. | ||
<Directory "<i>verzeichnis</i>"> | <Directory "<i>verzeichnis</i>"> | ||
... | ... | ||
Zeile 43: | Zeile 44: | ||
Innerhalb des Blocks steuern verschiedene Optionen, was in diesem Verzeichnis erlaubt bzw. verboten ist und wer darauf Zugriff hat. | Innerhalb des Blocks steuern verschiedene Optionen, was in diesem Verzeichnis erlaubt bzw. verboten ist und wer darauf Zugriff hat. | ||
{| class= | |||
{| class=wiki | |||
! Option !! Beschreibung | ! Option !! Beschreibung | ||
|- | |- | ||
| <tt>AllowOverride</tt> || Oft ist es erwünscht, dass der Apache HTTP Server in Webverzeichnissen die Datei ".htaccess" auswertet und die darin enthaltenen Einstellungen auf das Verzeichnis anwendet. Dazu muss mit "AllowOverride" angegeben werden, welche Veränderungen zulässig sind. Mögliche Einstellungen sind "None" | | <tt>AllowOverride</tt> || Oft ist es erwünscht, dass der Apache HTTP Server in Webverzeichnissen die Datei "[[.htaccess]]" auswertet und die darin enthaltenen Einstellungen auf das Verzeichnis anwendet. Dazu muss mit "AllowOverride" angegeben werden, welche Veränderungen zulässig sind. Mögliche Einstellungen sind die folgenden: | ||
"AuthConfig" (Authentifizierung), "FileInfo" (Sprach- und Zeichensatzeinstellungen, Fehlerdatei), "Indexes", "Limit" (Zugriffsrechte) und "Options". | * "None" verbietet alle Änderungen und ist oft die Standardeinstellung. | ||
* "All" erlaubt alle Änderungen. | |||
* Eine Kombination aus "AuthConfig" (Authentifizierung), "FileInfo" (Sprach- und Zeichensatzeinstellungen, Fehlerdatei), "Indexes", "Limit" (Zugriffsrechte) und "Options". | |||
|- | |- | ||
| <tt>Options Indexes</tt> || Wird im Webbrowser der URL "<nowiki>http://rechnername/verzeichnis/</nowiki>" angegeben wird, so liefert der Apache HTTP Server je nach Konfiguration von "DirectoryIndex" automatisch die Seite "index.html", "index.php" usw. Sollte keine der "DirectoryIndex"-Dateien vorhanden sein, so bewirkt "Options Indexes", dass ein Inhaltsverzeichnis angezeigt wird. Das ist während der Programmentwicklung oft nützlich, kann im Echtbetrieb aber ein Sicherheitsrisiko darstellen. | | <tt>Options Indexes</tt> || Wird im Webbrowser der URL "<nowiki>http://rechnername/verzeichnis/</nowiki>" angegeben wird, so liefert der Apache HTTP Server je nach Konfiguration von "DirectoryIndex" automatisch die Seite "index.html", "index.php" usw. Sollte keine der "DirectoryIndex"-Dateien vorhanden sein, so bewirkt "Options Indexes", dass ein Inhaltsverzeichnis angezeigt wird. Das ist während der Programmentwicklung oft nützlich, kann im Echtbetrieb aber ein Sicherheitsrisiko darstellen. | ||
Zeile 53: | Zeile 57: | ||
|- | |- | ||
| <tt>DirectoryIndexes</tt> || Angabe einer oder mehrerer Dateien, nach denen der Apache HTTP Server sucht, wenn im Webbrowser nur ein Verzeichnis angegeben wird. Eine übliche Einstellung lautet "index.html index.php main.php default.php". Wird im | | <tt>DirectoryIndexes</tt> || Angabe einer oder mehrerer Dateien, nach denen der Apache HTTP Server sucht, wenn im Webbrowser nur ein Verzeichnis angegeben wird. Eine übliche Einstellung lautet "index.html index.php main.php default.php". Wird im Webbrowser nun der URL "<nowiki>http://rechnername/verzeichnis/</nowiki>" eingegeben, so sucht Apache für dieses Verzeichnis nach den angegebenen Dateien und liefert die erste passende Datei. | ||
|} | |} | ||
== Passwortschutz für Webverzeichnisse == | == Passwortschutz für Webverzeichnisse == | ||
Sobald der Apache HTTP Server läuft, hat jeder im | Sobald der Apache HTTP Server läuft, hat jeder im Rechnernetz bzw. Internet Zugang zu allen von Apache verarbeitbaren Webseiten. Der Zugriff kann auf drei Arten eingeschränkt werden. | ||
* <b>Absicherung in der Datei "httpd.conf":</b> In der Datei "httpd.conf" kann genau eingestellt werden, von welchen Adressen die Webseiten eines bestimmten Verzeichnisses gelesen werden dürfen. | * <b>Absicherung in der Datei "httpd.conf":</b> In der Datei "httpd.conf" kann genau eingestellt werden, von welchen Adressen die Webseiten eines bestimmten Verzeichnisses gelesen werden dürfen. | ||
* <b>Absicherung durch eine Firewall:</b> Wird auf dem Rechner eine Firewall betrieben, so kann diese | * <b>Absicherung durch eine Firewall:</b> Wird auf dem Rechner eine Firewall betrieben, so kann diese derart konfiguriert werden, dass Apache nicht von aussen (also über das Rechnernetz) kontaktiert werden kann. Die Webseiten können dann nur vom lokalen Rechner aus betrachtet werden. | ||
* <b>Passwortabsicherung einzelner Verzeichnisse:</b> Im zu schützenden Verzeichnis wird eine Datei mit dem Namen "[[.htaccess]]" angelegt und dort angegeben, dass dieses Verzeichnis erst nach einer vorherigen Authentifizierung durch Name und Passwort gelesen werden kann. Apache wertet diese Datei aus und zeigt allen Surfern, die Dateien aus diesem Verzeichnis mit ihrem Webbrowser ansehen möchten, ein Anmeldefenster. | * <b>Passwortabsicherung einzelner Verzeichnisse:</b> Im zu schützenden Verzeichnis wird eine Datei mit dem Namen "[[.htaccess]]" angelegt und dort angegeben, dass dieses Verzeichnis erst nach einer vorherigen Authentifizierung durch Name und Passwort gelesen werden kann. Apache wertet diese Datei aus und zeigt allen Surfern, die Dateien aus diesem Verzeichnis mit ihrem Webbrowser ansehen möchten, ein Anmeldefenster. | ||
== Absicherung des Apache HTTP Servers == | == Absicherung des Apache HTTP Servers == | ||
Einrichtung von Zugriffskontrollen und Authentifizierung auf dem | Einrichtung von Zugriffskontrollen und Authentifizierung auf dem Apache HTTP Server. | ||
Der Apache HTTP Server ist der beliebteste Webserver, der viele integrierte Sicherheitsmechanismen bietet, u. a. | Der Apache HTTP Server ist der beliebteste Webserver, der viele integrierte Sicherheitsmechanismen bietet, u. a. | ||
* | * Rechnerbasierte Rechnernetzzugriffskontrolle (über die Direktiven "order", "allow" und "deny") | ||
* Kontrolle darüber, ob und wo lokale Benutzer CGI-Skripte laufen lassen können. | * Kontrolle darüber, ob und wo lokale Benutzer CGI-Skripte laufen lassen können. | ||
* Kontrolle darüber, ob und wie lokale Benutzer die Einstellungen ausser Kraft setzen können. | * Kontrolle darüber, ob und wie lokale Benutzer die Einstellungen ausser Kraft setzen können. | ||
Einige wichtige Optionen (Direktive "Options") sind die folgenden. | Einige wichtige Optionen (Direktive "Options") sind die folgenden. | ||
{| class= | |||
{| class=wiki | |||
| <tt>ExecCGI </tt> || Legt fest, dass CGI-Skripte unter dieser Verzeichnishierarchie ausgeführt werden können. Das [[Common Gateway Interface]] / CGI ist plattform- und sprachenneutral, CGI-Programme können deshalb in jeder Sprache geschrieben werden, z. B. BASIC, C/C++, Perl, Python, TCL, Shell-Sprachen (sh, bash usw.). | | <tt>ExecCGI </tt> || Legt fest, dass CGI-Skripte unter dieser Verzeichnishierarchie ausgeführt werden können. Das [[Common Gateway Interface]] / CGI ist plattform- und sprachenneutral, CGI-Programme können deshalb in jeder Sprache geschrieben werden, z. B. BASIC, C/C++, Perl, Python, TCL, Shell-Sprachen (sh, bash usw.). | ||
|- | |- | ||
Zeile 79: | Zeile 84: | ||
|- | |- | ||
| <tt>Includes</tt> || Bestimmt, dass der Apache HTTP Server sogenannte Server Side Includes / SSI verarbeitet, ein System, mit dem Webmaster aktuelle Informationen in HTML-Dokumente einfügen können, ohne CGI-Programme schreiben zu müssen. Um Standard-SSI ohne die exec-Direktive zu aktivieren, wird die Optionenzeile wie folgt geändert. | | <tt>Includes</tt> || Bestimmt, dass der Apache HTTP Server sogenannte Server Side Includes / SSI verarbeitet, ein System, mit dem Webmaster aktuelle Informationen in HTML-Dokumente einfügen können, ohne CGI-Programme schreiben zu müssen. Um Standard-SSI ohne die exec-Direktive zu aktivieren, wird die Optionenzeile wie folgt geändert. | ||
Options IncludesNOEXEC | Options IncludesNOEXEC | ||
|- | |- | ||
| <tt>Indexes</tt> || Ermöglicht eine | | <tt>Indexes</tt> || Ermöglicht eine Inhaltsauflistung des Verzeichnisses, wenn der Apache HTTP Server keine Standardseite findet. | ||
|} | |} | ||
{{cat|Apache HTTP Server}} | {{cat|Apache HTTP Server}} |
Version vom 5. August 2009, 19:01 Uhr
Beinahe alle Einstellungen des Apache HTTP Server werden durch die Konfigurationsdatei "httpd.conf" gesteuert: Servername, Orte von Webverzeichnissen und Logdateien, die Zugriffsrechte, die Integration von PHP usw. Bei den meisten Linux-Distributionen gibt es nicht bloss eine Konfigurationsdatei "httpd.conf", sonderen gleich ein ganzes Rudel von Dateien. Das macht zwar jede einzelne Datei übersichtlicher und ermöglicht eine modulare Konfiguration, gleichzeitig erschwert es aber den Überblick.
Bei Novell- bzw. Opensuse-Distributionen kommt dazu, dass viele Apache-Konfigurationsdateien bei jedem Start neu erstellt werden. Eigene Änderungen sollten dort in der Datei "/etc/apache2/httpd.conf.local" durchgeführt werden. Damit diese Datei berücksichtigt wird, muss dieser Dateiname in die Variable "APACHE_CONF_INCLUDE_FILES" in der Datei "/etc/sysconfig/apache2" eingefügt werden.
Linux-Distribution | Pfad zur Datei "httpd.conf" | Standardverzeichnis für Webdateien |
---|---|---|
Fedora, Red Hat | /etc/httpd/conf/* | /var/www/html |
Debian, Ubuntu | /etc/apache2/* | /var/www |
Novell, Opensuse | /etc/apache2/* | /var/www/htdocs |
Linux XAMPP | /opt/lampp/etc/httpd.conf | /opt/lampp/htdocs |
Änderungen an der Konfiguration werden erst wirksam, wenn der Apache HTTP Server neu gestartet wird.
Zu beachten ist, dass der Apache HTTP Server unter einem eigenen Benutzerkontro läuft (oft "nobody", bei SUSE "wwwrun"). Bei allen Webdateien müssen die Zugriffsrechte so eingestellt werden, dass dieser Benutzer und damit auch Apache sie lesen kann.
Grundeinstellungen
Zu den wichtigsten Einstellungen gehören die folgenden.
Parameter | Beschreibung | ||||||
---|---|---|---|---|---|---|---|
ServerName | Netzwerkname des Rechners, auf dem der Apache HTTP Server läuft. Unter diesem Namen ist er von anderen Rechnern aus im Rechnernetz erreichbar. Fehlt die Einstellung, so versucht Apache, den Netzwerknamen selbst herauszufinden. | ||||||
DocumentRoot | Das Verzeichnis, in dem sich die Webdateien (*.html, *.php usw.)befinden. | ||||||
LoadModule | Wenn der Apache HTTP Server so kompiliert wurde, dass er zur Laufzeit Module laden kann (das ist meist der Fall), so sind dafür "LoadModule"-Anweisungen erforderlich, die beispielsweise wie folgt aussehen.
LoadModule php5_module /usr/lib64/apache2/mod_php5.so | ||||||
AddDefaultCharset | Der Zeichensatz der Webdateien. | ||||||
<Directory "xxx"> | Dieser aus mehreren Zeilen bestehende Block beschreibt alle Eigenschaften eines Webverzeichnisses. "<Directory />" enthält die Standardeinstellungen, die unter anderem auch für "DocumentRoot" gelten. Der "<Directory>"-Block endet mit "</Directory>" und kann beispielsweise wie folgt aussehen.
<Directory "verzeichnis"> ... AllowOverride AuthConfig FileInfo Option Indexes </Directory> Innerhalb des Blocks steuern verschiedene Optionen, was in diesem Verzeichnis erlaubt bzw. verboten ist und wer darauf Zugriff hat.
| ||||||
DirectoryIndexes | Angabe einer oder mehrerer Dateien, nach denen der Apache HTTP Server sucht, wenn im Webbrowser nur ein Verzeichnis angegeben wird. Eine übliche Einstellung lautet "index.html index.php main.php default.php". Wird im Webbrowser nun der URL "http://rechnername/verzeichnis/" eingegeben, so sucht Apache für dieses Verzeichnis nach den angegebenen Dateien und liefert die erste passende Datei. |
Passwortschutz für Webverzeichnisse
Sobald der Apache HTTP Server läuft, hat jeder im Rechnernetz bzw. Internet Zugang zu allen von Apache verarbeitbaren Webseiten. Der Zugriff kann auf drei Arten eingeschränkt werden.
- Absicherung in der Datei "httpd.conf": In der Datei "httpd.conf" kann genau eingestellt werden, von welchen Adressen die Webseiten eines bestimmten Verzeichnisses gelesen werden dürfen.
- Absicherung durch eine Firewall: Wird auf dem Rechner eine Firewall betrieben, so kann diese derart konfiguriert werden, dass Apache nicht von aussen (also über das Rechnernetz) kontaktiert werden kann. Die Webseiten können dann nur vom lokalen Rechner aus betrachtet werden.
- Passwortabsicherung einzelner Verzeichnisse: Im zu schützenden Verzeichnis wird eine Datei mit dem Namen ".htaccess" angelegt und dort angegeben, dass dieses Verzeichnis erst nach einer vorherigen Authentifizierung durch Name und Passwort gelesen werden kann. Apache wertet diese Datei aus und zeigt allen Surfern, die Dateien aus diesem Verzeichnis mit ihrem Webbrowser ansehen möchten, ein Anmeldefenster.
Absicherung des Apache HTTP Servers
Einrichtung von Zugriffskontrollen und Authentifizierung auf dem Apache HTTP Server.
Der Apache HTTP Server ist der beliebteste Webserver, der viele integrierte Sicherheitsmechanismen bietet, u. a.
- Rechnerbasierte Rechnernetzzugriffskontrolle (über die Direktiven "order", "allow" und "deny")
- Kontrolle darüber, ob und wo lokale Benutzer CGI-Skripte laufen lassen können.
- Kontrolle darüber, ob und wie lokale Benutzer die Einstellungen ausser Kraft setzen können.
Einige wichtige Optionen (Direktive "Options") sind die folgenden.
ExecCGI | Legt fest, dass CGI-Skripte unter dieser Verzeichnishierarchie ausgeführt werden können. Das Common Gateway Interface / CGI ist plattform- und sprachenneutral, CGI-Programme können deshalb in jeder Sprache geschrieben werden, z. B. BASIC, C/C++, Perl, Python, TCL, Shell-Sprachen (sh, bash usw.). |
FollowSymLinks | Ermöglicht entfernten Benutzern, symbolischen Verknüpfungne zu folgen, indem sie einfach auf ihre Hyperlinks klicken. |
Includes | Bestimmt, dass der Apache HTTP Server sogenannte Server Side Includes / SSI verarbeitet, ein System, mit dem Webmaster aktuelle Informationen in HTML-Dokumente einfügen können, ohne CGI-Programme schreiben zu müssen. Um Standard-SSI ohne die exec-Direktive zu aktivieren, wird die Optionenzeile wie folgt geändert.
Options IncludesNOEXEC |
Indexes | Ermöglicht eine Inhaltsauflistung des Verzeichnisses, wenn der Apache HTTP Server keine Standardseite findet. |