So installieren Sie ModSecurity für Nginx unter CentOS 7, Debian 8 und Ubuntu 16.04

ModSecurity ist ein Open-Source-Modul für Webanwendungsfirewall (WAF), mit dem Apache, Nginx und IIS vor verschiedenen Cyberangriffen geschützt werden können, die auf potenzielle Schwachstellen in verschiedenen Webanwendungen abzielen

In diesem Artikel werden wir ModSecurity für Nginx unter CentOS 7, Debian 8 und Ubuntu 16.04 installieren und konfigurieren.

Voraussetzungen

  • Eine aktuelle Installation von CentOS 7, Debian 8 oder Ubuntu 16.04 64-Bit.
  • Anmelden als root.

Schritt 1: Aktualisieren Sie das System

Nach diesem Handbuch Aktualisieren Sie Ihre Server-Kernel und Pakete auf die neueste verfügbare Version.

Schritt 2: Installieren Sie Abhängigkeiten

Bevor Sie Nginx und ModSecurity erfolgreich kompilieren können, müssen Sie mehrere Softwarepakete wie folgt installieren.

a) Unter CentOS 7:

yum groupinstall -y "Development Tools"
yum install -y httpd httpd-devel pcre pcre-devel libxml2 libxml2-devel curl curl-devel openssl openssl-devel
shutdown -r now

b) Unter Debian 8 oder Ubuntu 16.04:

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

Schritt 3: Kompilieren Sie ModSecurity

Aufgrund mehrerer Instabilitäten, die in ModSecurity für den Nginx-Hauptzweig gemeldet wurden, wird derzeit offiziell empfohlen, nginx_refactoringwann immer möglich die neueste Version des Zweigs zu verwenden.

Laden Sie den nginx_refactoringZweig von ModSecurity für Nginx herunter :

cd /usr/src
git clone -b nginx_refactoring https://github.com/SpiderLabs/ModSecurity.git

Kompilieren Sie ModSecurity:

a) Unter CentOS 7:

cd ModSecurity
sed -i '/AC_PROG_CC/a\AM_PROG_CC_C_O' configure.ac
sed -i '1 i\AUTOMAKE_OPTIONS = subdir-objects' Makefile.am
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Hinweis: Die beiden sedobigen Befehle werden verwendet, um Warnmeldungen bei Verwendung neuerer Automake-Versionen zu vermeiden.

b) Unter Debian 8 oder Ubuntu 16.04:

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

Schritt 4: Kompilieren Sie Nginx

Laden Sie die neueste stabile Version von Nginx herunter und archivieren Sie sie Nginx 1.10.3zum Zeitpunkt des Schreibens:

cd /usr/src
wget https://nginx.org/download/nginx-1.10.3.tar.gz
tar -zxvf nginx-1.10.3.tar.gz && rm -f nginx-1.10.3.tar.gz

a) Unter CentOS 7:

Zunächst müssen Sie einen dedizierten Benutzer nginxund eine dedizierte Gruppe nginxfür Nginx erstellen :

groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -M nginx

Kompilieren Sie dann Nginx, während Sie ModSecurity- und SSL-Module aktivieren:

cd nginx-1.10.3/
./configure --user=nginx --group=nginx --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install

Ändern Sie den Standardbenutzer von Nginx:

sed -i "s/#user  nobody;/user nginx nginx;/" /usr/local/nginx/conf/nginx.conf

b) Unter Debian 8 oder Ubuntu 16.04:

Zunächst sollten Sie den vorhandenen Benutzer www-dataund die vorhandene Gruppe verwenden www-data.

Kompilieren Sie dann Nginx, während Sie ModSecurity- und SSL-Module aktivieren:

cd nginx-1.10.3/
./configure --user=www-data --group=www-data --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install

Ändern Sie den Standardbenutzer von Nginx:

sed -i "s/#user  nobody;/user www-data www-data;/" /usr/local/nginx/conf/nginx.conf

Nachdem Nginx erfolgreich installiert wurde, befinden sich verwandte Dateien unter:

nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"

Sie können die Installation testen mit:

/usr/local/nginx/sbin/nginx -t

Wenn nichts schief geht, sollte die Ausgabe sein:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

Für Ihre Bequemlichkeit können Sie eine systemd-Einheitendatei für Nginx einrichten:

cat <<EOF>> /lib/systemd/system/nginx.service
[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
EOF

In Zukunft können Sie Nginx wie folgt starten / stoppen / neu starten:

systemctl start nginx.service
systemctl stop nginx.service
systemctl restart nginx.service

Schritt 4: Konfigurieren Sie ModSecurity und Nginx

4.1 Nginx konfigurieren:

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

Suchen Sie das folgende Segment innerhalb des http {}Segments:

location / {
    root   html;
    index  index.html index.htm;
}

Fügen Sie die folgenden Zeilen in das location / {}Segment ein:

ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;
#proxy_pass http://localhost:8011;
#proxy_read_timeout 180s;

Das Endergebnis sollte sein:

location / {
    ModSecurityEnabled on;
    ModSecurityConfig modsec_includes.conf;
    #proxy_pass http://localhost:8011;
    #proxy_read_timeout 180s;
    root   html;
    index  index.html index.htm;
}

Speichern und Beenden:

:wq!

Hinweis: Die obige Nginx-Konfiguration ist nur eine Beispielkonfiguration für die Verwendung von Nginx als Webserver und nicht als Reverse-Proxy. Wenn Sie Nginx als Reverse-Proxy verwenden, entfernen Sie das #Zeichen in den letzten beiden Zeilen und nehmen Sie die entsprechenden Änderungen vor.

4.2 Erstellen Sie eine Datei mit dem Namen /usr/local/nginx/conf/modsec_includes.conf:

cat <<EOF>> /usr/local/nginx/conf/modsec_includes.conf
include modsecurity.conf
include owasp-modsecurity-crs/crs-setup.conf
include owasp-modsecurity-crs/rules/*.conf
EOF

Hinweis: Die obige Konfiguration wendet alle OWASP ModSecurity Core-Regeln im owasp-modsecurity-crs/rules/Verzeichnis an. Wenn Sie nur selektive Regeln anwenden möchten, sollten Sie die include owasp-modsecurity-crs/rules/*.confZeile entfernen und dann die genauen Regeln angeben, die Sie nach Schritt 4.5 benötigen.

4.3 Importieren von ModSecurity-Konfigurationsdateien:

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

4.4 Ändern Sie die /usr/local/nginx/conf/modsecurity.confDatei:

sed -i "s/SecRuleEngine DetectionOnly/SecRuleEngine On/" /usr/local/nginx/conf/modsecurity.conf

4.5 OWASP ModSecurity CRS-Dateien (Core Rule Set) hinzufügen:

cd /usr/local/nginx/conf
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs
mv crs-setup.conf.example crs-setup.conf
cd rules
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

Schritt 5: Testen Sie ModSecurity

Starten Sie Nginx:

systemctl start nginx.service

Öffnen Sie Port 80, um den Zugriff von außen zu ermöglichen:

a) Unter CentOS 7:

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

b) Auf Debian 8:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
touch /etc/iptables
iptables-save > /etc/iptables

c) Unter Ubuntu 16.04:

ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable    

Zeigen Sie mit Ihrem Webbrowser auf:

http://203.0.113.1/?param="><script>alert(1);</script>

Verwenden Sie grepdiese Option, um Fehlermeldungen wie folgt abzurufen:

grep error /usr/local/nginx/logs/error.log

Die Ausgabe sollte mehrere Fehlermeldungen enthalten, die ähnlich sind wie:

2017/02/15 14:07:54 [error] 10776#0: [client 104.20.23.240] ModSecurity: Warning. detected XSS using libinjection. [file "/usr/local/nginx/conf/owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf"] [line "56"] [id "941100"] [rev "2"] [msg "XSS Attack Detected via libinjection"] [data "Matched Data:  found within ARGS:param: \x22><script>alert(1);</script>"] [severity "CRITICAL"] [ver "OWASP_CRS/3.0.0"] [maturity "1"] [accuracy "9"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-xss"] [tag "OWASP_CRS/WEB_ATTACK/XSS"] [tag "WASCTC/WASC-8"] [tag "WASCTC/WASC-22"] [tag "OWASP_TOP_10/A3"] [tag "OWASP_AppSensor/IE1"] [tag "CAPEC-242"] [hostname ""] [uri "/index.html"] [unique_id "ATAcAcAkucAchGAcPLAcAcAY"]

Das ist es. Wie Sie sehen, hat das ModSecurity-Modul diesen Angriff gemäß seiner Standardaktionsrichtlinie erfolgreich protokolliert. Wenn Sie mehr individuelle Einstellungen vornehmen möchten, überprüfen und bearbeiten Sie bitte sorgfältig /usr/local/nginx/conf/modsecurity.confund /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.confDateien.



Leave a Comment

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist

ReactOS: Ist das die Zukunft von Windows?

ReactOS: Ist das die Zukunft von Windows?

ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.