Welche Apache-Konfigurationsdateien sollten nicht zulassen. Installation und Konfiguration des Apache-Servers. HTTP-Anfragen auf HTTPS umleiten

💖 Gefällt es dir? Teilen Sie den Link mit Ihren Freunden

Websitehosting

Kann auf vier Arten implementiert werden:

    Standardmäßig im Ordner /var/www/html. Zugriff ist http://localhost/

    Haupthosting-Einstellungen. Beispiel: http://localhost/phpmyadmin

    In jedem Ordner, der das virtuelle Hosts-Modul verwendet. Zum Beispiel http://mysite/

    Im public_html-Ordner des Benutzers (userdir-Modul). Beispiel: http://localhost/~Benutzername

Installation

Um Apache zu installieren, führen Sie in einem Terminal Folgendes aus:

sudo apt-get install apache2

Einstellungen

Um Änderungen an den Einstellungen zu übernehmen, müssen Sie den Apache-Daemon neu starten: sudo service apache2 restart

In Ubuntu ist die endgültige Konfigurationsdatei (Apache2.conf) in mehrere Dateien unterteilt, die sich in verschiedenen Unterverzeichnissen befinden. Weitere Details finden Sie in den Dateikommentaren. apache2.conf.

/etc/apache2/ |-- apache2.conf | `--ports.conf |--mods-enabled | |-- *.load | `-- *.conf |-- conf-enabled | `-- *.conf `-- sites-enabled `-- *.conf

Moduleinstellungen befinden sich im Verzeichnis /etc/apache2/mods-available. Um Module (Moduleinstellungen) zu aktivieren oder zu deaktivieren, verwenden Sie die entsprechenden Befehle a2enmod oder a2dismod. Beispiel für Modulanbindung:

sudo a2enmod< mod-name>

Ihre Einstellungen sollten in Dateien im Verzeichnis gespeichert werden /etc/apache2/conf-available. Um Ihre Einstellungen zu aktivieren oder zu deaktivieren, verwenden Sie die entsprechenden Befehle a2enconf oder a2disconf. Ein Beispiel für die Verbindung einer Datei mit Ihren eigenen Einstellungen:

sudo a2enconf< config-name>

Die Einstellungen des virtuellen Hosts sollten in Dateien im Verzeichnis gespeichert werden /etc/apache2/sites-available. Um virtuelle Hosts zu verbinden, verwenden Sie die entsprechenden Befehle a2ensite oder a2dissite. Beispiel für die Anbindung eines virtuellen Hosts:

sudo a2ensite< site-name>

Standardkodierung

Um die Standardkodierung anzugeben, verwenden Sie die AddDefaultCharset-Direktive in der Datei /etc/apache2/conf-available/charset.conf(oder kommentieren Sie die entsprechende Zeile aus):

AddDefaultCharset UTF-8

Virtuelle Hosts

Die Konfigurationsdateien des virtuellen Hosts werden in gespeichert /etc/apache2/sites-available/*.conf. Standardmäßig ist in Apache bereits ein virtueller Host konfiguriert. Die Einstellungen befinden sich in der Datei 000-default.conf. Sie können diesen virtuellen Host als Beispiel verwenden.

Beispiel für die Einrichtung eines virtuellen Hosts:

#Hostname ServerName host1.server1 #Host-Stammordner DocumentRoot /var/www/host1.server1 #Berechtigung zum Überschreiben aller Anweisungen mit .htaccess AllowOverride All

Benennen Sie die Konfigurationsdatei mit Ihrem Hostnamen host1.server1.conf und speichern Sie sie.

Fügen Sie nach dem Erstellen der Einstellungsdatei Ihren Hostnamen zu /etc/hosts hinzu:

127.0.0.1 host1.server1

Um den erstellten virtuellen Host zu aktivieren, verwenden Sie das Dienstprogramm a2ensite:

sudo a2ensite host1.server1

Die Verbindung zum Host wird auf ähnliche Weise wie beim Dienstprogramm a2dissite getrennt:

sudo a2dissite host1.server1

Module

mod_userdir

Mit dem Modul mod_userdir können Sie Verzeichnisse in den Home-Verzeichnissen von Benutzern zum Speichern von Webseiten verwenden. Standardmäßig sucht Apache im Verzeichnis nach angeforderten Seiten ~/public_html

mkdir ~/public_html

Um mod_userdir zu aktivieren, führen Sie Folgendes aus:

sudo a2enmod Benutzerverzeichnis

und fügen Sie den erforderlichen Benutzer zur Gruppe www-data hinzu:

sudo adduser $USER www-data

Starten Sie dann Apache neu:

Auf die Seiten kann unter http://localhost/~username zugegriffen werden, wobei username der Benutzername ist.

CGI

Wenn Sie CGI-Skripte auf dem Server ausführen möchten, verbinden Sie das CGI-Modul mit dem Befehl

sudo a2enmod cgi

Standardmäßig werden CGI-Skripte im Verzeichnis abgelegt /usr/lib/cgi-bin, aber Sie können sie an einer beliebigen Stelle platzieren, indem Sie dies in Ihren virtuellen Host-Einstellungen angeben, oder global für alle Hosts in der Datei /etc/apache2/conf-enabled/serve-cgi-bin.conf.

Wenn Ihr Server in einem externen Netzwerk betrieben wird, wird aus Sicherheitsgründen dringend empfohlen, CGI-Skripte außerhalb des Stammverzeichnisses des virtuellen Hosts zu platzieren

HTTPS in Apache einrichten

Der Apache-Webserver unterstützt HTTPS vollständig. Um die HTTPS-Unterstützung auf einem bereits installierten Apache zu aktivieren, müssen Sie Folgendes tun.

Erstellen eines Schlüssels und eines SSL-Zertifikats

Die Verwendung selbstsignierter Zertifikate schützt zwar vor passivem Abhören, garantiert den Clients jedoch nicht, dass der Server genau der Server ist, den sie benötigen. Der Vorteil selbstsignierter Zertifikate besteht darin, dass sie kostenlos sind. Ein von einer Zertifizierungsstelle signiertes Zertifikat kostet Geld.

Um einen Schlüssel und ein Zertifikat zu erstellen, geben Sie den folgenden Befehl ein:

Openssl req -new -x509 -days 30 -keyout server.key -out server.pem

Auf die Frage „PEM-Passphrase eingeben:“ antworten wir mit dem Passwort, bestätigen und merken.

Wir beantworten alle weiteren Fragen nach dem Zufallsprinzip. Sie können einfach auf die Eingabetaste klicken und mit den vorgeschlagenen Optionen einverstanden sein. Beantworten Sie die Frage „Allgemeiner Name (z. B. IHR Name):“ nur mit dem Namen der Site, für die wir ein Zertifikat erstellen Beispiel www.example.com.

Nachdem alle Fragen beantwortet wurden, sollten zwei neue Dateien im Verzeichnis erscheinen – server.pem (Schlüssel) und server.crt (Zertifikat).

Um den generierten Schlüssel verwenden zu können, müssen wir das von uns eingegebene Passwort kennen, und Apache wird uns beim Laden danach fragen, aber warum brauchen wir unnötige Fragen von den Daemons? :) Deshalb entfernen wir das Passwort vom Schlüssel:

cp server.key( ,.orig) openssl rsa -in server.key.orig -out server.key rm server.key.orig

Kopieren wir sie nach /etc/ssl und weisen nur dem Administrator Leserechte für die Schlüsseldatei zu:

sudo cp server.pem / etc/ ssl/ certs/ sudo cp server.key / etc/ ssl/ private/ sudo chmod 0600 / etc/ ssl/ private/ server.key

Apache-Setup

Zuerst müssen Sie mod_ssl aktivieren:

sudo a2enmod ssl

Und aktivieren Sie dann die Standard-HTTPS-Einstellungen der Site:

sudo a2ensite default-ssl

Jetzt müssen Sie die Datei mit den Standard-HTTPS-Site-Einstellungen bearbeiten und darin die Pfade zu Ihren Zertifikaten angeben. Die Datei selbst heißt /etc/apache2/sites-enabled/default-ssl (oder /etc/apache2/sites-enabled/default-ssl.conf).

SSLEngine eingeschaltet

Zeile hinzufügen

SSLProtokoll alle -SSLv2

um die Verwendung des alten SSLv2-Protokolls zu deaktivieren.

# Öffentliches Serverzertifikat SSLCertificateFile /etc/ssl/certs/server.pem # Privater Schlüssel des Servers SSLCertificateKeyFile /etc/ssl/private/server.key

Starten Sie jetzt einfach Apache neu:

sudo service apache2 neu starten

Und wenn alle Parameter korrekt angegeben sind, sind Ihre Seiten über HTTPS erreichbar.

Das HTTPS-Protokoll arbeitet auf Port 443. Wenn sich der Server also hinter einem Gateway befindet, müssen Sie diesen Port an ihn weiterleiten.

HTTP-Anfragen auf HTTPS umleiten

Wenn Sie die Verwendung von HTTP deaktivieren möchten, ist es am sinnvollsten, alle HTTP-Anfragen an Seiten an deren HTTPS-Adresse umzuleiten. Machen wir das mit mod_alias. Wenn es nicht aktiviert ist, aktivieren Sie es:

sudo a2enmod alias sudo service apache2 restart

Dann ändern wir die Datei /etc/apache2/sites-enabled/000-default, die für den standardmäßigen virtuellen Host für HTTP-Anfragen verantwortlich ist. Fügen Sie dieser Datei eine Anweisung hinzu

Weiterleiten / https://example.com/

In diesem Fall können alle Verzeichniseinstellungen gelöscht werden, da Ihre Seiten weiterhin nicht über HTTP erreichbar sind.

Das war's, jetzt starten Sie Apache noch einmal neu und stellen Sie sicher, dass Sie beim Zugriff über HTTP automatisch auf die HTTPS-Seite weitergeleitet werden.

Apache ist der beliebteste kostenlose Webserver. Im Jahr 2016 wird es auf 33 % aller Internetseiten verwendet, was etwa 304 Milliarden Websites entspricht. Dieser Webserver wurde bereits 1995 als Ersatz für den beliebten NCSA-Server entwickelt und hat viele seiner Probleme behoben. Gerüchten zufolge stammt sein Name von einer Lücke, da er NCSA-Fehler behob. Jetzt handelt es sich um ein plattformübergreifendes Programm, das Windows, Linux und MacOS unterstützt und ausreichend Flexibilität, Anpassung und Funktionalität bietet. Das Programm ist modular aufgebaut, sodass Sie seine Funktionalität durch Module nahezu unbegrenzt erweitern können.

Sie können Apache unter Linux mit wenigen Befehlen installieren, aber das Programm bietet eine sehr große Anzahl von Einstellungen, die geändert werden können, sowie Module, die, wenn sie aktiviert sind, besser funktionieren. In diesem Artikel wird die Installation und Konfiguration von Apache behandelt. Wir verwenden Ubuntu als Hauptsystem, Sie können diese Schritte jedoch in jeder anderen Distribution wiederholen. Wir werden uns nicht nur mit der Installation des Programms selbst befassen, sondern auch mit der Konfiguration, dem Einrichten virtueller Apache-Hosts und den nützlichsten Modulen.

An dieser Moment, am meisten eine neue Version Programme 2.4; daher wird die Einrichtung von Apache 2.4 in Betracht gezogen. Wie ich bereits sagte, in Linux-Programm Installiert buchstäblich mit ein paar Befehlen. Um unter Ubuntu zu installieren, aktualisieren Sie zunächst das System auf die neueste Version:

Sudo apt-Update
$ sudo apt upgrade

Dann installieren Sie Apache2:

sudo apt install apache2

In anderen Distributionen heißt das Programmpaket entweder this oder httpd und die Installation bereitet Ihnen keine Schwierigkeiten.

Nach Abschluss der Installation müssen Sie den Webserver zum Start hinzufügen, um ihn nach dem Einschalten des Computers nicht manuell zu starten:

sudo systemctl aktiviert Apache2

Apache-Setup

Vorbei sind die Zeiten, in denen die Apache-Konfiguration in einer einzigen Datei gespeichert wurde. Aber es ist richtig: Wenn alles in eigenen Verzeichnissen verteilt ist, ist es einfacher, durch die Konfigurationsdateien zu navigieren.

Alle Einstellungen sind im Ordner /etc/apache/ enthalten:

  • Datei /etc/apache2/apache2.conf Verantwortlich für die Grundeinstellungen
  • /etc/apache2/conf-available/* - zusätzliche Einstellungen Webserver
  • /etc/apache2/mods-available/*- Moduleinstellungen
  • /etc/apache2/sites-available/*- Einstellungen für virtuelle Hosts
  • /etc/apache2/ports.conf- Ports, auf denen Apache läuft
  • /etc/apache2/envvars

Wie Sie bemerkt haben, gibt es zwei Ordner für conf, mods und site. Diese sind verfügbar und aktiviert. Wenn Sie ein Modul oder einen Host aktivieren, wird ein symbolischer Link vom verfügbaren Ordner zum Aktivierungsordner erstellt. Daher ist es besser, Einstellungen in den verfügbaren Ordnern vorzunehmen. Im Allgemeinen könnte man auf diese Ordner verzichten, alles nehmen und auf die altmodische Art und Weise alles in einer Datei ablegen, und alles würde funktionieren, aber das macht jetzt niemand mehr.

Schauen wir uns zunächst die Hauptkonfigurationsdatei an:

vi /eta/apache2/apache2.conf

Auszeit- gibt an, wie lange der Server versucht, die unterbrochene Übertragung oder den Empfang von Daten fortzusetzen. 160 Sekunden werden ausreichen.

Bleib am Leben- ein sehr nützlicher Parameter, mit dem Sie beispielsweise mehrere Dateien in einer Verbindung übertragen können, nicht nur die HTML-Seite, aber auch Bilder und CSS-Dateien.

MaxKeepAliveRequests 100- maximale Anzahl von Anfragen pro Verbindung, je mehr, desto besser.

KeepAliveTimeout 5- Verbindungs-Timeout, normalerweise reichen 5-10 Sekunden aus, um eine Seite zu laden, sodass Sie keine weiteren Einstellungen vornehmen müssen, aber Sie müssen die Verbindung auch nicht unterbrechen, bevor alle Daten geladen sind.

Benutzergruppe- Benutzer und Gruppe, in deren Namen das Programm ausgeführt wird.

HostnameLookups- Schreiben Sie in Protokolle statt in IP-Adressen Domain Namen, ist es besser, es zu deaktivieren, um die Arbeit zu beschleunigen.

LogLevel- Ebene der Fehlerprotokollierung. Standardmäßig wird „warn“ verwendet. Damit sich die Protokolle jedoch langsamer füllen, aktivieren Sie einfach „error“.

Enthalten- Alle Include-Direktiven sind für die Verbindung der oben besprochenen Konfigurationsdateien verantwortlich.

Verzeichnisdirektiven sind für das Festlegen von Zugriffsrechten auf ein bestimmtes Verzeichnis verantwortlich Dateisystem. Die Syntax hier ist:


Parameterwert

Folgende Grundoptionen stehen Ihnen hier zur Verfügung:

AllowOverride– gibt an, ob .htaccess-Dateien aus diesem Verzeichnis gelesen werden sollen; es handelt sich um dieselben Einstellungsdateien und haben dieselbe Syntax. Alle – alles zulassen, Keine – diese Dateien nicht lesen.

Dokument Root- Legt fest, aus welchem ​​Ordner Dokumente entnommen werden sollen, damit sie dem Benutzer angezeigt werden

Optionen– gibt an, welche Webserverfunktionen in diesem Ordner zulässig sein sollen. Zum Beispiel „Alle“ – alles zulassen, „FollowSymLinks“ – symbolischen Links folgen, „Indizes“ – den Inhalt des Verzeichnisses anzeigen, wenn keine Indexdatei vorhanden ist.

Erfordern- legt fest, welche Benutzer Zugriff auf dieses Verzeichnis haben. Alles verweigern verlangen – allen verweigern, Alles genehmigen verlangen – allen erlauben. Sie können anstelle von „all“ die Direktive „user“ oder „group“ verwenden, um den Benutzer explizit anzugeben.

Befehl- Ermöglicht Ihnen, den Zugriff auf das Verzeichnis zu steuern. Akzeptiert zwei Werte: Allow,Deny – für alle außer den angegebenen zulassen oder Deny,Allow – für alle außer den angegebenen zulassen..ru.

Alle diese Anweisungen werden hier nicht verwendet, da wir mit den Standardwerten zufrieden sind, aber in .htaccess-Dateien können sie sehr nützlich sein.

Uns bleibt die Datei /etc/apache2/ports.conf:

Es enthält nur eine Direktive, Listen, die dem Programm mitteilt, auf welchem ​​Port es arbeiten soll.

Die letzte Datei ist /etc/apache2/envvars. Sie werden sie wahrscheinlich nicht verwenden, sie enthält Variablen, die in anderen Konfigurationsdateien verwendet werden können.

Einrichten eines Apache-Servers über htaccess

Mit .htaccess-Dateien können Sie Ihren Ubuntu-Webserver so konfigurieren, dass er sich in einem bestimmten Verzeichnis verhält. Alle in dieser Datei angegebenen Anweisungen werden so ausgeführt, als wären sie in ein Tag eingeschlossen wenn sie in der Hauptdatei wären.

Es ist wichtig zu beachten, dass die Einstellungen für diesen Ordner in der Haupt- oder virtuellen Hostdatei keine Anweisungen enthalten dürfen, damit der Server Anweisungen von .htaccess lesen kann AllowOverride Keine Damit alle Einstellungen funktionieren, die Sie benötigen AllowOverride All.

Ansonsten kann hier jede beliebige Konfiguration des Apache-Servers vorgenommen werden, von der Aktivierung von Modulen bis hin zur einfachen Änderung des Ordnerzugriffs. Da wir bereits alle Parameter berücksichtigt haben, nennen wir hier nur ein paar Beispiele:

Befehl verweigern, zulassen
Abgelehnt von allen

Verweigert jedem den Zugriff auf diesen Ordner. Dies ist wichtig für die Anwendung bei Konfigurationsordnern. Am häufigsten wird .htaccess verwendet, um mit dem Modul mod_rewrite zu arbeiten, mit dem Sie Anfragen im laufenden Betrieb ändern können:

RewriteEngine aktiviert
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]

Dies ist jedoch ein sehr umfassendes Thema und würde den Rahmen dieses Artikels sprengen.

Konfigurieren von Apache-Modulen

Wie ich bereits sagte, ist Apache ein modulares Programm, dessen Funktionalität durch Module erweitert werden kann. Alle verfügbaren Loader-Module und Modulkonfigurationsdateien befinden sich im Ordner /etc/apache/mods-available. Und in /etc/Apache/mods-enable aktiviert.

Sie müssen den Inhalt dieser Ordner jedoch nicht analysieren. Die Konfiguration von Apache 2.4 durch das Hinzufügen von Modulen erfolgt über spezielle Befehle. Sie können alle laufenden Module mit dem Befehl anzeigen:

Sie können das Modul mit dem Befehl aktivieren:

sudo a2enmod Modulname

Und deaktivieren:

sudo a2dismod Modulname

Nachdem Sie Module aktiviert oder deaktiviert haben, müssen Sie Apache neu starten:

sudo systemctl starte Apache2 neu

Wenn einer dieser Befehle ausgeführt wird, wird im Verzeichnis „mods-available“ ein symbolischer Link zu einer Moduldatei mit der Erweiterung „load“ erstellt oder gelöscht. Sie können sich den Inhalt dieser Datei ansehen, es gibt nur eine Zeile. Zum Beispiel:

vi /etc/apache2/mods-available/deflate.load

Das bedeutet, dass das Modul einfach durch Hinzufügen dieser Zeile zur Datei apache2.conf aktiviert werden könnte. Aber es ist üblich, genau das zu tun, um Verwirrung zu vermeiden.

Die Moduleinstellungen befinden sich im selben Ordner, nur in einer Datei mit der Erweiterung .conf anstelle von „load“. Schauen wir uns zum Beispiel die Einstellungen desselben Moduls für die Deflate-Komprimierung an:

vi /etc/apache2/mods-available/deflate.conf

Bei den Dateien im Ordner „conf-available“ handelt es sich um dieselben Module, nur dass sie getrennt von Apache installiert werden. Hierbei kann es sich um Konfigurationsdateien zur Aktivierung des PHP-Moduls oder einer anderen Programmiersprache handeln. Hier funktioniert alles genau gleich, nur die Befehle zum Aktivieren und Deaktivieren dieser Module unterscheiden sich geringfügig:

a2enconf Modulname

a2disconf-Modulname

Wie Sie gesehen haben, ist die Aktivierung von Modulen sehr einfach. Lassen Sie uns einige notwendige, aber nicht standardmäßig aktivierte Module aktivieren:

sudo a2enmod läuft ab
$ sudo a2enmod-Header
$ sudo a2enmod umschreiben
$ sudo a2enmod ssl

Die Expires- und Header-Module reduzieren die Belastung des Servers. Sie geben den Header „Not Modified“ zurück, wenn sich das Dokument seit der letzten Anfrage nicht geändert hat. Mit dem Ablaufmodul können Sie die Zeit festlegen, für die der Browser das empfangene Dokument zwischenspeichern soll. Mit Rewrite können Sie angeforderte Adressen im Handumdrehen ändern, was beim Erstellen von CNC-Links usw. sehr nützlich ist. Und die letzte Möglichkeit ermöglicht die Unterstützung der SSL-Verschlüsselung. Vergessen Sie nicht, Apache2 neu zu starten, nachdem Sie die Einstellungen abgeschlossen haben.

Konfigurieren von Apache Virtual Hosts

Es wäre nicht ganz praktisch, wenn nur eine Website auf einer physischen Maschine gehostet werden könnte. Apache kann Hunderte von Websites auf einem einzigen Computer unterstützen und für jede den richtigen Inhalt bereitstellen. Hierzu werden virtuelle Hosts verwendet. Der Server ermittelt, an welche Domäne die Anfrage geht und stellt den erforderlichen Inhalt aus dem Ordner dieser Domäne bereit.

Die Einstellungen für Apache-Hosts befinden sich im Ordner /etc/apache2/hosts-available/. Um einen neuen Host zu erstellen, erstellen Sie einfach eine Datei mit einem beliebigen Namen (es ist besser, mit dem Hostnamen zu enden) und füllen Sie diese mit den erforderlichen Daten. Sie müssen alle diese Parameter in eine Direktive einschließen VirtualHost. Zusätzlich zu den hier besprochenen Parametern werden folgende verwendet:

  • Servername- Primärer Domainname
  • ServerAlias- zusätzlicher Name, unter dem die Seite erreichbar sein wird
  • ServerAdmin- Administrator-E-Mail
  • Dokument Root- Ordner mit Dokumenten für diese Domain

Zum Beispiel:

vi /etc/apache2/sites-available/test.site.conf

Ein Webserver ist ein sehr komplexes Softwareprodukt, das darauf läuft verschiedene Plattformen und auf verschiedenen Betriebssystemen. Für korrekte Bedienung V installiertes System es muss konfiguriert werden.

Standardmäßig befinden sich die Apache-Einstellungen in der Datei „ httpd.conf„im Katalog“ conf".

Besonderes Augenmerk sollten Sie auf den Pfad zu den Dateien in den Apache- und PHP-Konfigurationsdateien legen. Häufig müssen Sie Pfade zu verschiedenen Verzeichnissen und Dateien angeben. UNIX- und Windows-Betriebssysteme verwenden unterschiedliche Verzeichnistrennzeichen. UNIX verwendet einen Schrägstrich (/) und Windows einen Backslash (\). Einige Apache- und PHP-Anweisungen funktionieren mit beiden Arten von Verzeichnistrennzeichen. Da Apache und PHP jedoch ursprünglich für UNIX entwickelt wurden, können Sie durch die Verwendung ihres „nativen“ Formats eine Reihe von Problemen vermeiden. Daher sind die Pfade in den Konfigurationsdateien „ httpd.conf" Und " php.ini" Es wird empfohlen, im UNIX-Format durch einen Schrägstrich zu schreiben - „/“.

Z.B:
ScriptAlias ​​​​"/php_dir/" "c:/php/" Dateianweisungen httpd.conf:

Hafen- Sätze TCP-Port, die von Apache zum Herstellen einer Verbindung verwendet wird. Standardmäßig ist Port 80 angegeben. Der Port kann auch in der Direktive angegeben werden Servername.
Port 80 Der einzige Grund, einen nicht standardmäßigen Port festzulegen, besteht darin, dass Sie keine Berechtigung zur Verwendung des Standardports haben. Bei Verwendung eines nicht standardmäßigen Ports wie 8080 sollte die Portnummer in der Adresse angegeben werden. http://localhost:8080/".

ServerAdmin- enthält die angegebene Adresse Email Webserver-Administrator. Dies ist die Adresse, die bei Serverfehlern angezeigt wird.
ServerAdmin [email protected] Servername- enthält den angegebenen Computernamen für den Server.
Servername localhost:80 ServerRoot– verweist auf das Verzeichnis, das die Dateien des Apache-Webservers enthält.
ServerRoot „C:/web_server/apache“ Dokument Root– definiert das Verzeichnis, in dem sich die Website-Dateien befinden.
DocumentRoot „C:/web_server/apache/htdocs“ Container

Der Geltungsbereich der Anweisungen in diesem Container erstreckt sich auf alle Dateien und Unterverzeichnisse innerhalb des in der Anweisung angegebenen Verzeichnisses Dokument Root.

Optionen FollowSymLinks Enthält Indizes
AllowOverride All
Richtlinie AllowOverride auf Wert setzen ALLE, ermöglicht es Ihnen, den Wert der Hauptkonfigurationsdatei zu überschreiben. httpd.conf„in Dateien“ .htaccess".

Richtlinie Optionen FollowSymLinks Ermöglicht Apache, symbolischen Links zu folgen.

Richtlinie Optionen umfassen ermöglicht die Ausführung von SSI-Anweisungen (Server Side Includes) im Code von Website-Seiten.

Richtlinie Optionsindizes Gibt an, dass der Inhalt eines Verzeichnisses zurückgegeben werden soll, wenn die Indexdatei fehlt.

VerzeichnisIndex- enthält eine spezifizierte Liste von Indexdateien, die beim Zugriff auf ein Verzeichnis ohne Angabe eines Dateinamens angezeigt werden sollen.
DirectoryIndex index.html index.htm index.php Direktive ScriptAlias​​wird verwendet, um einen Alias ​​für das Verzeichnis zu erstellen „ /cgi-bin/", das CGI-Programme und Skripte enthält.
ScriptAlias ​​/cgi-bin/ „C:/web_server/apache/cgi-bin/“ Als nächstes müssen Sie die Rechte und Einschränkungen für das Verzeichnis konfigurieren cgi-bin.

AllowOverride Keine
OptionsExecCGI
Befehl erlauben, verweigern
Von allen zulassen
Diese Aktion ist notwendig, um sicherzustellen, dass Verzeichnisoptionen nicht geändert werden, da dies zu Sicherheitsproblemen führen könnte.

Richtlinie AllowOverride Keine sagt, dass die Optionen in diesem Verzeichnis nicht durch Dateien überschrieben werden können „ .htaccess".

Richtlinie OptionsExecCGI Ermöglicht die Ausführung von CGI-Skripten.

Richtlinien Bestellung erlauben, leugnen Und Von allen zulassen Zugriff auf das Verzeichnis erlauben.

AddHandler– zwingt Apache, Dateien mit den Erweiterungen „zu berücksichtigen“ exe" Und " Schläger", wie CGI-Skripte.
AddHandler CGI-Skript .bat .exe Standardtyp Legt den Header von Dateien fest, deren Typ nicht anhand der Erweiterung bestimmt werden kann. In diesem Fall werden alle unbekannten Dateien als normale Textdateien behandelt. Um alle unbekannten Dateierweiterungen als HTML zu verarbeiten, ändern Sie die Anweisung wie folgt:
Standardtyp text/html AddDefaultCharset– legt die Standardkodierung fest, wenn die Kodierung nicht im Kopf des HTML-Dokuments angegeben ist.
AddDefaultCharset Windows-1251

Apache HTTP Server ist ein komplexes Softwareprodukt, das auf verschiedenen Plattformen und Betriebssystemen auf der ganzen Welt läuft. Damit es auf dem installierten System ordnungsgemäß funktioniert, muss es daher konfiguriert werden.
Standardmäßig befinden sich die Apache-Einstellungen in der Datei httpd.conf im Verzeichnis conf. Im Folgenden werden die Hauptanweisungen der Datei httpd.conf und ihre häufig verwendeten Bedeutungen beschrieben.

Bearbeiten der Datei httpd.conf

1. Um das mod_rewrite-Modul zu laden, suchen Sie diese Zeile und kommentieren Sie sie aus (entfernen Sie das „#“-Symbol am Anfang der Zeile):
LoadModule rewrite_module module/mod_rewrite.so
2. Um den PHP-Interpreter zu laden, müssen Sie die folgende Zeile am Ende des Modulladeblocks hinzufügen:
LoadModule php5_module „C:/php/php5apache2_2.dll“
3. Definieren Sie das Verzeichnis, das die Konfiguration enthält PHP-Datei indem Sie die folgende Zeile hinzufügen:
PHPIniDir „C:/php“
4. Suchen Sie die Zeile und kommentieren Sie sie aus:
Servername localhost:80
5. Suchen Sie die Zeile:
DocumentRoot „C:/Programme/Apache Software Foundation/Apache2.2/htdocs“
Weisen Sie das Stammverzeichnis für die Site-Verwaltung zu (Sie haben es bereits etwas früher erstellt):
DocumentRoot „C:/apache“
6. Finden Sie diesen Block:

Optionen FollowSymLinks
AllowOverride Keine
Befehl verweigern, zulassen
Abgelehnt von allen

Und ersetzen Sie es durch Folgendes:

Zu den Optionen gehören Indizes FollowSymLinks
AllowOverride All
Von allen zulassen

7. Löschen oder kommentieren Sie den ursprünglichen Verzeichniskontrollblock aus (wir werden ihn nicht benötigen), der ohne Kommentare etwa so aussieht:

Optionsindizes FollowSymLinks
AllowOverride Keine
Befehl erlauben, verweigern
Von allen zulassen

8. Finden Sie den Block:

DirectoryIndex index.html

Ersetzen Sie es durch:

DirectoryIndex index.html index.htm index.shtml index.php

9. Suchen Sie die Zeile:
Fehlerprotokoll „logs/error.log“
Ersetzen Sie es durch Folgendes (in diesem Fall ist es bequemer, die Fehlerdatei des globalen Servers anzuzeigen):
ErrorLog „C:/apache/error.log“
10. Finden Sie die Zeile:
CustomLog „logs/access.log“ allgemein
Ändern:
CustomLog „C:/apache/access.log“ allgemein
11. Für SSI-Betrieb (serverseitige Aktivierung) folgenden Zeilen, befindet sich im Block , müssen Sie Folgendes finden und auskommentieren:
AddType text/html .shtml
AddOutputFilter ENTHÄLT .shtml
12. Fügen Sie unten im selben Block hinzu , zwei Linien:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
13. Suchen Sie abschließend die Zeilen und kommentieren Sie sie aus:
Fügen Sie conf/extra/httpd-autoindex.conf ein
Fügen Sie conf/extra/httpd-vhosts.conf ein
Fügen Sie conf/extra/httpd-manual.conf ein
Fügen Sie conf/extra/httpd-default.conf ein
Speichern Sie die Änderungen und schließen Sie die Datei „httpd.conf“.

Öffnen Sie nun die Datei „httpd-vhosts.conf“, die sich im Verzeichnis „conf\extra“ befindet, und nehmen Sie darin folgende Änderungen vor:

Die vorhandenen Beispielblöcke für virtuelle Hosts sollten auskommentiert oder gelöscht und Folgendes eingefügt werden:

DocumentRoot „C:/apache/localhost/www“
Servername localhost
ErrorLog „C:/apache/localhost/error.log“
CustomLog „C:/apache/localhost/access.log“ allgemein

Beispiel für die Erstellung eines virtuellen Hosts

Wenn Sie Ihre eigenen virtuellen Hosts installieren müssen, gehen Sie wie folgt vor:

Öffnen Sie die Datei „httpd-vhosts.conf“ und erstellen Sie darin einen Block mit etwa folgendem Inhalt:

# Der Ordner, in dem sich das Stammverzeichnis Ihres Hosts befindet.
DocumentRoot „C:/apache/test.ru/www“
# Die Domäne, über die Sie auf den virtuellen Host zugreifen können.
Servername test.ru
# Alias ​​(zusätzlicher Name) der Domain.
ServerAlias ​​​​www.test.ru
# Die Datei, in die Fehler geschrieben werden.
Fehlerprotokoll „C:/apache/test.ru/error.log“
# Host-Zugriffsprotokolldatei.
CustomLog „C:/apache/test.ru/access.log“ allgemein

Erstellen Sie dann im Verzeichnis „Apache“ einen Ordner „test.ru“ (einfach so, mit einem Punkt), in dem wiederum ein Ordner „www“ erstellt wird.

Der nächste Schritt beim Erstellen eines virtuellen Hosts besteht darin, die Datei C:\WINDOWS\system32\drivers\etc\hosts zu ändern Betriebssystem. Offen Diese Datei und füge zwei Zeilen hinzu:
127.0.0.1 test.ru
127.0.0.1 www.test.ru

Starten Sie nun den Apache-Server mit der Verknüpfung „Neustart“ im „Start“-Menü neu, öffnen Sie den Browser, geben Sie test.ru oder www.test.ru in die Adressleiste ein und Sie befinden sich in Ihrem virtuellen Host. Seien Sie vorsichtig, jetzt können Sie nur dann zur ursprünglichen Site mit dem Namen des virtuellen Hosts (www.test.ru, falls vorhanden) gelangen, indem Sie die Zeile 127.0.0.1 www.test.ru oben auskommentieren oder löschen -erwähnte „hosts“-Datei.

Die Apache-Dokumentation ist bei laufendem Server unter http://localhost/manual/ verfügbar.

Die Installation und Konfiguration des Apache-Webservers ist abgeschlossen.

Erstellen von Batchdateien zum Starten und Stoppen von Diensten

Stimmen Sie zu, dass das manuelle Bearbeiten der Datei „hosts“ bei jedem Start von Diensten nicht bequem ist. Für einen bequemeren, gleichzeitigen Start von Apache- und MySQL-Diensten und das Ändern der Datei „hosts“ erstellen wir zwei Batchdateien: zum Starten und Anhalten, das wird alles ausführen Routinearbeit automatisch.

Wenn Sie virtuelle Hosts verwenden, müssen Sie zwei Dateien im Verzeichnis C:\Apache erstellen: vhosts-off.txt – enthält den ursprünglichen Inhalt der Datei „hosts“ und vhosts-on.txt – enthält alle virtuellen Hosts. Bitte beachten Sie, dass Sie beim Erstellen neuer virtueller Hosts diese zur Datei vhosts-on.txt und nicht zu C:\WINDOWS\system32\drivers\etc\hosts hinzufügen müssen. Schauen Sie sich die Beispiele unten an.

Datei vhosts-off.txt (kann eine einzelne Zeile enthalten):
127.0.0.1 lokaler Host

Beispiel einer vhosts-on.txt-Datei mit den virtuellen Hosts www.test.ru und test.ru:

127.0.0.1 lokaler Host
127.0.0.1 www.test.ru
127.0.0.1 test.ru

Erstellen Sie im selben Verzeichnis C:\Apache zwei Batchdateien: start-webserver.bat – um Dienste zu starten und die Datei „hosts“ zu ersetzen, und stop-webserver.bat – um Dienste zu stoppen und die Datei „hosts“ zu löschen.

Datei start-webserver.bat starten:

@echo aus
Echo.
Wenn nicht vorhanden, C:\Apache\vhosts-on.txt, gehe zu no_vhosts
echo Erstellen Sie virtuelle Hosts:
Kopieren Sie /v /y C:\Apache\vhosts-on.txt C:\WINDOWS\system32\drivers\etc\hosts
Echo.
:no_vhosts
NET startet Apache2.2
NET MySQL starten

Stoppen Sie die Datei stop-webserver.bat:

@echo aus
Echo.
Wenn nicht vorhanden, C:\Apache\vhosts-off.txt, gehe zu no_vhosts
echo Hosts-Datei wiederherstellen:
Kopieren Sie /v /y C:\apache\vhosts-off.txt C:\WINDOWS\system32\drivers\etc\hosts
Echo.
:no_vhosts
NET stoppt Apache2.2
NET MySQL stoppen

Wenn Sie keine virtuellen Hosts verwenden oder Dienste starten möchten, ohne die Datei „hosts“ zu ersetzen, entfernen Sie einfach die Dateien vhosts-on.txt und vhosts-off.txt aus dem Verzeichnis C:\Apache.

Zuvor in unserer Serie über Linux-Grundlagen Wir haben uns die Grundlagen der Arbeit mit dem Apache-Webserver angesehen. Es ist der weltweit am häufigsten genutzte Webserver im Internet (Stand Juli 2015 hatte Apache einen Anteil von 38 %, IIS 26 % und Nginx 15 %). Je mehr Sie also darüber wissen und verstehen, wie es funktioniert, desto erfolgreicher werden Sie beim Hacken sein.

Heute werden wir uns mit den Grundlagen der Einrichtung eines Apache-Servers befassen. Wie wir bereits geschrieben haben, erfolgt die Konfiguration und Konfiguration fast aller Anwendungen unter Linux oder Unix über Konfigurationsdateien, bei denen es sich um Klartext handelt. Apache ist hier keine Ausnahme. Daher konzentrieren wir uns in diesem Artikel auf die Konfigurationsdatei apache2.conf, die sich im Verzeichnis /etc/apache2 befindet.

Schritt 1: Starten Sie Apache2

Beginnen wir mit dem Starten von Apache2. Lassen Sie uns dies über die grafische Kali-Shell tun, indem wir zu Anwendungen -> Kali Linux -> Systemdienste -> HTTP -> Apache2-Start gehen, wie im Screenshot unten gezeigt.

Oder führen Sie es über aus Befehlszeile indem Sie den folgenden Befehl in das Terminal eingeben

Kali >service apache2 start

Dadurch wird der Apache2-Daemon gestartet und der Webserver soll von nun an unsere Inhalte im Internet bereitstellen.

Schritt 2: Überprüfen Sie den Serverzustand

Um zu überprüfen, ob unser Apache-Server läuft, navigieren wir einfach im Browser zu localhost oder 127.0.0.1. Wenn Sie eine Seite wie die im Screenshot unten sehen, bedeutet das, dass der Server einwandfrei funktioniert!

Schritt 3: Öffnen Sie die Konfigurationsdatei

Um Apache zu konfigurieren, müssen wir in das Verzeichnis /etc/apache2 gehen.

Kali > cd /etc/apache2

Lassen Sie uns eine Liste aller Dateien in diesem Verzeichnis anzeigen:

Kali > ls -l

Wie Sie sehen, befinden sich in diesem Verzeichnis mehrere Dateien und Unterverzeichnisse. Im Moment sind wir nur an der Datei apache2.conf interessiert. Beachten Sie jedoch, dass wir eine Datei ports.conf und einen Ordner „sites_available“ haben, die wir etwas später benötigen werden, und dass es hier auch mehrere andere Konfigurationsdateien und Ordner gibt .

Wir können apache2.conf in jedem öffnen Texteditor, aber hier werden wir Leafpad verwenden. Die Datei kann durch einfaches Eintippen in die Konsole geöffnet werden:

Kali > leafpad /etc/apache2/apache2.conf

Wie Sie sehen, wird dieser Befehl geöffnet Textdatei mit allen Konfigurationsinformationen zu unserem Apache-Webserver. Um den Server einzurichten, werden wir nun versuchen, Sie mit allen wichtigen Punkten dieser Datei vertraut zu machen.

Schritt 4: ServerRoot

Scrollen wir nach unten, überspringen alle Kommentare und finden Zeile 70, in der der Abschnitt mit den globalen Einstellungen beginnt. Hier sehen wir die ServerRoot-Einstellungen. Dies ist die Spitze des Verzeichnisbaums, in dem der Apache-Server alle serverbezogenen Dateien speichert. Zeile #84 definiert ServerRoot. Wir können diese Zeile einfach auskommentieren, wenn wir /etc/apache2 als ServerRoot festlegen möchten. Wir empfehlen Ihnen, dies zu tun.

Schritt 5. Zeitüberschreitung

Im nächsten Abschnitt haben wir Variablen, die die Werte der Parameter bestimmen: Timeout, KeepAlive, MaxKeepAliveRequests und KeepAliveTimeout.

  • Auszeit: Dies ist die Zeit, innerhalb derer der Server die Anfrage des Benutzers erfüllen muss. Der Standardwert ist 300, was bedeutet, dass der Server jede Anfrage innerhalb von 300 Sekunden oder 5 Minuten verarbeiten muss. Das ist definitiv zu lang und könnte auf 30 Sekunden eingestellt werden.
  • Bleib am Leben: Dies bedeutet, dass der Server für mehrere Anfragen desselben Clients am Leben bleibt (die Verbindung hält). Die Standardeinstellung ist Ein. Dies bedeutet, dass Clients nicht für jede Anfrage an unseren Server eine neue Verbindung erstellen müssen. Mit diesem Ansatz können Sie Serverressourcen sparen.
  • MaxKeepAliveRequests: Dieser Wert gibt die maximal zulässige Anzahl von Sekunden zwischen Anfragen an, die von einer bestehenden Verbindung zum selben Client empfangen werden. Wenn wir diesen Wert auf 0 setzen, ist die Zeitspanne unbegrenzt.
  • KeepAliveTimeout: Dies ist die Zeitspanne zwischen Anfragen, um festzustellen, ob die Verbindung noch aktiv (hergestellt) ist.

Wir empfehlen Ihnen, alle Werte mit Ausnahme des Timeout-Parameters auf ihren Standardwerten zu belassen. Jede Situation ist anders und Sie müssen diese Standardeinstellungen möglicherweise ändern, um die Serverleistung an Ihre spezifische Umgebung anzupassen.

Schritt 6: Apache2-Benutzer und -Gruppen

Scrollen wir noch einmal ein paar Zeilen in der Datei apache2.conf nach unten, bis wir Zeile #177 erreichen. Hier können wir den Apache2-Benutzer und die Apache2-Gruppen festlegen. Bitte beachten Sie den Kommentar in Zeile #177. Darin heißt es, dass wir diese Variablen in der envvars-Datei festlegen können ( Umgebungsvariablen). Wir werden diese Frage für einen späteren Artikel aufheben, bedenken Sie jedoch vorerst, dass sowohl „Benutzer“ als auch „Gruppe“ Variablen sind, deren Werte aus der Datei /etc/apache2/envvars übernommen werden.

Schließlich beginnt der letzte Abschnitt, der für die Apache-Sicherheit von großer Bedeutung ist, in Zeile #193. Dieser Abschnitt stellt sicher, dass Webclients nicht auf die Dateien .htaccess und .htpasswd zugreifen können.

Schritt 7. Protokollierung

Im nächsten Abschnitt wird beschrieben, wie Apache Protokolle verwaltet.

Im ersten Unterabschnitt gehen wir auf den HostNameLookups-Parameter ein. Diese Anweisung teilt Apache2 mit, ob beim Schreiben in das Protokoll eine DNS-Suche durchgeführt werden soll. hergestellte Verbindung. Mit dem Standardwert „Aus“ schneidet Apache2 deutlich besser ab.

Schritt 8: Verfügbare Websites

Schauen wir uns nun das Verzeichnis site_available (verfügbare Sites) und vor allem die Datei an, die sich standardmäßig darin befindet. Dies wird oft als Standarddatei für virtuelle Hosts bezeichnet. Öffnen Sie diese Datei, indem Sie in die Konsole Folgendes eingeben:

Kali > leafpad /etc/apache2/site_available/default

Wie Sie sehen, gibt es in dieser Datei drei kritische Bereiche. Die erste Zeile gibt an, auf welchem ​​Port der Webserver lauscht. Hier wird definiert, dass jede Schnittstelle auf Port 80 (*:80) überwacht werden soll. In der zweiten Zeile wird die E-Mail-Adresse angegeben, an die bei Problemen mit dem Server Benachrichtigungen gesendet werden sollen. Standardmäßig ist eine Adresse vorhanden Systemadministrator, dann können Sie hier Ihre E-Mail-Adresse eingeben. Das dritte Element ist möglicherweise das wichtigste – DocumentRoot. Es bestimmt, wo der Inhalt für diesen virtuellen Host gespeichert wird. Standardmäßig ist das Verzeichnis /var/www. Wir empfehlen Ihnen, alles so zu belassen, wie es von den Entwicklern definiert wurde.

Schritt 9. Ports

Schließlich können wir in der Datei apache2.conf noch weiter nach unten gehen, bis zur Zeile #248 – „include port.conf“. Diese Anweisung weist Apache lediglich an, in der Datei port.conf nach den Ports zu suchen, die er abhören soll.



Freunden erzählen