So optimieren und härten Sie Apache

Was brauche ich?

  • Ein dedizierter oder VPS -Linux-Server
  • CentOS/Ubuntu

Was ist Apache?

Apache ist eine Open-Source-Webserverlösung, die von der Apache Software Foundation und einer äußerst aktiven Community entwickelt und gepflegt wird und über 60 % aller Webserver weltweit betreibt.

  1. Auf dem Laufenden halten

  1. Um Schäden vorzubeugen, ist es am wichtigsten, sicherzustellen, dass der Webserver auf dem neuesten Stand ist, denn die Apache-Community arbeitet hart daran, Sicherheitsprobleme zu verhindern und neue Versionen basierend auf Sicherheitsfixes und neuen Funktionen zu veröffentlichen.
Leckeres Update httpd

  1. Apache-Version ausblenden

  1. Es scheint, dass die Standard-Apache-Konfiguration die Apache-Version und den Betriebssystemtyp offenlegt. Wenn Sie die Version offenlegen, helfen Sie Hackern, den Aufklärungsprozess zu beschleunigen.

So optimieren und härten Sie Apache

  1. Um diese Informationen vor Browsern zu verbergen, müssen Sie einige Änderungen in der Hauptkonfigurationsdatei von Apache vornehmen. Öffnen Sie die Konfigurationsdatei /etc/httpd/conf/httpd.conf  mit einem Editor und suchen Sie nach „ServerSignature“, diese ist standardmäßig „Ein“. Wir müssen diese Serversignaturen deaktivieren und die zweite Zeile „ServerTokens Prod“ weist Apache an, bei jeder Seitenanforderung nur Apache als Produkt im Server-Antwortheader zurückzugeben. Es unterdrückt die Informationen zum Betriebssystem sowie zur Haupt- und Nebenversion.
vi /etc/httpd/conf/httpd.conf

serverSignatur Aus

serverTokens Prod
  1. Speichern Sie die Datei und starten Sie den Apache-Dienst neu, um diese Änderungen zu übernehmen:
systemctl startet httpd neu

So optimieren und härten Sie Apache

  1. Verzeichnisliste deaktivieren

  1. Standardmäßig listet Apache den gesamten Inhalt des Dokumentstammverzeichnisses auf, wenn keine Indexdatei vorhanden ist. Deaktivieren Sie die Verzeichnisliste in einem Browser, damit der Besucher nicht alle Dateien und Ordner sieht, die Sie im Stammverzeichnis oder Unterverzeichnis haben. Wenn dies aktiviert ist, kann ein Angreifer problemlos jede Datei anzeigen, analysieren und vertrauliche Informationen über eine Anwendung Ihres Apache-Servers erhalten.
  2. Sie können die Verzeichnisliste deaktivieren, indem Sie die Options-Direktive in der Konfigurationsdatei für ein bestimmtes Verzeichnis verwenden.
vi /etc/httpd/conf/httpd.conf

Optionen – Indizes

So optimieren und härten Sie Apache

  1. Deaktivieren Sie Etag

  1. ETags bestehen aus drei Komponenten: INode, MTime und Size. Durch die Aktivierung von Etag können entfernte Angreifer vertrauliche Informationen wie Inode-Nummer, mehrteilige MIME-Grenze und untergeordnete Prozesse über den Etag-Header erhalten. Die Deaktivierung von Etag ist erforderlich, um die PCI-Konformität zu gewährleisten.
  2. Öffnen Sie /etc/httpd/conf/httpd.conf  und fügen Sie die folgende Anweisung hinzu, speichern Sie die Datei und starten Sie den Apache-Dienst neu, um diese Änderungen zu übernehmen.
vi /etc/httpd/conf/httpd.conf

FileETag Keine

systemctl startet httpd neu
  1. Deaktivieren Sie nicht benötigte Module

  1. Bitte beachten Sie, dass Apache standardmäßig viele unnötige installierte Module enthält. Daher wird empfohlen, alle Module zu deaktivieren, die nicht verwendet werden. Mit dem folgenden Befehl können Sie alle kompilierten Module des Webservers auflisten;
grep LoadModule /etc/httpd/conf.modules.d/00-base.conf

So optimieren und härten Sie Apache

  1. Um das jeweilige Modul zu deaktivieren, können Sie am Anfang dieser Zeile „#“ einfügen und den Dienst neu starten.

So optimieren und härten Sie Apache

  1. Führen Sie Apache als separaten Benutzer und separate Gruppe aus

  1. Bei einer Standardinstallation wird Apache als Nobody oder Daemon ausgeführt. Aus Sicherheitsgründen wird empfohlen, für Apache ein eigenes Benutzerkonto zu verwenden, das uns hilft, die jeweilige Benutzeraktivität zu verfolgen, wenn wir auf Lastprobleme auf dem Server stoßen.
gruppieren Sie Apache

useradd -d /var/www/ -g apache -s /bin/nologin apache
  1. Ändern Sie den Apache-Benutzer und die Apache-Gruppe in der Apache-Konfigurationsdatei
vi /etc/httpd/conf/httpd.conf

Benutzer Apache

Gruppen-Apache

So optimieren und härten Sie Apache

  1. Stellen Sie sicher, dass Dateien außerhalb des Webroots nicht bereitgestellt werden

  1. Wir müssen den Zugriff des Benutzers auf das Stammverzeichnis einschränken und können dem Benutzer den Zugriff auf entsprechende Verzeichnisblöcke ermöglichen. Sichern Sie das Stammverzeichnis, indem Sie Folgendes in der Konfigurationsdatei /etc/httpd/conf/httpd.conf festlegen .
[Apache 2.2]

Optionen Keine

Befehl verweigern, zulassen

Abgelehnt von allen

[Apache 2.4]

Alle Forderungen wurden abgelehnt
  1. Optionen Keine  – Stellen Sie diese Option auf „Keine“ ein, wodurch keine optionalen Zusatzfunktionen aktiviert werden.
  2. Reihenfolge verweigern, zulassen  – Dies ist die Reihenfolge, in der die Anweisungen „Verweigern“ und „Zulassen“ verarbeitet werden sollen. Dadurch wird zuerst „verweigern“ und dann „erlauben“ verarbeitet.
  3. Von allen ablehnen  – Dies lehnt Anfragen von allen an das Stammverzeichnis ab. Für das Stammverzeichnis gibt es keine Allow-Anweisung. Es kann also niemand darauf zugreifen.
  1. Deaktivieren Sie die Unterstützung für nicht verwendete .htaccess-Dateien

  1. Mit der .htaccess-Datei in einem bestimmten Unterverzeichnis des Home-Verzeichnisses oder irgendwo außerhalb davon können Benutzer die Standard-Apache-Anweisungen überschreiben. Es wird nicht empfohlen, Benutzern die Verwendung der .htaccess-Datei und das Überschreiben von Apache-Anweisungen zu erlauben. Stellen Sie dazu im Stammverzeichnis „AllowOverride None“ ein.
AllowOverride Keine

  1. Erlauben Sie Apache nicht, symbolischen Links zu folgen

  1. Sie können FollowSymLinks  mit der Options-Direktive aus der  Konfigurationsdatei httpd.conf deaktivieren und dies möglicherweise auch nur für ein bestimmtes Verzeichnis deaktivieren.
Optionen -FollowSymLinks

  1. Deaktivieren Sie andere Optionen
  1. Im Folgenden sind die verfügbaren Werte für die Optionsdirektive aufgeführt:
  1. Optionen Alle – Alle Optionen sind aktiviert (außer MultiViews). Wenn Sie die Options-Direktive nicht angeben, ist dies der Standardwert.
  2. Optionen ExecCGI – CGI-Skripte ausführen (verwendet mod_cgi)
  3. Optionen FollowSymLinks – Wenn Sie symbolische Links in diesem Verzeichnis haben, werden diese verfolgt.
  4. Optionen Includes – Serverseitige Includes zulassen (verwendet mod_include)
  5. Optionen IncludesNOEXEC – Ermöglicht serverseitige Includes ohne die Möglichkeit, einen Befehl oder CGI auszuführen.
  6. Optionsindizes – Verzeichnisliste deaktivieren
  7. Optionen MultiViews – Ausgehandelte Multiviews über Inhalte zulassen (verwendet mod_negotiation)
  8. Optionen SymLinksIfOwnerMatch – Ähnlich wie FollowSymLinks. Der Server folgt jedoch nur symbolischen Links, bei denen die Zieldatei oder das Zielverzeichnis derselben Benutzer-ID gehört wie der Link.
  1. Wir können serverseitige Includes (mod_include) und die CGI-Ausführung deaktivieren, wenn sie nicht benötigt werden. Dazu müssen wir die Hauptkonfigurationsdatei /etc/httpd/conf/httpd.conf ändern.
Optionen – Beinhaltet

Optionen -ExecCGI
  1. Beschränken Sie den Text, das Feld und die Größe der HTTP-Anfrage

  1. Apache verfügt über mehrere Anweisungen, mit denen Sie die Größe einer Anfrage begrenzen können. LimitRequestBody kann auch nützlich sein, um die Auswirkungen eines Denial-of-Service-Angriffs abzuschwächen. Sie können die Größe der Anfragen begrenzen, indem Sie die Apache-Direktive LimitRequestBody in Kombination mit dem Directory-Tag verwenden. Diese Anweisung ist standardmäßig auf „unbegrenzt“ eingestellt. Sie können den Wert in Bytes von 0 (unbegrenzt) bis 2147483647 (2 GB) festlegen, die in einem Anforderungstext zulässig sind. Sie können dieses Limit entsprechend den Anforderungen Ihrer Website festlegen. Fügen Sie die folgende Zeile hinzu:
LimitRequestBody 204800
  1. Speichern Sie die Datei und starten Sie Apache neu.
  2. Bitte beachten Sie, dass die Anweisungen LimitRequestBody, LimitRequestFields, LimitRequestFieldSize, LimitRequestLine und LimitXMLRequestBody sorgfältig konfiguriert werden sollten, um den durch Clienteingaben ausgelösten Ressourcenverbrauch zu begrenzen.
  1. Mod_security installieren/aktivieren

  1. Mod-Security ist eine Open-Source-Webanwendungs-Firewall. Es umfasst verschiedene Funktionen wie Filterung, Maskierung der Serveridentität und Verhinderung von Null-Byte-Angriffen. Über dieses Modul ist auch eine Echtzeit-Verkehrsüberwachung möglich. Eine der größten Stärken von ModSecurity ist das virtuelle Patchen. Sie sind vor Anwendungsschwachstellen geschützt, die Sie noch nicht beheben können. Mit ModSecurity können Sie Ihre Website vor unerwünschtem böswilligem Datenverkehr schützen und absichern und die Größe des möglichen Angriffsvektors reduzieren. Mit mod_security können Sie Folgendes tun:
  1. Einfache Filterung
  2. Auf regulären Ausdrücken basierende Filterung
  3. Validierung der URL-Kodierung
  4. Validierung der Unicode-Kodierung
  5. Wirtschaftsprüfung
  6. Verhinderung von Nullbyte-Angriffen
  7. Speichergrenzen hochladen
  8. Maskierung der Serveridentität
  9. Integrierte Chroot-Unterstützung
  1. Installieren Sie mod_security
Lecker, installiere mod_security

/etc/init.d/httpd neu starten
  1. Wenn die Installation abgeschlossen ist, finden Sie die Konfigurationsdatei-Tools in /etc/httpd/conf.d.

So optimieren und härten Sie Apache

  1. Schützen Sie DDoS-Angriffe und -Härtung

  1. Obwohl ein vollständiger Schutz vor einem DDoS-Angriff mit den folgenden Methoden überhaupt nicht möglich ist, können Sie Angriffen mit geringer Bandbreite dennoch standhalten. Der Schutz Ihres Servers vor großen DDoS-Angriffen liegt außerhalb der Möglichkeiten von Apache und anderen Webservern. Dies liegt in erster Linie daran, dass Webserver nicht dafür ausgelegt sind, dieses Problem zu lösen, und nicht über ein gewisses Maß hinausgehen können, um sich vor solchen Angriffen zu schützen. Hier sind einige Anweisungen, die Ihnen helfen können, die Kontrolle darüber zu erlangen.
  1. Timeout : Wir können RequestReadTimeout für den Client festlegen. Wenn der Client innerhalb der konfigurierten Zeit keine Header oder Text sendet, wird der Fehler 408 REQUEST TIMEOUT gesendet. Der Standardwert beträgt 300 Sekunden.
  2. KeepAlive =on: Behalten Sie mehr als eine Anfrage pro Verbindung.
  3. KeepAliveTimeout : Anzahl der Sekunden, die auf die nächste Anfrage desselben Clients über dieselbe Verbindung gewartet wird. Der Standardwert beträgt 5 Sekunden.
  4. MaxKeepAliveRequests : Die maximale Anzahl von Anfragen, die während einer dauerhaften Verbindung zugelassen werden. Auf 0 setzen, um eine unbegrenzte Menge zuzulassen. Der Standardwert ist 100.
  5. MaxRequestWorkers: Damit kann der Server die maximale Anzahl gleichzeitiger Verbindungen verarbeiten, ohne dass ihm die Ressourcen ausgehen. Der Standardwert ist 250.
  6. LimitRequestFields : Mit dieser Anweisung kann der Serveradministrator die Begrenzung der Anzahl der in einer HTTP-Anfrage zulässigen Anforderungsheaderfelder ändern. Der Standardwert ist 100.
  7. LimitRequestFieldSize : Mit dieser Anweisung kann der Serveradministrator die Grenze für die zulässige Größe eines HTTP-Anforderungsheaderfelds festlegen. Der Standardwert beträgt 8190 Byte.

So optimieren und härten Sie Apache

  1. Sicher mit SSL-Zertifikaten

  1. SSL ist eine zusätzliche Sicherheitsebene, die Sie Webanwendungen hinzufügen. Angenommen, Sie haben eine Website, auf der sich die Leute anmelden, indem sie ihre Anmeldedaten nachweisen, oder Sie haben eine E-Commerce-Website , auf der die Leute ihre Bankdaten oder Debit-/Kreditkartendaten angeben, um Produkte zu kaufen. Standardmäßig sendet Ihr Webserver diese Daten im Klartextformat Wenn Sie jedoch SSL-Zertifikate für Ihre Websites verwenden, sendet Apache alle diese Informationen in verschlüsseltem Text. Die standardmäßige SSL-Konfiguration führt jedoch zu bestimmten Schwachstellen und Sie sollten eine Optimierung dieser Konfigurationen in Betracht ziehen.
  2. SSL-Schlüssel

Bitte beachten Sie, dass es umso komplexer wird, SSL-Schlüssel zu knacken, je höher die Schlüssellänge ist. Die meisten großen Webunternehmen verwenden 2048-Bit-Schlüssel.

  1. Deaktivieren Sie SSLv2, SSLv3

Berichten zufolge weist SSL 2.0 und 3.0 mehrere kryptografische Mängel auf. Bitte verwenden Sie daher Folgendes:

SSLProtocol -ALL +TLSv1
  1. Deaktivieren Sie Null- und schwache Verschlüsselungen

SSL Cipher ist ein Verschlüsselungsalgorithmus, der als Schlüssel zwischen zwei Computern über das Internet verwendet wird. Bei der Datenverschlüsselung handelt es sich um den Prozess der Umwandlung von Klartext in geheime Chiffriercodes. Die Datenverschlüsselung erfolgt basierend auf der SSL-Verschlüsselungskonfiguration Ihres Webservers. Lassen Sie nur starke Verschlüsselungen zu, damit Sie alle Türen schließen, die versuchen, auf niedrigeren Verschlüsselungssammlungen einen Handshake durchzuführen.

SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM

So optimieren und härten Sie Apache

  1. Aktivieren Sie die Apache-Protokollierung

  1. Die Apache-Protokollierung stellt detaillierte Informationen über Client-Anfragen auf Ihrem Webserver bereit. Daher ist die Aktivierung einer solchen Protokollierung bei der Untersuchung der Ursache bestimmter Probleme hilfreich.
  2. Apache speichert zwei Arten von Protokollen: Fehlerprotokoll und Zugriffsprotokoll.
  1. Apache-Fehlerprotokoll

Enthält Informationen zu Fehlern, die der Webserver bei der Verarbeitung von Anfragen festgestellt hat. Der Speicherort des Fehlerprotokolls wird mithilfe der ErrorLog-Direktive festgelegt. Wenn Sie auf Probleme mit Apache stoßen, sollten Sie sich diese Datei zunächst mit cat, grep oder anderen UNIX/Linux-Textdienstprogrammen ansehen. Der Standardspeicherort der Fehlerprotokolldatei ist /var/log/httpd/error_log.

vi /etc/httpd/conf/httpd.conf

Servername example.com

ServerAdmin webmaster@example.com

DocumentRoot /var/www/example.com

ErrorLog /var/www/example.com/logs/error.log
  1. Apache-Zugriffsprotokoll

Das Serverzugriffsprotokoll zeichnet alle vom Server verarbeiteten Anfragen auf. Der Speicherort und der Inhalt des access_log werden durch die CustomLog-Direktive gesteuert. Der Standardspeicherort der Apache-Zugriffsprotokolldatei ist /var/log/httpd/access_log .

vi /etc/httpd/conf/httpd.conf

Servername example.com

ServerAdmin

webmaster@example.com

DocumentRoot /var/www/example.com

CustomLog /var/www/example.com/logs/access.log

Nächste Schritte

Starten Sie Ihren Server neu und genießen Sie die Gewissheit, dass Sie Ihren Webserver nun erfolgreich optimiert und gehärtet haben.

Abschluss

Persönlich würde ich empfehlen, als Nächstes nach einer geeigneten Verschlüsselung für Ihren Server zu suchen, um Benutzernamen, Passwörter und Webspaces zu schützen. Meine Vorschläge sind PureKit  von Virgil Security . PureKit ist ein Open-Source-Sicherheitsframework, das den Schutz gespeicherter Daten und Funktionen nach einer Kompromittierung ermöglicht. Open Source, peer-reviewed und regelmäßig aktualisiert – das ist definitiv der richtige Weg. Geh Virgil!

  • Ihre Anfrage zum besten Webhosting kann mit einem Klick auf diesen Link beendet werden.