GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So richten Sie ModSecurity auf Apache ein und konfigurieren es

Einführung

ModSecurity ist ein Plug-in-Modul für Apache, das wie eine Firewall funktioniert. Es funktioniert über Regelsätze, mit denen Sie Ihre Serversicherheit anpassen und konfigurieren können.

ModSecurity kann auch den Webverkehr in Echtzeit überwachen und Ihnen dabei helfen, Eindringlinge zu erkennen und darauf zu reagieren. Es kann mit Apache, Nginx und IIF verwendet werden und ist mit Debian, Ubuntu und CentOS kompatibel.

Dieses Tutorial erklärt, wie ModSecurity auf Apache-Webservern installiert und konfiguriert wird.

Voraussetzungen

  • Der LAMP-Stack (Linux, Apache, MySQL, PHP) installiert und konfiguriert
  • Zugriff auf ein Benutzerkonto mit sudo oder root Privilegien
  • Ein Paketmanager (APT oder YUM), standardmäßig enthalten
  • Ein Befehlszeilen-/Terminalfenster (Strg-Alt-T, Strg-Alt-F1)
  • Ein Texteditor wie nano

Schritt 1:Software-Repositories aktualisieren

Öffnen Sie ein Terminalfenster und geben Sie Folgendes ein:

Auf Debian / Ubuntu

sudo apt update -y

Auf CentOS

sudo yum update -y

Schritt 2:ModSecurity auf Apache installieren

ModSecurity unter Debian installieren

1. Geben Sie in einem Terminalfenster Folgendes ein:

sudo apt install libapache2-modsecurity

Wenn Sie dazu aufgefordert werden, drücken Sie y und drücken Sie Enter damit der Vorgang abgeschlossen werden kann.

2. Starten Sie den Apache-Dienst neu:

sudo systemctl restart apache2

Es gibt keine Ausgabe, wenn Apache erfolgreich neu gestartet wurde.

3. Überprüfen Sie die Softwareversion (es sollte 2.8.0 oder höher sein):

apt-cache show libapache2-modsecurity

Installieren Sie ModSecurity auf Ubuntu 18.04

1. Geben Sie in einem Terminalfenster Folgendes ein:

sudo apt install libapache2-mod-security2

Wenn Sie dazu aufgefordert werden, drücken Sie y und drücken Sie Enter damit der Vorgang abgeschlossen werden kann.

2. Starten Sie den Apache-Dienst neu:

sudo systemctl restart apache2

Es gibt keine Ausgabe, wenn Apache erfolgreich neu gestartet wurde.

3. Überprüfen Sie die Softwareversion (sollte 2.8.0 oder höher sein):

apt-cache show libapache2-mod-security2

Installieren Sie ModSecurity auf CentOS 7

1. Geben Sie Folgendes in ein Terminalfenster ein:

sudo yum install mod_security

Wenn Sie dazu aufgefordert werden, drücken Sie y und drücken Sie Enter damit der Vorgang abgeschlossen werden kann.

2. Starten Sie den Apache-Dienst neu:

sudo systemctl restart httpd.service

3. Überprüfen Sie die Softwareversion (sollte 2.8.0 oder höher sein):

yum info mod_security

Schritt:3 ModSecurity konfigurieren

Bei der Installation ist ModSecurity so eingestellt, dass Ereignisse gemäß den Standardregeln protokolliert werden. Sie müssen die Konfigurationsdatei bearbeiten, um die Regeln zum Erkennen und Blockieren von Datenverkehr anzupassen.

Die Standardkonfigurationsdatei ist /etc/modsecurity/modsecurity.conf-recommended.

1. Kopieren Sie die Datei und benennen Sie sie um:

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

2. Ändern Sie als Nächstes den ModSecurity-Erkennungsmodus . Wechseln Sie zuerst in die /etc/modsecurity Ordner:

sudo cd /etc/modsecurity

3. Öffnen Sie die Konfigurationsdatei in einem Texteditor (wir verwenden nano):

sudo nano modsecurity.conf

Ganz oben sollten Sie einen Eintrag mit der Bezeichnung:

sehen
SecRuleEngine DetectionOnly

Ändern Sie dies wie folgt:

SecRuleEngine On

4. Verwenden Sie STRG+X drücken Sie zum Beenden y dann Enter um die Änderungen zu speichern.

5. Navigieren Sie weg vom Ordner /etc/modsecurity:

cd

6. Starten Sie Apache neu:

Unter Debian/Ubuntu

sudo systemctl restart apache2

Auf CentOS

sudo systemctl restart httpd.service

Dadurch wird ModSecurity mit den grundlegenden Standardregeln aktiviert. In einigen Linux-Versionen enthält dies den OWASP Core Rule Set. Diese kann jedoch von der neuesten Version abweichen, die von den Entwicklern gepflegt wird.

Schritt 4:Neueste OWASP ModSecurity-Regeln herunterladen

Das neueste Core Rule Set (CRS) für ModSecurity wird auf GitHub gepflegt.

1. Installieren Sie G es falls es nicht bereits auf Ihrem System enthalten ist.

Git unter Debian/Ubuntu installieren:

sudo apt install git

Installieren Sie Git unter CentOS:

sudo yum install git

2. Laden Sie eine Kopie des CRS herunter:

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

Dadurch wird eine Kopie des Verzeichnisses als Unterverzeichnis Ihres aktuellen Arbeitsspeicherorts abgelegt.

3. Öffnen Sie ein neues Verzeichnis:

cd owasp-modsecurity-crs

4. Verschieben Sie die crs-setup-Datei:

sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf

5. Verschieben Sie dann das Verzeichnis rules/:

sudo mv rules/ /etc/modsecurity

Wenn beim Versuch, dieses Verzeichnis zu verschieben, ein Fehler auftritt, geben Sie Folgendes ein:

sudo mkdir /etc/modsecurity/rules
cd rules 
sudo cp *.* /etc/modsecurity/rules

6. Überprüfen Sie als Nächstes Ihre security2.conf Datei, um zu überprüfen, ob sie zum Laden der ModSecurity-Regeln eingestellt ist:

sudo nano /etc/apache2/mods-enabled/security2.conf

Vergewissern Sie sich, dass die folgenden Zeilen enthalten und nicht auskommentiert sind:

IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf

Wenn sie nicht vorhanden sind, fügen Sie sie hinzu. Duplizieren Sie sie nicht, oder Sie riskieren, Ihren Apache-Dienst zu deaktivieren.

7. Starten Sie den Apache-Dienst neu:

Unter Debian/Ubuntu

sudo systemctl restart apache2

Auf CentOS

sudo systemctl restart httpd.service

Schritt 5:Apache-Konfiguration testen

1. Öffnen Sie die standardmäßige Apache-Konfigurationsdatei:

sudo nano /etc/apache2/sites-available/000-default.conf

2. Suchen Sie </VirtualHost> -Tag unten und fügen Sie die folgenden Zeilen hinzu:

SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'phoenixNAP test rule was triggered'"

Sie können die msg ändern nach Belieben.

Speichern und beenden Sie die Datei (CTRL+X> y> Geben Sie ein ).

3. Starten Sie den Apache-Dienst neu:

Unter Debian/Ubuntu

sudo systemctl restart apache2

Auf CentOS

sudo systemctl restart httpd.service

4. Geben Sie dann den folgenden Befehl ein:

curl localhost/index.html?testparam=test

Das System antwortet, indem es versucht, die Standard-Webseite anzuzeigen. Anstelle des Inhalts generiert es Fehlercodes und Meldungen innerhalb der Tags:

5. Sie können bestätigen, dass ModSecurity funktioniert hat, indem Sie in den Apache-Fehlerprotokollen mit dem folgenden Befehl nach Code 403 suchen:

sudo tail -f /var/log/apache2/error.log

Einer der Einträge im unteren Bereich sollte der ModSecurity-Fehlercode sein:

ModSecurity und OWASP CRS mit Bash-Skript testen

Eine andere Methode, die Sie zum Testen von ModSecurity verwenden können, ist die Verwendung eines B Asche Skript.

1. Geben Sie im Terminal folgenden Befehl ein:

curl localhost/index.html?exec=/bin/bash

Die Ausgabe zeigt die gleichen Fehlermeldungen wie beim letzten Mal.

2. Sehen Sie sich die Apache-Datei error.log erneut an und Sie werden feststellen, dass die Regel aktiviert wurde:

sudo tail -f /var/log/apache2/error.log

Die Ausgabe zeigt die OWASP-bezogene ModSecurity-Fehlermeldung.

Schritt 6:Erstellen Sie ModSecurity-Regeln

Nachfolgend finden Sie ein Testbeispiel, wie Sie ModSecurity verwenden können, um bestimmte Schlüsselwörter in einem PHP-Formular zu blockieren.

1. Erstellen Sie eine PHP-Datei im HTML-Verzeichnis mit dem Befehl:

sudo nano /var/www//html/test.php

2. Geben Sie den folgenden Code in die Datei ein:

<html>
<body>
<?php
if(isset($_POST['data']))
echo $_POST['data'];
else
{
?>
<form method="post" action="">
Enter text here:<textarea name="data"></textarea>
<input type="submit"/>
</form>
<?php
}
?>
</body>
</html>

Speichern Sie die Datei und beenden Sie sie.

3. Erstellen Sie als Nächstes eine neue ModSecurity-Datei mit benutzerdefinierten Regeln:

sudo nano /etc/modsecurity/modsecurity_custom_rules.conf

Fügen Sie die folgenden Zeilen hinzu:

SecRule REQUEST_FILENAME "test.php" "id:'400001',chain,deny,log,msg:'Spam detected'"
SecRule REQUEST_METHOD "POST" chain
SecRule REQUEST_BODY "@rx (?i:(enlarge|Nigerian|gold))"

Ändern Sie natürlich die Schlüsselwörter in der letzten Zeile nach Belieben.

Speichern Sie die Datei und beenden Sie sie.

4. Laden Sie den Apache-Dienst neu:

Unter Debian/Ubuntu

sudo systemctl restart apache2

Auf CentOS

sudo systemctl restart httpd.service

5. Starten Sie das Formular in einem Webbrowser

localhost/test.php

6. Geben Sie eines der Schlüsselwörter aus der Regel in das Formular ein. In diesem Beispiel:enlarge, Nigerian, oder Gold .

Sie sollten eine 403 Forbidden-Fehlermeldung erhalten.

Sie können auch die /var/log/apache2/error.log überprüfen Datei, um die Aktion von ModSecurity zu überprüfen.


Ubuntu
  1. So aktivieren und konfigurieren Sie die .htaccess-Datei auf Apache

  2. So installieren Sie Apache unter CentOS 8

  3. So installieren Sie Apache unter Ubuntu 18.04

  4. So richten Sie virtuelle Apache-Hosts unter Ubuntu 18.04 ein

  5. So richten Sie vHosts in Apache ein

So installieren Sie Apache unter Ubuntu 20.04 LTS

So installieren Sie ModSecurity Apache unter Ubuntu 20.04 LTS

Wie richte ich einen Apt-Cacher-Server ein?

Wie installiere und richte ich Apache 2 ein?

So installieren Sie ModSecurity Apache unter Ubuntu 20.04

So installieren Sie Apache unter Ubuntu 22.04