ModSecurity ist eine kostenlose Open-Source-Firewall für Webanwendungen, die von verschiedenen Webservern wie Apache, IIS und Nginx unterstützt wird. Es wird als externe Sicherheitsschicht zum Schutz von Webservern eingesetzt.
In diesem Tutorial erfahren Sie, wie Sie die ModSecurity-Firewall mit vorinstalliertem Nginx installieren. Wir haben den Ubuntu 20.04-Server verwendet, um den Prozess zu demonstrieren.
Voraussetzungen
Ubuntu 20.04 LTS-Server
Nginx auf Ubuntu-Server installiert
Installationsanleitung
Wenn Sie Nginx nicht auf Ihrem Server installiert haben, befolgen Sie diese Anleitung, um die Modsecurity-Installationsvoraussetzungen zu erfüllen:
https://linuxways.net/ubuntu/how-to-install-nginx-on-ubuntu-20-04-lts-using-source-code/
Nachdem Sie Nginx installiert haben, beginnen wir mit der Installation von ModSecurity.
Schritt 1:Installieren Sie libmodsecurity3
Installieren Sie zunächst git auf Ihrem Computer, damit Sie das ModSecurity-Git-Repository klonen können. Wir können dies tun, indem wir diesen Befehl ausführen:
sudo apt install git -y
Nachdem Git installiert ist, klonen Sie das Repository, indem Sie diesen Befehl ausführen:
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
Schritt 2:Gehen Sie zum Modsecurity-Verzeichnis
Nachdem Sie das modsecurity-Git-Repository geklont haben, wechseln Sie in das modsecurity-Verzeichnis und folgen Sie dabei dem folgenden Pfad:
cd /usr/local/src/ModSecurity/
Schritt 3:libmodsecurity3-Abhängigkeiten installieren
Da wir uns nun im Modsecurity-Verzeichnis befinden, werden wir in diesem Schritt libmodsecurity3-Abhängigkeiten installieren. Führen Sie diesen Befehl aus:
sudo apt install gcc make build-essential autoconf automake libtool libcurl4-openssl-dev liblua5.3-dev libfuzzy-dev ssdeep gettext pkg-config libpcre3 libpcre3-dev libxml2 libxml2-dev libcurl4 libgeoip-dev libyajl-dev doxygen -y
Schritt 4:Git-Module installieren
Installieren Sie nun Git-Submodule mit Hilfe dieses Befehls:
git submodule init
Als nächstes werden wir die Submodule aktualisieren:
git submodule update
Schritt 5:Erstellen Sie die Modsecurity-Umgebung
Es ist an der Zeit, die Modsecurity-Umgebung aufzubauen. Führen Sie dazu den folgenden Befehl aus:
./build.sh
Konfigurieren Sie nun mit diesem Befehl:
./configure
Danach erhalten Sie diesen Fehler:
Es ist in Ordnung, dies zu ignorieren und weiterzumachen.
Schritt 6:Kompilieren Sie den Modsecurity-Quellcode
Jetzt kompilieren wir die Umgebung für libmodsecurity3 mit diesem Befehl:
make
Wenn Sie die Kompilierungsgeschwindigkeit erhöhen möchten, können Sie -j
make -j 4
Als nächstes führen wir den Installationsbefehl aus:
sudo make install
Die Installation erfolgt im Verzeichnis /usr/local/modsecurity/ .
Step 7: Install modsecurity-nginx connector
In diesem Schritt installieren wir den Modsecurity-nginx-Connector. Es ist der Verbindungs- und Kommunikationspunkt zwischen Nginx und ModSecurity.
Zunächst müssen wir das Connector-Repository klonen. Führen Sie dazu diesen Befehl aus:
sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
/usr/local/src/ModSecurity-nginx/
Schritt 8:Modsecurity-nginx-Abhängigkeiten installieren
Gehen Sie zuerst wie folgt in das Nginx-Quellverzeichnis:
cd /usr/local/src/nginx/nginx-1.21.1
Stellen Sie sicher, dass Sie die Nginx-Version im Befehl durch Ihre aktuelle Nginx-Version ersetzen, andernfalls erhalten Sie eine Fehlermeldung.
Führen Sie diesen Befehl aus, um die erforderlichen Abhängigkeiten zu installieren:
sudo apt build-dep nginx && sudo apt install uuid-dev -y
Als Nächstes kompilieren wir das Modsecurity-nginx-Connector-Modul mit dem Flag –with-compat, indem wir diesen Befehl ausführen:
sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx
Führen Sie nun diesen Befehl aus, um die dynamischen Module zu erstellen:
sudo make modules
Kopieren Sie nun das dynamische Modul, das Sie gerade in objs/ngx_http_modsecurity_module.so erstellt haben, mit Hilfe dieses Befehls nach /usr/share/nginx/modules:
sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/
Schritt 9:Aktivieren Sie Modsecurity in der Nginx-Konfigurationsdatei
Um Modsecurity in Nginx zu aktivieren, müssen Sie zuerst das Lademodul und den Pfad zu Ihrem Modsecurity-Modul in der Konfiguration angeben.
Öffnen Sie die Nginx-Konfigurationsdatei mit dem Nano-Editor wie folgt:
sudo nano /etc/nginx/nginx.conf
Fügen Sie in der Datei oben diese Zeile hinzu:
load_module modules/ngx_http_modsecurity_module.so;
Fügen Sie im Abschnitt HTTP {} die folgenden Codezeilen hinzu:
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;
Schritt 10:Verzeichnis und Dateien für Modsecurity konfigurieren
Erstellen Sie ein Verzeichnis mit dem Namen modsec. Der Pfad des Verzeichnisses wird im Befehl angegeben:
sudo mkdir /etc/nginx/modsec/
Sie werden dieses Verzeichnis in Zukunft benötigen, um Konfigurationsdateien und Regeln zu speichern.
Kopieren Sie nun die Beispiel-Modsecurity-Konfigurationsdatei aus dem geklonten Git-Verzeichnis mit diesem Befehl:
sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
Öffnen Sie nun die modsecurity Konfigurationsdatei:
sudo nano /etc/nginx/modsec/modsecurity.conf
Suchen Sie die SecRuleEngine-Direktive in der Datei in Zeile 7 und ändern Sie sie wie folgt in DetectionOnly:
secruleEngine DetectionOnly
Um Modsecurity zu aktivieren, ändern Sie die folgende Direktive wie folgt in On:
secRuleEngine on
Suchen Sie nun die folgende Direktive in Zeile 224:
secAuditLogParts ABIJDEFHZ
Ändern Sie es in:
secAuditLogParts ABCDEFHJKZ
Erstellen Sie nun die Datei modsec-config.conf. Hier fügen Sie modsecurity.conf und andere Regeln für modsecurity hinzu:
sudo nano /etc/nginx/modsec/modsec-config.conf
Fügen Sie in der gerade erstellten Datei diese Zeile hinzu:
Include /etc/nginx/modsec/modsecurity.conf
Speichern Sie die Datei und beenden Sie sie.
Schritt 11:Kopieren Sie die unicode.mapping-Datei
Kopieren Sie abschließend die unicode.mapping-Datei von Modsecurity wie folgt:
sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/
Schritt 12:Überprüfen Sie die Nginx-Konfiguration
Überprüfen Sie vor dem Neustart von Nginx, ob die Konfiguration in Ordnung ist, indem Sie diesen Befehl ausführen:
sudo nginx -t
Wenn Sie die folgende Ausgabe erhalten, können Sie loslegen:
Schritt 13:Nginx neu laden
Starten Sie nun Nginx mit diesem Befehl neu:
sudo systemctl restart nginx
In diesem Handbuch haben wir gesehen, wie wir Modsecurity auf einem Ubuntu-Server installieren können, auf dem Nginx bereits vorinstalliert ist. Wir haben auch gesehen, wie man ModSecurity und Nginx konfiguriert, um sie mit Hilfe einiger einfach zu befolgender Befehle zu verbinden.