Installation, Aktivierung und Konfiguration von ModSecurity unter Apache

Installation, Aktivierung und Konfiguration von ModSecurity unter Apache

ModSecurity ist ein leistungsstarkes Paketfiltertool, das jedes Paket überprüft, das Ihren Webserver erreicht. Es vergleicht jedes Paket gemäß den internen Regeln und bestimmt, ob das Paket blockiert oder weiter an den Webserver gesendet werden muss.

1. Herunterladen

modsecurity-apache: http://sourceforge.net/projects/mod-security/files/modsecurity-apache/
modsecurity-crs: http://sourceforge.net/projects/mod-security/files/modsecurity-crs/0-CURRENT/

2. Installation

1) Aktivieren Sie das Modul mod_unique_id
2) Überprüfen Sie, ob auf dem Server die neueste Version der libxml2-Bibliothek installiert ist
3) Stoppen Sie Apache httpd

4) Entpacken

gzip -d modsecurity-apache_2.6.3.tag.gz
tar xvzf modsecurity-apache_2.6.3.tar
gzip -d modsecurity-core-rules_2.6.tar.gz
tar xvzf modsecurity-core-rules_2.6.tar.gz

5) Konfiguration

./konfigurieren

6) ModSecurity kompilieren und testen

machen
Test machen

7) Installation

installieren

Ändern Sie http.conf, aktivieren Sie ModSecurity und fügen Sie der Datei httpd.conf Folgendes hinzu:

Ladedatei /usr/lib/libxml2.so
Lademodul security2_module module/mod_security2.so

8) Starten Sie Apache neu

ModSecurity wurde hier installiert. Sie können das Dokument mit den Konfigurationsanweisungen einsehen: http://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Reference_Manual

Installieren Sie Apache2+ModSecurity und passen Sie WAF-Regeln unter Ubuntu an

Obwohl der VPS die Cloud-WAF-Funktion verwendet, bin ich dennoch etwas besorgt. Zur doppelten Absicherung habe ich mich entschieden, die Regeln mit Modsecurity anzupassen. Im Folgenden wird beschrieben, wie der ModSecurity-Schutz für den Apache-Server konfiguriert wird (ModSecurity unterstützt derzeit auch Nginx und IIS).

Dieses Mal habe ich mich für die Installation über den Paketmanager entschieden, da ich bei jeder Verwendung der Quellpaketinstallationsmethode durch seltsame Bibliotheksabhängigkeitsfehler verwirrt werde.

Installationsumgebung:

Betriebssystem: Ubuntu 14.04.1 LTS
Apache: Apache/2.4.7 (Ubuntu)

Schritt 1: Apache installieren

Ich empfehle die Installation von Apache mit apt-get, das viel weniger Bibliotheksunterstützung erfordert! ! ! ! Wenn Ihnen der Aufwand nichts ausmacht, können Sie es aus der Quelle installieren

Geben Sie apt-get install apache2 ein.

Wenn die Meldung angezeigt wird, dass kein solches Softwarepaket vorhanden ist, aktualisieren Sie das Softwarepaket apt-get install update

Nach der Installation dieses Schritts kann Apache Dienste bereitstellen. Geben Sie 127.0.0.1 ein, um auf die lokale Website zuzugreifen.

Schritt 2: Installieren Sie modsecurity

Dies ist das gleiche wie oben. Verwenden Sie

apt-get installiere libxml2 libxml2-dev libxml2-utils libaprutil1 libaprutil1-dev libapache2-modsecurity

Nach der Installation können Sie die Versionsnummer Ihrer Modsecurity überprüfen, indem Sie

dpkg -s libapache2-modsecurity | grep Version

Schritt 3: Modsecurity konfigurieren

Dienst Apache2 neu laden

Nachdem dieser Befehl wirksam wird, wird die Modsecurity-Protokolldatei modsec_audit.log im Verzeichnis /var/log/apache2/ generiert.

Verwenden des ModSecurity Core-Regelsatzes

Platzieren Sie den Regelsatz, den wir verwenden möchten, im folgenden Verzeichnis

cd /usr/share/modsecurity-crs/activated_rules/

Wählen Sie Basisregelsatz aktivieren

für f in $(ls ../base_rules/); mache ln -s ../base_rules/$f; fertig

Ändern Sie die Apache-Modulkonfiguration, um den Regelsatz zu aktivieren

Hinweis: Es gibt einige Unterschiede in den Konfigurationsdateien zwischen modsecurity 2.7 und 2.6

(1) Version 2.7

vim /etc/apache2/mods-available/security2.conf
Überarbeiten

<WennModul Sicherheits2_Modul>
# Standard-Debian-Verzeichnis für die persistenten Daten von Modsecurity
SecDataDir /var/cache/modsecurity
# Fügen Sie alle *.conf-Dateien in /etc/modsecurity ein.
# Bewahren Sie Ihre lokale Konfiguration in diesem Verzeichnis auf
# ermöglicht ein einfaches Upgrade DIESER Datei und
# Machen Sie Ihr Leben einfacher
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional /usr/share/modsecurity-crs/*.conf
IncludeOptional /usr/share/modsecurity-crs/activated_rules/*.conf
</IfModule>

(2) Version 2.6

‍‍vim /etc/apache2/mods-available/mod-security.conf‍‍
Überarbeiten

Schließen Sie /etc/modsecurity/*.conf ein
Schließen Sie /usr/share/modsecurity-crs/*.conf ein
Include /usr/share/modsecurity-crs/activated_rules/*.conf

Schritt 4: Aktivieren Sie das Modsecurity-Modul

a2enmod-Header a2enmod-Sicherheit2 (Version 2.6: a2enmod mod-Sicherheit) Service Apache2 Neustart

Schritt 5: Testen der tatsächlichen Angriffsnutzlast

Sehen Sie, ob Sie abfangen können

http://www.tanjiti.com/?case=archive&act=orders&aid[typeid`%3D1%20and%20ord(mid((select/**/concat(username,0x3a,password)%20from%20cmseasy_user),1,1))%3C49%23]=1
Wir haben festgestellt, dass das Anforderungspaket von 403 abgefangen wurde.

Sie können die Modsecurity-Protokolldatei einsehen, um die spezifische Abfangsituation zu sehen

tail /var/log/apache2/modsec_audit.log
Meldung: Zugriff verweigert mit Code 403 (Phase 2). Musterübereinstimmung "(/\\*!?|\\*/|[&#039;;]--|--[\\s\\r\\n\\v\\f]|(?:--[^-]*?-)|([^\\-&])#.*?[\\s\\r\\n\\v\\f]|;?\\x00)" bei ARGS_NAMES:aid[typeid`=1 und ord(mid((select/**/concat(username,0x3a,password) from cmseasy_user),1,1))
<49#].
[Datei "/usr/share/modsecurity-crs/activated_rules/modsecurity_crs_41_SQL_Injunction_attacks.conf"] [Zeile "49"] [ID "981231"] [Rev. "2"] [MSG "SQL Comment-Sequenz." Wählen Sie/**/concat (Benutzername, 0x3a, Passwort) von CMSeasy_User), 1,1) <49#]: AID [typId` = 1 und ord (Mid ((select/**/concat (userername), 0x3a, Passwort) von CMSeasy_User), 1,1) <49#] "] [MOBISION" uracy "8"] [tag "owasp_crs/web_attack/sql_injection"] [tag "warCTC/WASC-19"] [tag "owasp_top_10/a1"] [tag "owasp_appsensor/cie1"] [Tag "PCI/6.5.2"]

Es ist ersichtlich, dass es von Regel 981231 der Datei modsecurity_crs_41_sql_injection_attacks.conf des Basisregelsatzes abgefangen wurde und die SQL-Kommentaranweisung traf.
Webmaster, die mit der Website-Struktur vertraut sind, können die Regeln, insbesondere die Whitelist-Regeln, anpassen, um unsere Website zu schützen.

Schritt 6: WAF-Regeln anpassen

Regelsyntax Schnellstartreferenz ModSecurity SecRule Cheatsheets

WAF-Regelbeispiel 1: Whitelist für Upload-Dateinamen, nur Hochladen von Bilddateien zulassen

vim /usr/share/modsecurity-crs/activated_rules/MY.conf
Regeln hinzufügen

SecRule FILES "!\\.(?i:jpe?g|gif|png|bmp)$" "deny,tag:'WEB_ATTACK/FILEUPLOAD',msg:'Datei ohne Bild hochladen',id:0000001,phase:2"
Testen, PHP-Datei hochladen

(Informationen zur Verwendung von http finden Sie im HTTP-Paketsendetool – HTTPie.)
http www.tanjiti.com [email protected]
Wir können sehen, dass das Anforderungspaket abgefangen wurde. Überprüfen Sie das Modsecurity-Protokoll

mehr /var/log/apache2/modsec_audit.log
Sie können sehen, dass Regel 0000001 getroffen wurde.

Meldung: Zugriff mit Code 403 (Phase 2) verweigert. Übereinstimmung von „rx \\.(?i:jpe?g|gif|png|bmp)$“ mit „FILES:filename“ erforderlich. [Datei „/usr/share/modsecurity-crs/activated_rules/MY.conf“] [Zeile „1“] [ID „0000001“] [Nachricht „Datei ohne Bild hochladen“] [Tag „WEB_ATTACK/FILEUPLOAD“]
WAF-Regelbeispiel 2: Hochgeladene Dateien blockieren, die %00 im Dateinamen enthalten

vim /usr/share/modsecurity-crs/activated_rules/MY.conf
Regeln hinzufügen

SecRule FILES "@contains %00" "deny,tag:'WEB_ATTACK/FILEUPLOAD',msg:'Dateiname hat Nullzeichen',id:0000002,phase:2"
Testen Sie, laden Sie eine Datei mit einem Dateinamen hoch, der %00 enthält

http www.tanjiti.com [email protected]%00.jpeg
Wir können sehen, dass das Anforderungspaket abgefangen wurde. Überprüfen Sie das Modsecurity-Protokoll

mehr /var/log/apache2/modsec_audit.log
Sie können sehen, dass Regel 0000002 getroffen wurde.

Meldung: Zugriff mit Code 403 (Phase 2) verweigert. String-Übereinstimmung „%00“ bei FILES:filename. [Datei „/usr/share/modsecurity-crs/activated_rules/MY.conf“] [Zeile „2“] [ID „0000002“] [Msg „Dateiname hat Nullzeichen“] [Tag „WEB_ATTACK/FILEUPLOAD“]
Es ist ganz einfach, oder? Als Nächstes möchte ich den Schutz des Nginx-Servers vorstellen.

Beachten! ! ! ! ! ! ! ! ! ! ! ! ! !
Nach dieser Änderung wird bei Verwendung der IP-Adresse ein 403-Fehler angezeigt! ! ! ! ! ! Ich habe einen ganzen Tag an diesem Fehler gearbeitet und im Internet nach verschiedenen 403-Fehlern gesucht, aber ohne Erfolg. Warum? ? ? ?
Durch Überprüfen von errol.log können Sie feststellen, dass Modsecurity den IP-Zugriff verbietet! ! ! ! ! ! Sie können normalerweise über „localhost“ darauf zugreifen. . .
Daher ist das Lesen des Protokolls sehr wichtig.

Das könnte Sie auch interessieren:
  • SpringBoot Security-Installationskonfiguration und Thymeleaf-Integration
  • Die perfekte Lösung für den Fehler bei der Installation von Mysql Applying Security in Windows Server 2014
  • Sicherheit: Ein sehr ausführliches Tutorial zur Installation von Elastic SIEM und EDR

<<:  Eine kurze Diskussion über das Problem des vergessenen MySQL-Passworts und des Anmeldefehlers

>>:  JavaScript Dom implementiert das Prinzip und Beispiel eines Karussells

Artikel empfehlen

Zwei Möglichkeiten zur Visualisierung von ClickHouse-Daten mit Apache Superset

Apache Superset ist ein leistungsstarkes BI-Tool,...

Snake-Spiel mit nativem JS schreiben

In diesem Artikel wird der spezifische Code zum S...

Grundlegende Ideen und Codes zur Implementierung von Videoplayern in Browsern

Inhaltsverzeichnis Vorwort Zusammenfassung der Au...

Eine kurze Analyse von MySQL - MVCC

Versionskette In den Tabellen der InnoDB-Engine g...

Tipps zum Anzeigen von Text in Linux (super praktisch!)

Vorwort Bei der täglichen Entwicklung müssen wir ...

Neue Ideen zur Zeitformatierung in JavaScript toLocaleString()

Inhaltsverzeichnis 1. Konventionelle Ideen zur Ze...

Beispielcode für Nginx zur Erreichung dynamischer und statischer Trennung

1. Einfache Konfiguration der dynamischen und sta...

Hintergrundbild-Cache unter IE6

Fehler beim Flackern des CSS-Hintergrundbilds in ...

So installieren Sie Jupyter in Docker auf CentOS und öffnen Ports

Inhaltsverzeichnis Installieren Sie Jupyter Docke...

Eine kurze Analyse der expliziten Typkonvertierung von MySQL

CAST-Funktion Im vorherigen Artikel haben wir die...

Grundlegende Verwendung und Beispiele von yum (empfohlen)

yum-Befehl Yum (vollständiger Name Yellow Dog Upd...