So installierst du Apache mit ModSecurity unter Ubuntu 22.04

ModSecurity ist ein kostenloses und quelloffenes Firewall-Tool, das von verschiedenen Webservern wie Apache, Nginx und IIS unterstützt wird. Es handelt sich um eine signaturbasierte Firewall, die verschiedene Arten von Angriffen blockieren kann, darunter Cross-Site-Scripting (XSS), Brute-Force-Angriffe und bekannte Code-Injection-Angriffe. Sie bietet verschiedene Regelsätze, mit denen du die Sicherheit deines Servers anpassen und konfigurieren kannst. Außerdem kann es den Webverkehr in Echtzeit überwachen und dir helfen, Angriffe zu erkennen und darauf zu reagieren.

In diesem Tutorial erkläre ich dir, wie du ModSecurity mit Apache unter Ubuntu 22.04 einrichtest.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 22.04 läuft.
  • Ein Root-Passwort ist auf deinem Server eingerichtet.

Apache Webserver installieren

Bevor du beginnst, musst du die neueste Version des Apache-Webserver-Pakets auf deinem Server installieren. Installiere zunächst alle erforderlichen Abhängigkeiten mit dem folgenden Befehl:

apt install gnupg2 software-properties-common curl wget git unzip -y

Sobald alle Abhängigkeiten installiert sind, fügst du das Apache-Repository mit dem folgenden Befehl hinzu:

add-apt-repository ppa:ondrej/apache2 -y

Als Nächstes aktualisierst du den Repository-Cache und installierst das Apache-Paket mit dem folgenden Befehl:

apt update -y
apt install apache2 -y

Sobald der Apache installiert ist, kannst du mit dem nächsten Schritt fortfahren.

ModSecurity installieren

Als Nächstes führst du den folgenden Befehl aus, um das Apache-Modul ModSecurity zu installieren:

apt install libapache2-mod-security2 -y

Sobald das Paket installiert ist, aktivierst du das ModSecurity-Modul mit dem folgenden Befehl:

a2enmod security2

Starte anschließend den Apache-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart apache2

Du kannst den Apache-Status auch mit folgendem Befehl überprüfen:

systemctl status apache2

Du erhältst die folgende Ausgabe:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-18 10:49:42 UTC; 4s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 74445 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 74449 (apache2)
      Tasks: 55 (limit: 2242)
     Memory: 29.7M
        CPU: 229ms
     CGroup: /system.slice/apache2.service
             ??74449 /usr/sbin/apache2 -k start
             ??74450 /usr/sbin/apache2 -k start
             ??74451 /usr/sbin/apache2 -k start

Oct 18 10:49:42 ubuntu2204 systemd[1]: Starting The Apache HTTP Server...

ModSecurity konfigurieren

Als Nächstes bearbeitest du die ModSecurity-Konfigurationsdatei:

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

Entferne das Kommentarzeichen in der folgenden Zeile:

IncludeOptional /etc/modsecurity/*.conf

Speichere und schließe die Datei und benenne die ModSecurity-Konfigurationsdatei um:

mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Als Nächstes bearbeitest du die ModSecurity-Konfigurationsdatei:

nano /etc/modsecurity/modsecurity.conf

Ändere die folgenden Zeilen:

SecRuleEngine On
SecAuditLogParts ABCEFHJKZ

Speichere und schließe die Datei und starte den Apache-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart apache2

Installiere das OWASP Core Rule Set

Um deine Webanwendung vor bösartigen Angriffen zu schützen, musst du das OWASP Core Rule Set herunterladen und auf deinem Server installieren.

Lade zunächst das neueste Regelset mit dem folgenden Befehl herunter:

wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz

Sobald der Download abgeschlossen ist, entpackst du die heruntergeladene Datei mit dem folgenden Befehl:

tar xvf v3.3.0.tar.gz

Als Nächstes erstellst du ein Verzeichnis für die Regeln und verschiebst die entpackten Regeln in dieses Verzeichnis:

mkdir /etc/apache2/modsecurity-crs/
mv coreruleset-3.3.0/ /etc/apache2/modsecurity-crs

Navigiere dann zu deinem OWASP-Regelverzeichnis und benenne die Konfigurationsdatei um:

cd /etc/apache2/modsecurity-crs/coreruleset-3.3.0/
mv crs-setup.conf.example crs-setup.conf

Als Nächstes bearbeitest du die ModSecurity-Konfigurationsdatei und legst den Pfad für deine OWASP-Regelsätze fest:

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

Füge die folgenden Zeilen hinzu:

IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/crs-setup.conf
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/rules/*.conf

Speichere und schließe die Datei und überprüfe den Apache mit folgendem Befehl auf Syntaxfehler:

apache2ctl -t

Wenn alles in Ordnung ist, erhältst du die folgende Ausgabe:

Syntax OK

Starte abschließend den Apache-Dienst neu, um die Konfiguration zu übernehmen:

systemctl restart apache2

Verifiziere ModSecurity

Jetzt ist der Apache Webserver mit ModSecurity konfiguriert. Jetzt ist es an der Zeit, zu testen, ob es funktioniert oder nicht.

Öffne deine Befehlszeilenschnittstelle und führe den folgenden Befehl aus:

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

Du solltest die Fehlermeldung 403 Forbidden erhalten:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at localhost Port 80</address>
</body></html>

Du kannst die ModSecurity auch mit folgendem Befehl testen:

curl localhost?doc=/bin/ls

Du erhältst die folgende Ausgabe:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at localhost Port 80</address>
</body></html>

Du kannst auch das ModSecurity-Protokoll für weitere Informationen überprüfen:

tail /var/log/apache2/modsec_audit.log

Du erhältst die folgende Ausgabe:

SecRule "TX:INBOUND_ANOMALY_SCORE" "@ge %{tx.inbound_anomaly_score_threshold}" "phase:5,id:980130,pass,t:none,log,noauditlog,msg:'Inbound Anomaly Score Exceeded (Total Inbound Score: %{TX.INBOUND_ANOMALY_SCORE} - SQLI=%{tx.sql_injection_score},XSS=%{tx.xss_score},RFI=%{tx.rfi_score},LFI=%{tx.lfi_score},RCE=%{tx.rce_score},PHPI=%{tx.php_injection_score},HTTP=%{tx.http_violation_score},SESS=%{tx.session_fixation_score}): individual paranoia level scores: %{TX.ANOMALY_SCORE_PL1}, %{TX.ANOMALY_SCORE_PL2}, %{TX.ANOMALY_SCORE_PL3}, %{TX.ANOMALY_SCORE_PL4}',tag:event-correlation,ver:OWASP_CRS/3.3.0"

SecAction "phase:5,id:980145,pass,t:none,nolog,noauditlog,ver:OWASP_CRS/3.3.0,setvar:tx.executing_anomaly_score=%{tx.outbound_anomaly_score_pl1},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl2},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl3},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl4}"

SecRule "TX:OUTBOUND_ANOMALY_SCORE" "@lt %{tx.outbound_anomaly_score_threshold}" "phase:5,id:980150,pass,t:none,log,noauditlog,msg:'Outbound Anomaly Score (Total Outbound Score: %{TX.OUTBOUND_ANOMALY_SCORE}): individual paranoia level scores: %{TX.OUTBOUND_ANOMALY_SCORE_PL1}, %{TX.OUTBOUND_ANOMALY_SCORE_PL2}, %{TX.OUTBOUND_ANOMALY_SCORE_PL3}, %{TX.OUTBOUND_ANOMALY_SCORE_PL4}',tag:event-correlation,ver:OWASP_CRS/3.3.0,chain"
#SecRule "TX:MONITOR_ANOMALY_SCORE" "@gt 1"


--c2d93508-Z--

Logrotate konfigurieren

Wenn du ModSecurity auf einer stark frequentierten Website verwendest. Das Audit-Protokoll von ModSecurity kann sehr schnell zu groß werden. In diesem Fall kannst du die Logrotation für das ModSecurity-Auditprotokoll konfigurieren. Du kannst dies mit dem folgenden Befehl konfigurieren:

nano /etc/logrotate.d/modsec

Füge die folgenden Zeilen ein:

/var/log/apache2/modsec_audit.log
{
        rotate 31
        daily
        missingok
        compress
        delaycompress
        notifempty
}

Speichere und schließe die Datei, wenn du fertig bist. Die obige Konfigurationsdatei rotiert die Protokolldatei jeden Tag und komprimiert sie.

Fazit

In diesem Beitrag haben wir erklärt, wie du ModSecurity mit Apache unter Ubuntu 22.04 einrichtest. Außerdem haben wir das OWASP-Regelwerk heruntergeladen und mit ModSecurity konfiguriert. Deine Website ist nicht vollständig vor verschiedenen Arten von Angriffen geschützt. Wenn du noch Fragen hast, kannst du mich gerne fragen.

Das könnte dich auch interessieren …