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

So installieren Sie Nginx mit ModSecurity unter Ubuntu 15.04

ModSecurity ist eine Open-Source-Web Application Firewall (WAF) für Apache Nginx und IIS-Webserver. Diese Application-Layer-Firewall wurde von Trustwaves SpiderLabs entwickelt und unter der Apache-Lizenz 2.0 veröffentlicht. ModSecurity schützt Websites vor Hackern, indem es eine Reihe von Regeln für reguläre Ausdrücke verwendet, um allgemein bekannte Exploits herauszufiltern, es ermöglicht die Überwachung des HTTP-Verkehrs, Protokollierung, Echtzeitanalyse und Angriffserkennung. Es stehen mehr als 16.000 Regeln zur Verfügung, um Angriffe wie SQL-Injection, Cross-Site-Scripting (XSS), Local File Inclusion, Remote File Inclusion und anwendungsspezifische Regeln für viele Webanwendungen wie Wordpress, Joomla, Drupal usw. zu erkennen.

In diesem Tutorial zeige ich Ihnen, wie Sie mod_security für den schnellen Nginx-Webserver installieren. Ich werde ModSecurity als eigenständiges Modul konfigurieren und dann Nginx aus den Quellen erstellen, um ModSecurity einzubinden.

Voraussetzungen

  • Ein Ubuntu 15.04 Server, ich verwende hier die IP 192.168.1.106.
  • Root-Berechtigungen

Was wir in diesem Tutorial tun werden:

  • Aktualisieren Sie das Ubuntu 15.04-System und -Repository.
  • Installieren Sie die erforderlichen Abhängigkeiten, um Nginx und ModSecurity zu erstellen.
  • ModSecurity und Nginx herunterladen.
  • Installieren Sie ModSecurity und Nginx.
  • Nginx konfigurieren.
  • ModSecurity konfigurieren.
  • Konfigurieren Sie OWASP Core Rule Set (CRS).
  • Testen.

Alle folgenden Befehle müssen als root ausgeführt werden. Ausführen:

sudo -i

Root-Benutzer auf Ihrem Server zu werden.

1. System und Repository aktualisieren

Bevor Sie mit der Installation aller Abhängigkeiten beginnen, aktualisieren Sie bitte Ihr System:

apt-get update
apt-get upgrade

2. Installieren Sie die Build-Abhängigkeiten

Installieren Sie alle Pakete, die zum Kompilieren von Nginx und ModSecurity erforderlich sind, mit dem folgenden apt-Befehl:

apt-get install git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-prefork-dev libxml2-dev libcurl4-openssl-dev

3. Laden Sie ModSecurity und Nginx herunter

Wechseln Sie in das Verzeichnis "/usr/src/" , klonen Sie dann das ModSecurity-Repository von Github:

cd /usr/src/
git clone https://github.com/SpiderLabs/ModSecurity.git modsecurity

Laden Sie Nginx mit dem Befehl wget herunter, ich werde hier die stabile Nginx-Version 1.8 verwenden. Wenn Sie eine andere Version verwenden möchten, gehen Sie bitte zur Nginx-Downloadseite, um eine Liste aller verfügbaren Versionen zu erhalten.

wget http://nginx.org/download/nginx-1.8.0.tar.gz

4. Installieren Sie ModSecurity und Nginx

Jetzt ist es an der Zeit, ModSecurity zu installieren, gehen Sie bitte in das Verzeichnis /usr/src/modsecurity:

cd /usr/src/modsecurity/

Und kompilieren Sie ModSecurity als eigenständiges Modul auf Ihrem Server, damit wir es in Nginx einbinden können:

./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Gehen Sie nun in das nginx-Verzeichnis, kompilieren Sie Nginx und binden Sie das ModSecurity-Modul ein:

cd ../nginx-1.8.0
./configure \
  --user=www-data \
  --group=www-data \
  --with-debug \
  --with-ipv6 \
  --with-http_ssl_module \
  --add-module=/usr/src/modsecurity/nginx/modsecurity

Der Befehl configure erklärt:

Nginx wird unter dem Benutzer und der Gruppe "www-data" ausgeführt , und wir aktivieren das debug, ipv6 und ssl Module. Und schließlich binden wir das ModSecurity-Modul in Nginx ein.

Installieren Sie jetzt Nginx:

make
make install

Wenn der Befehl make install abgeschlossen ist, können Sie sehen, dass Nginx im Verzeichnis "/usr/local/nginx" installiert ist Verzeichnis:

cd /usr/local/nginx/

ll
drwxr-xr-x  2 root root 4096 Oct  3 07:21 conf/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 html/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 logs/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 sbin/

5. Konfigurieren Sie Nginx

Bearbeiten Sie die nginx-Konfigurationsdatei mit vi/vim und konfigurieren Sie nginx so, dass es unter dem Benutzer "www-data" ausgeführt wird .

cd /usr/local/nginx/
vi conf/nginx.conf

Kommentieren Sie in der ersten Zeile die Zeile „user“ aus und ändern Sie den Benutzer in www-data:

user  www-data;

Speichern und beenden.

Erstellen Sie einen Symlink für die nginx-Binärdatei, damit wir den Befehl "nginx" verwenden können per direkt.

ln -s /usr/local/nginx/sbin/nginx /bin/nginx

Als nächstes erstellen wir ein systemd-Skript für Nginx, das zum Starten / Stoppen des Nginx-Daemons verwendet wird. Gehen Sie bitte in das Verzeichnis "/lib/systemd/system/" und erstellen Sie eine neue Datei "nginx.service" mit vi:

cd /lib/systemd/system/
vi nginx.service

Fügen Sie das folgende Skript ein:

[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillStop=/usr/local/nginx/sbin/nginx -s stop

KillMode=process
Restart=on-failure
RestartSec=42s

PrivateTmp=true
LimitNOFILE=200000

[Install]
WantedBy=multi-user.target

Speichern und beenden.

Laden Sie nun den systemd-Daemon neu, damit systemd unsere neue Nginx-Dienstdatei lädt.

systemctl daemon-reload

Testen Sie die nginx-Konfiguration und starten Sie nginx mit dem systemctl-Befehl:

nginx -t
systemctl start nginx

6. Konfigurieren Sie ModSecurity

Kopieren Sie die ModSecurity-Konfigurationsdatei in das nginx-Verzeichnis und nennen Sie sie "modsecurity.conf" :

cp /usr/src/modsecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /usr/src/modsecurity/unicode.mapping /usr/local/nginx/conf/

Öffnen Sie die Datei modsecurity.conf mit dem vi-Editor:

cd /usr/Local/nginx/conf/
vi modsecurity.conf

Ändern Sie in Zeile 7 "DetectionOnly" auf "ein" .

SecRuleEngine On

Erhöhen Sie in Zeile 38 den Wert von "SecRequestBodyLimit " bis "100000000".

SecRequestBodyLimit 100000000

Ändern Sie in Zeile 192 den Wert von "SecAuditLogType " zu "Gleichzeitig " und kommentieren Sie die Zeile SecAuditLog aus und kommentieren Sie Zeile 196 aus.

SecAuditLogType Concurrent
#SecAuditLog /var/log/modsec_audit.log

# Specify the path for concurrent audit logging.
SecAuditLogStorageDir /opt/modsecurity/var/audit/

Speichern und beenden.

Erstellen Sie nun ein neues Verzeichnis für das Audit-Log von ModSecurity und ändern Sie den Besitzer in www-data.

mkdir -p /opt/modsecurity/var/audit/
chown -R www-data:www-data /opt/modsecurity/var/audit/

7. OWASP Core Rule Set (CRS) konfigurieren

Laden Sie das OWASP Core Rule Set von github herunter.

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

Wechseln Sie in das Verzeichnis "owasp-modsecurity-crs " und kopieren Sie das Verzeichnis "base_rules" in das nginx-Verzeichnis.

cd owasp-modsecurity-crs
cp -R base_rules/ /usr/Local/nginx/conf/

Bearbeiten Sie modsecurity.conf und fügen Sie OWASP CRS hinzu.

cd /usr/Local/nginx/conf/
vi modsecurity.conf

Bitte gehen Sie zum Ende der Datei und fügen Sie die folgende Konfiguration hinzu:

#DefaultAction
SecDefaultAction "log,deny,phase:1"

#If you want to load single rule /usr/loca/nginx/conf
#Include base_rules/modsecurity_crs_41_sql_injection_attacks.conf

#Load all Rule
Include base_rules/*.conf

#Disable rule by ID from error message (for my wordpress)
SecRuleRemoveById 981172 981173 960032 960034 960017 960010 950117 981004 960015

Speichern und beenden.

Fügen Sie als letzten Schritt die Datei modsecurity.conf zur Nginx-Konfiguration hinzu, indem Sie die Datei „nginx.conf bearbeiten " Datei.

vi conf/nginx.conf

Fügen Sie die modsecurity.conf hinzu:

[.....]

#Enable ModSecurity ModSecurityEnabled on; ModSecurityConfig modsecurity.conf; root html; index index.php index.html index.htm;

[.....]

Speichern und beenden.

Starten Sie Nginx neu, um die Konfigurationsänderungen zu übernehmen:

systemctl restart nginx

8. Testen

Ich habe eine WordPress-Website, die auf Nginx und ModSecurity ausgeführt wird. Sie funktioniert einwandfrei. Zum Testen werde ich ein neues Plug-in installieren, das für XSS und SQL Injection anfällig ist.

Hier sind die Ergebnisse:

XSS verboten
https://www.exploit-db.com/exploits/37107/

Browserzugriff:

Serverprotokoll:

SQL-Injection verboten
https://www.exploit-db.com/exploits/37560/

Browserzugriff:

Serverprotokoll:

Nginx und ModSecurity erfolgreich.

Schlussfolgerung

ModSecurity ist eine Open-Source-WAF (Web Application Firewall), die von den SpiderLabs von Trustwave entwickelt wurde, um Ihre Webanwendungen zu sichern. Es stehen mehr als 16.000 Regeln zur Verfügung, um Angriffe wie SQL Injection, XSS, LFI, RFI usw. zu erkennen. ModSecurity ist einfach zu installieren und als Modul für Apache, Nginx und IIS für Windows verfügbar.

Referenz

  • https://www.modsecurity.org/documentation.html
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project
  • https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual

Ubuntu
  1. So installieren Sie WordPress mit Nginx unter Ubuntu 18.04

  2. So installieren Sie phpMyAdmin mit Nginx unter Ubuntu 18.04

  3. So installieren Sie MediaWiki mit Nginx unter Ubuntu 16.04

  4. So stellen Sie Modsecurity mit Nginx auf Ubuntu 20.04 LTS bereit

  5. So installieren Sie PHP 7.4 mit Nginx unter Ubuntu 20.04

So installieren Sie OSClass mit Nginx unter Ubuntu 20.04

So installieren Sie WordPress 5.x mit Nginx auf Ubuntu 18.04 / Ubuntu 16.04

So installieren Sie WordPress mit Nginx auf Ubuntu

So installieren Sie Nextcloud 13 auf Ubuntu 16.04 mit Nginx

So installieren Sie WonderCMS unter Ubuntu 20.04 (mit Nginx)

So installieren Sie Nginx unter Ubuntu 15.04