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