English English French French Spanish Spanish German German
Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Handbuch zur Sicherung und Sicherheit von Apache-Webservern

APACHE
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

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.

Schwachstellenbericht

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 durchgehen die Installationsanleitung.
  • 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 die Hardening & Security-Richtlinien erlernen möchten.

Gute Kenntnisse des Apache Web Server- und UNIX-Befehls sind erforderlich.

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. Online verwenden Tool zur Überprüfung des HTTP-Antwortheader

Entfernen Sie das Serverversionsbanner

Ich würde sagen, dies ist eines der ersten Dinge, die berücksichtigt werden müssen, 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.

Apache-Server-Banner

  • 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, dh Apache

Wie Sie unten sehen können, sind Versions- und Betriebssysteminformationen weg.

apache-server-banner-maskiert

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.

Lassen Sie uns testen, wie es in den Standardeinstellungen aussieht.

  • Wechseln Sie in das Verzeichnis $ Web_Server / htdocs
  • Erstellen Sie einen Ordner und einige Dateien darin
# mkdir test
# touch hi
# touch hello

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

Apache-Verzeichnisliste

Wie Sie sehen konnten, zeigt es, welche Dateien / Ordner Sie haben, und ich bin sicher, dass Sie das nicht offenlegen möchten.

  • Wechseln Sie in das Verzeichnis $ Web_Server / conf
  •  Offen httpd.conf mit vi
  •  Suchen Sie nach Verzeichnis und ändern Sie die Direktive Options in None oder –Indexes
<Directory /opt/apache/htdocs>
Options -Indexes
</Directory>

(oder)

<Directory /opt/apache/htdocs>
Options None
</Directory>
  • 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

Verzeichnisliste deaktiviert

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 None
  • 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
  •  Suchen Sie nach der Benutzer- und Gruppenrichtlinie und ändern Sie sie als Apache für nicht privilegierte Konten
User apache 
Group apache
  •  Speichern Sie die httpd.conf
  •  Starten Sie Apache neu

grep für die Ausführung des http-Prozesses und stellt 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. Das 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 hinzufügen AllowOverride zu None wie unten gezeigt.

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
<Directory /> 
Options -Indexes 
AllowOverride None
</Directory>
  •  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
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>
  • 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 
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
TRACE / HTTP/1.1 Host: test
HTTP/1.1 200 OK
Date: Sat, 31 Aug 2013 02:13:24 GMT
Server: Apache
Transfer-Encoding: chunked
Content-Type: message/http 20
TRACE / HTTP/1.1
Host: test 
0
Connection closed by foreign host.
#

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 off
  •  Starten Sie Apache neu

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

#telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
TRACE / HTTP/1.1 Host: test
HTTP/1.1 405 Method Not Allowed
Date: Sat, 31 Aug 2013 02:18:27 GMT
Server: Apache Allow:Content-Length: 223Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> 
<title>405 Method Not Allowed</title> </head><body> 
<h1>Method Not Allowed</h1>
<p>The requested method TRACE is not allowed for the URL /.</p> </body></html>
Connection closed by foreign host.
#

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 hilft nicht 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 edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
  •  Starten Sie Apache neu

Clickjacking-Angriff

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 always append X-Frame-Options SAMEORIGIN
  •  Starten Sie Apache neu

Apache-x-Frame-Optionen

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

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
<Directory /opt/apache/htdocs>
Options –Indexes -Includes
Order allow,denyAllow from all
</Directory>
  • 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-Protection "1; mode=block"
  •  Starten Sie Apache neu

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

apache-xss

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 wir sie auch?

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 den Timeout-Wert auf möglicherweise 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
Timeout 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 (siehe unten). 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 #Certificate signed by authority
SSLCertificateChainFile #Certificate signer given by authority
SSLCertificateKeyFile #Key file which you generated above
  • 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. Datenverschlüsselung ist der Prozess der Umwandlung von einfachem Text in geheime verschlüsselte Codes.

Es basiert auf der SSL-Verschlüsselungskonfiguration Ihres Webservers. Die Datenverschlüsselung erfolgt. 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 und v3 weisen viele Sicherheitslücken auf. Wenn Sie auf einen Penetrationstest oder die PCI-Konformität hinarbeiten, müssen 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, bei dem Daten manipuliert oder offengelegt werden können.

Lassen Sie uns den Apache-Webserver so implementieren, 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

Sobald Sie mit der SSL-Konfiguration fertig sind, empfiehlt es sich, Ihre Webanwendung mit zu testen Online-SSL / TLS-Zertifikatstool um einen Konfigurationsfehler zu finden.

Mod Security

Mod Security ist eine Open Source Firewall für Webanwendungen, die Sie mit Apache verwenden können.

Es kommt als Modul, das Sie kompilieren und installieren müssen. Wenn Sie sich keinen Werbespot leisten können Webanwendungs-FirewallDies wäre eine ausgezeichnete Wahl.

Um den Schutz allgemeiner Webanwendungen zu gewährleisten, verwenden die Kernregeln die folgenden Techniken:

  • HTTP-Schutz - Erkennen von Verstößen gegen das HTTP-Protokoll und eine lokal definierte Nutzungsrichtlinie
  • 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 der Anwendung.
  • Fehlererkennung und -verstecken - Verschleierung von vom Server gesendeten Fehlermeldungen.

Download & Installation

Die folgenden Voraussetzungen müssen auf dem Server installiert sein, auf dem Sie Mod Security mit Apache verwenden möchten. Wenn eine davon 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 wir 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 und installieren Sie mit make script
# make
# make install
  • 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.

Konfiguration

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 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 ausnutzen 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

Lassen Sie uns nun diese Regeln aktivieren, damit sie mit dem Apache-Webserver funktionieren.

  •  Fügen Sie Folgendes in httpd.conf hinzu
<IfModule security2_module>
Include conf/crs/modsecurity_crs_10_setup.confInclude conf/crs/base_rules/*.conf
</IfModule>

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.

Erste Schritte

Beginnen wir mit einigen der kritischen Konfigurationen in Mod Security zum Härten und Sichern von 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 Informationen wie Anforderungsgröße, Upload-Größe, Länge eines Parameters usw. ab.
  • modsecurity_crs_30_http_policy.conf: Hiermit können zulässige oder nicht zulässige Methoden wie CONNECT, TRACE, PUT, DELETE usw. konfiguriert und geschützt werden.
  • 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. Debug & Audit-Protokoll.

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 schreibt die Konfiguration beide Protokolle. Sie können jedoch je nach Ihren Anforderungen Änderungen vornehmen. Das Protokoll wird in gesteuert SecDefaultAction Richtlinie. Schauen wir uns die Standardprotokollierungskonfiguration in der setup.conf an

SecDefaultAction “phase:1,deny,log”

So protokollieren Sie Debug, Überwachungsprotokoll - verwenden Sie "Protokoll" So protokollieren Sie nur das Überwachungsprotokoll - verwenden Sie "nolog, Überwachungsprotokoll" So protokollieren Sie nur das Debugprotokoll - verwenden Sie "Protokoll, noauditlog" Sie können den Speicherort des Überwachungsprotokolls angeben, der von SecAuditLog gesteuert werden soll 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 Engine Rule Off deaktiviert. Wenn Sie Rule Engine nicht aktivieren, nutzen Sie nicht alle Vorteile von Mod Security.

Das Aktivieren oder Deaktivieren der Rule Engine wird von gesteuert SecRuleEngine Richtlinie.

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

Es gibt drei Werte für SecRuleEngine:

  • Ein - um die Rule Engine zu aktivieren
  • Aus - um die Rule Engine zu deaktivieren
  • DetectionOnly - Aktivieren Sie die Rule Engine, führen Sie 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.

Schutz vor allgemeinen Angriffstypen

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. Lassen Sie uns einige davon testen.

XSS-Angriff

  •  Öffnen Sie Firefox und greifen Sie auf Ihre Anwendung zu und setzen Sie tag at the end or URL
  •  Überwachen Sie die Datei modsec_audit.log im Ordner apache / logs

Sie werden feststellen, dass Mod Security die Anforderung blockiert, wie sie enthält tag which is the root of XSS attack.

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 von Apache und dem Betriebssystemtyp der ServerTokens-Direktive entfernen.

Lassen Sie uns einen Schritt voraus gehen. Wie wäre es, wenn Sie den Servernamen behalten, was Sie möchten? Es ist möglich mit SecServerSignature Direktive in Mod Security. 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] #

General Configuration

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 der absoluten 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)
Listen 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
  •  Fügen Sie% T &% sessionID in httpd.conf unter der LogFormat-Direktive hinzu
LogFormat "%h %l %u %t "%{sessionID}C" "%r" %>s %b %T" common

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 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 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.

Überprüfen Sie diesen Link, wenn Sie möchten Implementieren Sie eine benutzerdefinierte Fehlerseite in Apache.

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

Danke an unsere Sponsoren
Weitere großartige Lektüren zu Apache HTTP
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder