Handbuch zur Sicherung und Sicherheit von Apache-Webservern

Eine praktische Anleitung zum Sichern und Härten von Apache HTTP Server.


Der Webserver ist ein wesentlicher Bestandteil webbasierter Anwendungen. Apache Web Server befindet sich häufig am Rand des Netzwerks und ist daher einer der anfälligsten Dienste für Angriffe.

Die Standardkonfiguration liefert viele vertrauliche Informationen, die dem Hacker helfen können, sich auf einen Angriff auf die Anwendungen vorzubereiten. Die meisten Angriffe auf Webanwendungen erfolgen über XSS-, Info Leakage-, Session Management- und SQL Injection-Angriffe, die auf schwachen Programmcode zurückzuführen sind und die Webanwendungsinfrastruktur nicht bereinigen können.

Interessante Forschung von Positive Technologien 52% der gescannten Anwendung wiesen hohe Sicherheitslücken auf.

In diesem Artikel werde ich einige der Best Practices zum Sichern des Apache HTTP-Servers auf einer Linux-Plattform erläutern.

Die folgenden sind auf Apache 2.4.x Version getestet.

  • Dies setzt voraus, dass Sie Apache auf einer UNIX-Plattform installiert haben. Wenn nicht, können Sie die Installationsanleitung durchgehen.
  • Ich werde das Apache-Installationsverzeichnis / opt / apache in diesem Handbuch als $ Web_Server aufrufen.
  • Es wird empfohlen, vor jeder Änderung eine Sicherungskopie der vorhandenen Konfigurationsdatei zu erstellen.

Publikum

Dies ist für Middleware-Administratoren, Anwendungssupport, Systemanalysten oder alle Personen gedacht, die arbeiten oder Hardening lernen möchten & Sicherheitsrichtlinien.

Faire Kenntnisse von Apache Web Server & Der UNIX-Befehl ist obligatorisch.

Anmerkungen

Sie benötigen ein Tool, um HTTP-Header auf einen Teil der Implementierungsüberprüfung zu untersuchen. Es gibt zwei Möglichkeiten, dies zu tun.

  1. Verwenden Sie im Browser integrierte Entwicklertools, um die HTTP-Header zu überprüfen. Normalerweise befindet es sich auf der Registerkarte “Netzwerk”
  2. Verwenden Sie das Online-Tool zur Überprüfung des HTTP-Antwortheaders

Entfernen Sie das Serverversionsbanner

Ich würde sagen, dies ist eines der ersten Dinge, die Sie berücksichtigen sollten, da Sie nicht offenlegen möchten, welche Webserverversion Sie verwenden. Wenn Sie die Version verfügbar machen, helfen Sie dem Hacker, den Aufklärungsprozess zu beschleunigen.

In der Standardkonfiguration werden die Apache-Version und der Betriebssystemtyp wie unten gezeigt angezeigt.

  • Wechseln Sie in den Ordner $ Web_Server / conf
  • Ändern Sie httpd.conf mit dem vi-Editor
  • Fügen Sie die folgende Anweisung hinzu und speichern Sie die httpd.conf

ServerTokens Prod
ServerSignature Off

  • Starten Sie Apache neu

ServerSignature entfernt die Versionsinformationen von der von Apache generierten Seite.

ServerTokens ändert den Header nur in die Produktion, d. H. Apache

Wie Sie unten sehen können, Version & Betriebssysteminformationen sind weg.

Deaktivieren Sie die Verzeichnisbrowserliste

Deaktivieren Sie die Verzeichnisliste in einem Browser, damit der Besucher nicht sieht, welche Dateien und Ordner sich im Stammverzeichnis oder Unterverzeichnis befinden.

Testen wir, wie es in den Standardeinstellungen aussieht.

  • Wechseln Sie in das Verzeichnis $ Web_Server / htdocs
  • Erstellen Sie einen Ordner und einige Dateien darin

# mkdir test
# berühre hi
# Hallo berühren

Versuchen wir nun, über auf Apache zuzugreifen http: // localhost / test

Wie Sie sehen konnten, werden alle Dateien / Ordner angezeigt, die Sie haben, und ich bin sicher, dass Sie dies nicht offenlegen möchten.

  • Wechseln Sie in das Verzeichnis $ Web_Server / conf
  •  Öffnen Sie httpd.conf mit vi
  •  Suchen Sie nach Verzeichnis und ändern Sie die Direktive Options in None oder –Indexes

Optionen -Indexe

(oder)

Optionen Keine

  • Starten Sie Apache neu

Hinweis: Wenn Ihre Umgebung mehrere Verzeichnisanweisungen enthält, sollten Sie in Betracht ziehen, dasselbe für alle zu tun.

Versuchen wir nun, über auf Apache zuzugreifen http: // localhost / test

Wie Sie sehen konnten, wird ein verbotener Fehler angezeigt, anstatt die Liste der Testordner anzuzeigen.

Etag

Über Remote-Angreifer können vertrauliche Informationen wie Inode-Nummer, mehrteilige MIME-Grenze und untergeordneter Prozess über den Etag-Header abgerufen werden.

Um diese Sicherheitsanfälligkeit zu vermeiden, implementieren wir sie wie folgt. Dies ist erforderlich, um die PCI-Konformität zu beheben.

  • Wechseln Sie in das Verzeichnis $ Web_Server / conf
  • Fügen Sie die folgende Anweisung hinzu und speichern Sie die httpd.conf

FileETag Keine

  • Starten Sie Apache neu

Führen Sie Apache von einem nicht privilegierten Konto aus

Eine Standardinstallation wird als Niemand oder Dämon ausgeführt. Die Verwendung eines separaten nicht privilegierten Benutzers für Apache ist gut.

Die Idee hier ist, andere Dienste zu schützen, die im Falle einer Sicherheitslücke ausgeführt werden.

  • Erstellen Sie einen Benutzer und eine Gruppe namens Apache

# groupadd apache
# useradd –G Apache Apache

  • Ändern Sie den Besitz des Apache-Installationsverzeichnisses in einen neu erstellten nicht privilegierten Benutzer

# chown –R Apache: Apache / Opt / Apache

  •  Gehen Sie zu $ ​​Web_Server / conf
  •  Ändern Sie httpd.conf mit vi
  •  Suche nach Benutzer & Gruppenrichtlinie und Änderung als nicht privilegierter Konto-Apache

Benutzer Apache
Gruppenapache

  •  Speichern Sie die httpd.conf
  •  Starten Sie Apache neu

grep für die Ausführung des http-Prozesses und stellen Sie sicher, dass er mit einem Apache-Benutzer ausgeführt wird

# ps –ef | grep http

Sie sollten sehen, dass ein Prozess mit root ausgeführt wird. Dies liegt daran, dass Apache Port 80 überwacht und mit root gestartet werden muss.

Schützen Sie die Berechtigung für Binärdateien und Konfigurationsverzeichnisse

Standardmäßig ist die Berechtigung für Binär und Konfiguration 755, dh jeder Benutzer auf einem Server kann die Konfiguration anzeigen. Sie können einem anderen Benutzer nicht erlauben, in den Ordner conf und bin zu gelangen.

  • Wechseln Sie in das Verzeichnis $ Web_Server
  • Ändern Sie die Berechtigung des Ordners bin und conf

# chmod –R 750 bin conf

Schutz der Systemeinstellungen

In einer Standardinstallation können Benutzer die Apache-Konfiguration mit .htaccess überschreiben. Wenn Sie verhindern möchten, dass Benutzer Ihre Apache-Servereinstellungen ändern, können Sie AllowOverride wie unten gezeigt zu None hinzufügen.

Dies muss auf der Stammebene erfolgen.

  • Wechseln Sie in das Verzeichnis $ Web_Server / conf
  •  Öffnen Sie httpd.conf mit vi
  •  Suchen Sie im Stammverzeichnis nach Verzeichnis

Optionen -Indexe
AllowOverride Keine

  •  Speichern Sie die httpd.conf
  •  Starten Sie Apache neu

HTTP-Anforderungsmethoden

Das HTTP 1.1-Protokoll unterstützt viele Anforderungsmethoden, die möglicherweise nicht erforderlich sind, und einige von ihnen weisen ein potenzielles Risiko auf.

In der Regel benötigen Sie in einer Webanwendung GET-, HEAD- und POST-Anforderungsmethoden, die in der jeweiligen Directory-Direktive konfiguriert werden können.

Standardkonfigurationsunterstützung OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT-Methode im HTTP 1.1-Protokoll.

  •  Wechseln Sie in das Verzeichnis $ Web_Server / conf
  •  Öffnen Sie httpd.conf mit vi
  • Suchen Sie nach Verzeichnis und fügen Sie Folgendes hinzu

abgelehnt von allen

  • Starten Sie Apache neu

Deaktivieren Sie die Trace-HTTP-Anforderung

Standardmäßig ist die Trace-Methode auf dem Apache-Webserver aktiviert.

Wenn diese Option aktiviert ist, kann dies einen Cross Site Tracing-Angriff ermöglichen und einem Hacker möglicherweise die Möglichkeit geben, Cookie-Informationen zu stehlen. Mal sehen, wie es in der Standardkonfiguration aussieht.

  •  Führen Sie eine Telnet-Webserver-IP mit Überwachungsport durch
  •  Stellen Sie eine TRACE-Anfrage wie unten gezeigt

#telnet localhost 80
Versuch 127.0.0.1…
Verbunden mit localhost.
Escape-Zeichen ist ‘^]’.
TRACE / HTTP / 1.1 Host: Test
HTTP / 1.1 200 OK
Datum: Sa, 31. August 2013 02:13:24 GMT
Server: Apache
Übertragungscodierung: Chunked
Inhaltstyp: message / http 20
TRACE / HTTP / 1.1
Host: Test
0
Verbindung vom ausländischen Host geschlossen.
#

Wie Sie in der obigen TRACE-Anfrage sehen konnten, hat sie meine Anfrage beantwortet. Deaktivieren wir es und testen es.

  •  Wechseln Sie in das Verzeichnis $ Web_Server / conf
  • Fügen Sie die folgende Anweisung hinzu und speichern Sie die httpd.conf

TraceEnable aus

  •  Starten Sie Apache neu

Führen Sie eine Telnet-Webserver-IP mit Listen-Port durch und stellen Sie eine TRACE-Anforderung wie unten gezeigt

#telnet localhost 80
Versuch 127.0.0.1…
Verbunden mit localhost.
Escape-Zeichen ist ‘^]’.
TRACE / HTTP / 1.1 Host: Test
HTTP / 1.1 405-Methode nicht zulässig
Datum: Sa, 31. August 2013 02:18:27 GMT
Server: Apache Zulassen: Inhaltslänge: 223Inhaltstyp: text / html; Zeichensatz = iso-8859-1
405 Methode nicht zulässig

Methode nicht erlaubt

Die angeforderte Methode TRACE ist für die URL / nicht zulässig.

Verbindung vom ausländischen Host geschlossen.
#

Wie Sie in der obigen TRACE-Anfrage sehen konnten, wurde meine Anfrage mit der HTTP 405-Methode nicht zulässig blockiert.

Dieser Webserver erlaubt keine TRACE-Anforderung und keine Hilfe beim Blockieren von Cross Site Tracing-Angriffen.

Setzen Sie das Cookie mit dem Flag HttpOnly und Secure

Sie können die meisten gängigen Cross Site Scripting-Angriffe mithilfe des HttpOnly- und Secure-Flags in einem Cookie abschwächen. Ohne HttpOnly and Secure ist es möglich, Webanwendungssitzungen und Cookies zu stehlen oder zu manipulieren, und dies ist gefährlich.

  •  Stellen Sie sicher, dass mod_headers.so in Ihrer httpd.conf aktiviert ist
  •  Wechseln Sie in das Verzeichnis $ Web_Server / conf
  •  Fügen Sie die folgende Anweisung hinzu und speichern Sie die httpd.conf

Header bearbeiten Set-Cookie ^ (. *) $ $ 1; HttpOnly; Sicher

  •  Starten Sie Apache neu

Clickjacking Attack

Clickjacking ist eine bekannte Sicherheitslücke in Webanwendungen.

  •  Stellen Sie sicher, dass mod_headers.so in Ihrer httpd.conf aktiviert ist
  •  Wechseln Sie in das Verzeichnis $ Web_Server / conf
  •  Fügen Sie die folgende Anweisung hinzu und speichern Sie die httpd.conf

Header hängen immer X-Frame-Optionen SAMEORIGIN an

  •  Starten Sie Apache neu

X-Frame-Optionen unterstützen auch zwei weitere Optionen, die ich hier erklärt habe.

Serverseitiges Einschließen

Server Side Include (SSI) birgt das Risiko, die Auslastung des Servers zu erhöhen. Wenn Sie die Umgebung und Webanwendungen mit hohem Datenverkehr gemeinsam genutzt haben, sollten Sie SSI deaktivieren, indem Sie die Direktive Includes in Options hinzufügen.

Ein SSI-Angriff ermöglicht die Ausnutzung einer Webanwendung durch Einfügen von Skripten in HTML-Seiten oder Remote-Ausführung von Codes.

  • Wechseln Sie in das Verzeichnis $ Web_Server / conf
  •  Öffnen Sie httpd.conf mit vi
  •  Suchen Sie nach Verzeichnis und fügen Sie die Anweisung Includes in Options hinzu

Optionen – Indizes – Beinhaltet
Bestellung erlauben, von allen zulassen

  • Starten Sie Apache neu

Hinweis: Wenn Ihre Umgebung mehrere Verzeichnisanweisungen enthält, sollten Sie in Betracht ziehen, dasselbe für alle zu tun.

X-XSS-Schutz

Der XSS-Schutz (Cross Site Scripting) kann in vielen Browsern umgangen werden. Sie können diesen Schutz für eine Webanwendung anwenden, wenn sie vom Benutzer deaktiviert wurde. Dies wird von den meisten großen Webunternehmen wie Facebook, Twitter, Google usw. Verwendet.

  • Wechseln Sie in das Verzeichnis $ Web_Server / conf
  • Öffnen Sie httpd.conf mit vi und fügen Sie die folgende Header-Direktive hinzu

Header-Set X-XSS-Schutz "1; mode = block"

  •  Starten Sie Apache neu

Wie Sie sehen können, wird XSS-Protection in den Antwortheader eingefügt.

Deaktivieren Sie das HTTP 1.0-Protokoll

Wenn wir über Sicherheit sprechen, sollten wir so viel wie möglich schützen. Warum verwenden wir also eine ältere HTTP-Version des Protokolls? Deaktivieren Sie diese ebenfalls?

HTTP 1.0 weist Sicherheitslücken im Zusammenhang mit Sitzungsentführungen auf. Wir können dies mit dem Modul mod_rewrite deaktivieren.

  • Stellen Sie sicher, dass das Modul mod_rewrite in die Datei httpd.conf geladen wird
  •  Aktivieren Sie die RewriteEngine-Direktive wie folgt und fügen Sie die Rewrite-Bedingung hinzu, um nur HTTP 1.1 zuzulassen

RewriteEngine On
RewriteCond% {THE_REQUEST}! HTTP / 1.1 $
RewriteRule. * – [F]

Konfiguration des Timeout-Werts

Standardmäßig beträgt das Apache-Zeitlimit 300 Sekunden. Dies kann ein Opfer von Slow Loris-Angriffen und DoS sein. Um dies zu verringern, können Sie das Zeitlimit auf etwa 60 Sekunden senken.

  • Wechseln Sie in das Verzeichnis $ Web_Server / conf
  • Öffnen Sie httpd.conf mit vi
  •  Fügen Sie Folgendes in httpd.conf hinzu

Zeitüberschreitung 60

SSL

SSL ist eine zusätzliche Sicherheitsebene, die Sie der Webanwendung hinzufügen. Die Standard-SSL-Konfiguration führt jedoch zu bestimmten Sicherheitslücken, und Sie sollten in Betracht ziehen, diese Konfigurationen zu optimieren.

SSL-Schlüssel

Ein Verstoß gegen den SSL-Schlüssel ist schwierig, aber nicht unmöglich. Es ist nur eine Frage der Rechenleistung und der Zeit.

Wie Sie vielleicht wissen, können Sie mit einem PC aus dem Jahr 2009 etwa 73 Tage lang loslegen Reverse Engineering eines 512-Bit-Schlüssels.

Je höher die Schlüssellänge ist, desto komplizierter wird es, den SSL-Schlüssel zu brechen. Die Mehrheit der riesigen Web-Unternehmen verwendet 2048-Bit-Schlüssel, wie unten beschrieben. Warum also nicht??

  •  Outlook.com
  •  Microsoft.com
  •   Live.com
  •  Skype.com
  •  Apple.com
  •  Yahoo.com
  •  Bing.com
  •  Hotmail.com
  •  Twitter.com

Sie können OpenSSL verwenden, um CSR mit 2048 Bit wie folgt zu generieren.

openssl req -out geekflare.csr -newkey rsa: 2048 -nodes -keyout geekflare.key

Es wird eine CSR generiert, die Sie an a senden müssen Zertifizierungsstelle um es zu unterschreiben. Sobald Sie die signierte Zertifikatdatei erhalten haben, können Sie sie in der Datei httpd-ssl.conf hinzufügen

SSLCertificateFile # Von der Behörde signiertes Zertifikat
SSLCertificateChainFile #Zertifikatsunterzeichner von der Behörde angegeben
SSLCertificateKeyFile #Key-Datei, die Sie oben generiert haben

  • Starten Sie den Apache-Webserver neu und versuchen Sie, mit https auf die URL zuzugreifen

SSL-Verschlüsselung

SSL Cipher ist ein Verschlüsselungsalgorithmus, der als Schlüssel zwischen zwei Computern über das Internet verwendet wird. Bei der Datenverschlüsselung werden einfacher Text in geheime verschlüsselte Codes umgewandelt.

Die Datenverschlüsselung basiert auf der SSL-Verschlüsselungskonfiguration Ihres Webservers. Daher ist es wichtig, die SSL-Verschlüsselung zu konfigurieren, die stärker und nicht anfällig ist.

  • Wechseln Sie in den Ordner $ Web_Server / conf / extra
  •  Ändern Sie die SSLCipherSuite-Direktive in httpd-ssl.conf wie folgt, um nur höhere Verschlüsselungsalgorithmen zu akzeptieren

SSLCipherSuite HIGH :! MEDIUM :! ANULL :! MD5 :! RC4

  •  Speichern Sie die Konfigurationsdatei und starten Sie den Apache-Server neu

Hinweis: Wenn Ihr SSL-Überwachungsbericht viele schwache Chiffren enthält, können Sie das Hinzufügen schnell ablehnen! am Anfang.

Deaktivieren Sie SSL v2 & v3

SSL v2 & v3 weist viele Sicherheitslücken auf. Wenn Sie auf einen Penetrationstest oder die PCI-Konformität hinarbeiten, wird erwartet, dass Sie die Sicherheitsfeststellung schließen, um SSL v2 / v3 zu deaktivieren.

Jede SSL v2 / v3-Kommunikation ist möglicherweise anfällig für einen Man-in-The-Middle-Angriff, der eine Manipulation oder Offenlegung von Daten ermöglichen kann.

Implementieren Sie den Apache-Webserver so, dass nur das neueste TLS akzeptiert und die SSL v2 / v3-Verbindungsanforderung abgelehnt wird.

  • Wechseln Sie in den Ordner $ Web_Server / conf / extra
  • Ändern Sie die SSLProtocol-Direktive in httpd-ssl.conf wie folgt, um nur TLS 1.2 zu akzeptieren+

SSLProtocol –ALL + TLSv1.2

Wenn Sie mit der SSL-Konfiguration fertig sind, sollten Sie Ihre Webanwendung mit dem Online-Tool für SSL / TLS-Zertifikate testen, um Konfigurationsfehler zu finden.

Mod Sicherheit

Mod Security ist eine Open-Source-Webanwendungs-Firewall, die Sie mit Apache verwenden können.

Es kommt als Modul, das Sie kompilieren und installieren müssen. Wenn Sie sich eine kommerzielle Webanwendungs-Firewall nicht leisten können, ist dies eine ausgezeichnete Wahl.

Um allgemeinen Schutz für Webanwendungen zu bieten, verwenden die Kernregeln die folgenden Techniken:

  • HTTP-Schutz – Erkennen von Verstößen gegen das HTTP-Protokoll und eine lokal definierte Verwendungsrichtlinie
  • Echtzeit-Blacklist-Lookups – Verwendet IP-Reputation von Drittanbietern
  • Webbasierte Malware-Erkennung – Identifiziert schädliche Webinhalte anhand der Google Safe Browsing-API.
  • HTTP Denial of Service-Schutz – Schutz vor HTTP-Flooding und langsamen HTTP-DoS-Angriffen.
  • Schutz vor allgemeinen Webangriffen – Erkennen allgemeiner Sicherheitsangriffe auf Webanwendungen
  • Automatisierungserkennung – Erkennen von Bots, Crawlern, Scannern und anderen schädlichen Oberflächenaktivitäten
  • Integration mit AV Scanning for File Uploads – Identifiziert schädliche Dateien, die über die Webanwendung hochgeladen wurden.
  • Nachverfolgung sensibler Daten – Verfolgt die Verwendung von Kreditkarten und blockiert Leckagen.
  • Trojaner-Schutz – Erkennen des Zugriffs auf Trojaner-Pferde.
  • Identifizierung von Anwendungsfehlern – Warnungen bei Fehlkonfigurationen von Anwendungen.
  • Fehlererkennung und -verstecken – Verschleierung von vom Server gesendeten Fehlermeldungen.

Herunterladen & Installation

Die folgenden Voraussetzungen müssen auf dem Server installiert sein, auf dem Sie Mod Security mit Apache verwenden möchten. Wenn eines dieser Elemente nicht vorhanden ist, schlägt die Mod Security-Kompilierung fehl. Sie können yum install unter Linux oder Centos verwenden, um diese Pakete zu installieren.

  • Apache 2.x oder höher
  • libpcre-Paket
  •  libxml2-Paket
  • Liblua-Paket
  • libcurl-Paket
  •  libapr und libapr-util Paket
  •  Modul mod_unique_id im Lieferumfang des Apache-Webservers enthalten

Laden Sie jetzt die neueste stabile Version von Mod Security 2.7.5 von herunter Hier

  • Übertragen Sie die heruntergeladene Datei nach / opt / apache
  • Extrahieren Sie modsecurity-apache_2.7.5.tar.gz

# gunzip –c modsecurity-apache_2.7.5.tar.gz | tar xvf –

  • Gehen Sie zum extrahierten Ordner modsecurity-apache_2.7.5

# cd modsecurity-apache_2.7.5

  • Führen Sie das Konfigurationsskript einschließlich des Apx-Pfads zu vorhandenem Apache aus

# ./configure –with-apxs = / opt / apache / bin / apxs

  • Kompilieren & mit make script installieren

# machen
# install installieren

  • Sobald die Installation abgeschlossen ist, wird mod_security2.so im Modulordner unter / opt / apache angezeigt

Nachdem dies abgeschlossen ist, haben Sie das Mod Security-Modul auf einem vorhandenen Apache-Webserver installiert.

Aufbau

Um die Mod-Sicherheitsfunktion mit Apache zu verwenden, müssen wir das Mod-Sicherheitsmodul in httpd.conf laden. Das Modul mod_unique_id ist Voraussetzung für die Mod-Sicherheit.

Dieses Modul stellt eine Umgebungsvariable mit einer eindeutigen Kennung für jede Anforderung bereit, die von Mod Security verfolgt und verwendet wird.

  • Fügen Sie eine folgende Zeile hinzu, um das Modul für Mod Security in httpd.conf zu laden und die Konfigurationsdatei zu speichern

LoadModule unique_id_module modules / mod_unique_id.so
LoadModule security2_module modules / mod_security2.so

  •  Starten Sie den Apache-Webserver neu

Mod Security ist jetzt installiert!

Als nächstes müssen Sie die Mod Security-Kernregel installieren, um die Funktionen voll nutzen zu können.

Die neueste Kernregel kann über einen kostenlosen Link heruntergeladen werden. https://github.com/SpiderLabs/owasp-modsecurity-crs/zipball/master

  • Kopieren Sie die heruntergeladene Zip-Datei für die Kernregel in den Ordner / opt / apache / conf
  • Entpacken Sie die Kernregeldatei
  • Möglicherweise möchten Sie den Ordner in einen kurzen und leicht zu merkenden Ordner umbenennen. In diesem Beispiel werde ich in crs umbenennen.
  • Gehen Sie zum Ordner crs und benennen Sie modsecurity_crs10_setup.conf.example in modsecurity_crs10_setup.conf um

Aktivieren Sie nun diese Regeln, damit sie mit dem Apache-Webserver funktionieren.

  •  Fügen Sie Folgendes in httpd.conf hinzu

Include conf / crs / modsecurity_crs_10_setup.confInclude conf / crs / base_rules / *. Conf

In der obigen Konfiguration laden wir die Mod Security-Hauptkonfigurationsdatei modsecurity_crs_10_setup.conf und die Basisregeln base_rules / *. Conf, die von den Mod Security Core Rules zum Schutz von Webanwendungen bereitgestellt werden.

  •  Starten Sie den Apache-Webserver neu

Sie haben Mod Security erfolgreich mit Apache konfiguriert!

Gut gemacht. Jetzt ist der Apache-Webserver durch die Mod Security-Webanwendungs-Firewall geschützt.

Anfangen

Beginnen wir mit einigen der kritischen Konfigurationen in Mod Security zum Härten & sichere Webanwendungen.

In diesem Abschnitt werden alle Konfigurationsänderungen in /opt/apache/conf/crs/modsecurity_crs_10_setup.conf vorgenommen.

Wir werden /opt/apache/conf/crs/modsecurity_crs_10_setup.conf in diesem Abschnitt beispielsweise als setup.conf bezeichnen.

Es ist wichtig zu verstehen, welche OWASP-Regeln kostenlos zur Verfügung gestellt werden. Es gibt zwei Arten von Regeln, die von OWASP bereitgestellt werden.

Grundregeln – Diese Regeln sind stark getestet und wahrscheinlich ist die Fehlalarmquote geringer.

Experimentelle Regeln – Diese Regeln dienen experimentellen Zwecken, und Sie haben möglicherweise einen hohen Fehlalarm. Es ist wichtig, UAT zu konfigurieren, zu testen und zu implementieren, bevor Sie diese in einer Produktionsumgebung verwenden.

Optionale Regeln – Diese optionalen Regeln sind möglicherweise nicht für die gesamte Umgebung geeignet. Je nach Ihren Anforderungen können Sie sie verwenden.

Wenn Sie nach CSRF, Benutzerverfolgung, Sitzungsentführung usw. suchen, können Sie optionale Regeln verwenden. Nach dem Extrahieren der heruntergeladenen crs-Zip-Datei von der OWASP-Downloadseite haben wir die grundlegenden, optionalen und experimentellen Regeln.

Diese Regelkonfigurationsdatei ist in den Ordnern crs / base_rules, crs / optional_rules und crs / experimental_rules verfügbar. Machen wir uns mit einigen Grundregeln vertraut.

  • modsecurity_crs_20_protocol_violations.conf: Diese Regel schützt vor Protokollschwachstellen wie Antwortaufteilung, Anforderungsschmuggel und Verwendung eines nicht zulässigen Protokolls (HTTP 1.0)..
  • modsecurity_crs_21_protocol_anomalies.conf: Dies dient zum Schutz vor einer Anforderung, die mit Host, Accept, User-Agent im Header fehlt.
  • modsecurity_crs_23_request_limits.conf: Diese Regel hängt von anwendungsspezifischen Faktoren wie Anforderungsgröße, Upload-Größe, Länge eines Parameters usw. ab.
  • modsecurity_crs_30_http_policy.conf: Hiermit werden zulässige oder nicht zulässige Methoden wie CONNECT, TRACE, PUT, DELETE usw. konfiguriert und geschützt.
  • modsecurity_crs_35_bad_robots.conf: Erkennen Sie böswillige Roboter
  • modsecurity_crs_40_generic_attacks.conf: Dies dient zum Schutz vor dem Einfügen von Betriebssystembefehlen, der Aufnahme von Remote-Dateien usw..
  • modsecurity_crs_41_sql_injection_attacks.conf: Diese Regel zum Schutz von SQL- und Blind-SQL-Inject-Anforderungen.
  • modsecurity_crs_41_xss_attacks.conf: Schutz vor Cross-Site Scripting-Anforderungen.
  • modsecurity_crs_42_tight_security.conf: Erkennung und Schutz des Verzeichnisdurchlaufs.
  • modsecurity_crs_45_trojans.conf: Diese Regel zum Erkennen der generischen Dateiverwaltungsausgabe, des Hochladens der HTTP-Backdoor-Seite und der bekannten Signatur.
  • modsecurity_crs_47_common_exceptions.conf: Dies wird als Ausnahmemechanismus verwendet, um häufig auftretende Fehlalarme zu entfernen, die als interne Apache-Dummy-Verbindung, SSL-Pinger usw. auftreten können.

Protokollierung

Die Protokollierung ist eines der ersten Dinge, die konfiguriert werden müssen, damit Sie Protokolle für die Aktivitäten von Mod Security erstellen können. Es gibt zwei Arten der Protokollierung. Debuggen & Audit-Log.

Debug-Protokoll: Hiermit werden die Apache-Fehler-, Warn- und Benachrichtigungsmeldungen aus dem Fehlerprotokoll dupliziert.

Überwachungsprotokoll: Hiermit werden die Transaktionsprotokolle geschrieben, die durch die Mod-Sicherheitsregel gekennzeichnet sind. Mod-Sicherheit bietet Ihnen die Flexibilität, die Überwachung, das Debuggen oder beide Protokolle zu konfigurieren.

Standardmäßig werden beide Protokolle geschrieben. Sie können jedoch je nach Ihren Anforderungen Änderungen vornehmen. Das Protokoll wird in der SecDefaultAction-Direktive gesteuert. Sehen wir uns die Standardprotokollierungskonfiguration in der setup.conf an

SecDefaultAction “Phase: 1, verweigern, protokollieren”

So protokollieren Sie Debug, Überwachungsprotokoll – verwenden Sie “log” So protokollieren Sie nur das Überwachungsprotokoll – verwenden Sie “nolog, auditlog” So protokollieren Sie nur das Debugprotokoll – verwenden Sie “log, noauditlog” Sie können den Speicherort des zu speichernden Überwachungsprotokolls angeben, der von SecAuditLog gesteuert wird Richtlinie.

Schreiben Sie das Überwachungsprotokoll in /opt/apache/logs/modsec_audit.log, indem Sie es wie unten gezeigt hinzufügen.

  • Fügen Sie die SecAuditLog-Direktive in der setup.conf hinzu und starten Sie Apache Web Server neu

SecAuditLog /opt/apache/logs/modsec_audit.log

  • Nach dem Neustart sollte modsec_audit.log generiert werden

Regel-Engine aktivieren

Standardmäßig ist die Engine-Regel deaktiviert. Wenn Sie die Rule Engine nicht aktivieren, nutzen Sie nicht alle Vorteile der Mod-Sicherheit.

Das Aktivieren oder Deaktivieren der Rule Engine wird durch die SecRuleEngine-Direktive gesteuert.

  • Fügen Sie die Anweisung SecRuleEngine in der Datei setup.conf hinzu und starten Sie Apache Web Server neu

SecRuleEngine Ein

Es gibt drei Werte für SecRuleEngine:

  • Ein – um die Rule Engine zu aktivieren
  • Aus – um die Rule Engine zu deaktivieren
  • DetectionOnly – Aktiviert Rule Engine, führt jedoch niemals Aktionen wie Blockieren, Verweigern, Löschen, Zulassen, Proxy oder Umleiten aus

Sobald die Rule Engine aktiviert ist, ist Mod Security bereit, mit einigen der gängigen Angriffstypen zu schützen.

Allgemeiner Angriffsschutz

Jetzt ist der Webserver bereit, mit gängigen Angriffstypen wie XSS, SQL Injection, Protokollverletzung usw. zu schützen, da wir Core Rule installiert und Rule Engine aktiviert haben. Testen wir einige davon.

XSS-Angriff

  •  Öffnen Sie Firefox, greifen Sie auf Ihre Anwendung zu und setzen Sie das Tag an das Ende oder die URL
  •  Überwachen Sie die Datei modsec_audit.log im Ordner apache / logs

Sie werden feststellen, dass Mod Security die Anforderung blockiert, da sie ein Tag enthält, das die Wurzel des XSS-Angriffs darstellt.

Directory Traversal Attack: – Directory Traversal Attacks können großen Schaden anrichten, indem sie diese Sicherheitsanfälligkeiten ausnutzen und auf systembezogene Dateien zugreifen. Ex – / etc / passwd, .htaccess usw..

  •  Öffnen Sie Firefox und greifen Sie mit Directory Traversal auf Ihre Anwendung zu
  •  Überwachen Sie die Datei modsec_audit.log im Ordner apache / logs

http: // localhost /? ../…/boot

  • Sie werden feststellen, dass Mod Security die Anforderung blockiert, da sie die Verzeichnisüberquerung enthält.

Server-Banner ändern

Weiter oben in diesem Handbuch haben Sie gelernt, wie Sie die Versionshilfe der ServerTokens-Direktive für Apache und Betriebssystem entfernen.

Gehen wir noch einen Schritt weiter. Wie wäre es, wenn Sie den Servernamen behalten, was Sie möchten? Dies ist mit der SecServerSignature-Direktive in Mod Security möglich. Sie sehen, es ist interessant.

Hinweis: Um Mod Security zum Bearbeiten des Server-Banners über einen Header zu verwenden, müssen Sie ServerTokesn in der httpd.conf des Apache-Webservers auf Voll setzen.

  • Fügen Sie in der setup.conf die SecServerSignature-Direktive mit Ihrem gewünschten Servernamen hinzu und starten Sie Apache Web Server neu

SecServerSignature YourServerName

Ex:

[/ opt / apache / conf / crs] #grep SecServer modsecurity_crs_10_setup.conf
SecServerSignature geekflare.com
[/ opt / apache / conf / crs] #

Allgemeine Konfiguration

Schauen wir uns einige der allgemeinen Konfigurationen als Best Practice an.

Konfigurieren Sie Listen

Wenn Sie mehrere Schnittstellen und IPs auf einem einzelnen Server haben, wird empfohlen, die Listen-Direktive mit absoluter IP- und Portnummer zu konfigurieren.

Wenn Sie die Apache-Konfiguration verlassen, um alle IP-Adressen mit einer Portnummer abzuhören, kann dies zu Problemen beim Weiterleiten der HTTP-Anforderung an einen anderen Webserver führen. Dies ist in der gemeinsam genutzten Umgebung durchaus üblich.

  • Konfigurieren Sie die Listen-Direktive in httpd.conf mit der absoluten IP und dem Port (siehe Beispiel unten)

Hören Sie 10.10.10.1:80

Zugriffsprotokollierung

Es ist wichtig, das Zugriffsprotokoll auf Ihrem Webserver ordnungsgemäß zu konfigurieren. Einige der wichtigen Parameter, die im Protokoll erfasst werden müssen, sind die Zeit, die für die Bearbeitung der Anforderung benötigt wird, SESSION ID.

Standardmäßig ist Apache nicht zum Erfassen dieser Daten konfiguriert. Sie müssen sie wie folgt manuell konfigurieren.

  • Erfassen der Zeit, die für die Bearbeitung der Anforderung und der SESSION-ID benötigt wird, in einem Zugriffsprotokoll
  •  Addiere% T. & % sessionID in httpd.conf unter der LogFormat-Direktive

LogFormat "% h% l% u% t "% {sessionID} C." "% r" %.>s% b% T." verbreitet

Sie können verweisen http://httpd.apache.org/docs/2.2/mod/mod_log_config.html Eine vollständige Liste der Parameter, die in der LogFormat-Direktive in Apache Web Server unterstützt werden.

Deaktivieren Sie das Laden unerwünschter Module

Wenn Sie mit allen Modulen kompiliert und installiert haben, besteht eine hohe Wahrscheinlichkeit, dass viele Module in Apache geladen sind, die möglicherweise nicht erforderlich sind.

Es wird empfohlen, Apache mit den erforderlichen Modulen in Ihren Webanwendungen zu konfigurieren. Die folgenden Module haben Sicherheitsbedenken, und Sie könnten daran interessiert sein, die Datei httpd.conf von Apache Web Server zu deaktivieren.

WebDAV (Web-based Distributed Authoring and Versioning) Mit diesem Modul können Remoteclients Dateien auf dem Server bearbeiten und verschiedenen Denial-of-Service-Angriffen ausgesetzt sein. So deaktivieren Sie den folgenden Kommentar in httpd.conf

#LoadModule dav_module modules / mod_dav.so
#LoadModule dav_fs_module modules / mod_dav_fs.so
#Include conf / extra / httpd-dav.conf

Infomodul Das mod_info-Modul kann mithilfe von .htaccess vertrauliche Informationen verlieren, sobald dieses Modul geladen ist. So deaktivieren Sie den folgenden Kommentar in httpd.conf

#LoadModule info_module modules / mod_info.so

Hinweis: Dies wäre ohne Anleitung über den folgenden Link nicht möglich:

Dies waren einige der Best Practices, mit denen Sie Ihren Apache-Webserver sichern können.

Wenn Sie Apache HTTP noch nicht kennen, würde ich die Einnahme empfehlen der Apache HTTP-Verwaltungskurs.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map