Nginx mit libmodsecurity und OWASP ModSecurity Core Rule Set auf Ubuntu 16.04

In diesem Tutorial zeige ich Ihnen, wie Sie die neueste Version von Nginx mit libmodsecurity (Modsecurity 3.x) kompilieren können, NICHT zu verwechseln mit Modsecurity 2.9. Wir werden auch das OWASP ModSecurity Core Rule Set (CRS) integrieren.

Libmodsecurity ist eine umfassende Neufassung von ModSecurity, die eine verbesserte Leistung und Stabilität bietet. Obwohl Modsecurity 2.9.x für verschiedene Plattformen angeboten wurde, bevorzugte es wirklich die Bereitstellung mit Apache und die Bereitstellung mit anderen Plattformen, die verschiedene Abhängigkeiten von Drittanbietern auf Kosten der Leistung erforderten. Libmodsecurity ändert das alles, indem sie eine Neuschreibung von Grund auf ist. Weitere Informationen über Libmodsecurity finden Sie hier.

Dieses Handbuch geht davon aus, dass Sie bereits eine brandneue aktualisierte Instanz von Ubuntu 16.04 64-Bit haben.

1. Installationsvoraussetzungen

Installationsvoraussetzungen

apt-get install apache2-dev autoconf automake build-essential bzip2 checkinstall devscripts flex g++ gcc git graphicsmagick-imagemagick-compat graphicsmagick-libmagick-dev-compat libaio-dev libaio1 libass-dev libatomic-ops-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libbz2-dev libcdio-cdda1 libcdio-paranoia1 libcdio13 libcurl4-openssl-dev libfaac-dev libfreetype6-dev libgd-dev libgeoip-dev libgeoip1 libgif-dev libgpac-dev libgsm1-dev libjack-jackd2-dev libjpeg-dev libjpeg-progs libjpeg8-dev liblmdb-dev libmp3lame-dev libncurses5-dev libopencore-amrnb-dev libopencore-amrwb-dev libpam0g-dev libpcre3 libpcre3-dev libperl-dev libpng12-dev libpng12-0 libpng12-dev libreadline-dev librtmp-dev libsdl1.2-dev libssl-dev libssl1.0.0 libswscale-dev libtheora-dev libtiff5-dev libtool libva-dev libvdpau-dev libvorbis-dev libxml2-dev libxslt-dev libxslt1-dev libxslt1.1 libxvidcore-dev libxvidcore4 libyajl-dev make openssl perl pkg-config tar texi2html unzip zip zlib1g-dev

2. ModSecurity herunterladen

Git-Klon Modsecurity, Kasse und Build libmodsecurity

cd /opt/ 
git clone https://github.com/SpiderLabs/ModSecurity 
cd ModSecurity 
git checkout -b v3/master origin/v3/master 
sh build.sh 
git submodule init 
git submodule update 
./configure 
make
make install

Git klont den Modsecurity-nginx-Anschluss.

cd /opt/ 
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git

Sie sollten nun folgendes Verzeichnis haben, das den Modsecurity-nginx-Konnektor enthält

/opt/ModSecurity-nginx

3. Nginx herunterladen

Laden Sie die neueste stabile Nginx-Quelle herunter.

Besuchen Sie http://nginx.org/en/download.html und erhalten Sie den Link zur neuesten stabilen Version von Nginx. Zum Zeitpunkt dieses Schreibens war die neueste stabile Version nginx-1.12.0.tar.gz. Passen Sie die folgenden Anweisungen für Ihre spezifische Version an. Herunterladen und Entpacken

cd /opt 
wget http://nginx.org/download/nginx-1.12.0.tar.gz 
tar -zxf nginx-1.12.0.tar.gz 
cd nginx-1.12.0

4. Nginx konfigurieren und installieren

Nginx mit dem Modsecurity-nginx-Konnektor konfigurieren und installieren.

./configure --user=www-data --group=www-data --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module --add-module=/opt/ModSecurity-nginx 
make 
make install

Der ModSecurity-Quellcode, den wir zuvor heruntergeladen haben, enthält eine Beispiel-Datei modsecurity.conf mit einigen empfohlenen Einstellungen. Kopieren Sie diese Datei in den Ordner mit den Nginx-Konfigurationsdateien.

cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf

Erstellen Sie einen Symlink von /usr/local/nginx/sbin/sbin/nginx nach /bin/nginx.

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

Erstellen Sie die folgenden Verzeichnisse:

mkdir /usr/local/nginx/conf/sites-available 
mkdir /usr/local/nginx/conf/sites-enabled 
mkdir /usr/local/nginx/conf/ssl 
mkdir /etc/nginx

Erstelle einen Symlink zu /usr/local/nginx/conf/ssl /etc/nginx/ssl

ln -s /usr/local/nginx/conf/ssl /etc/nginx/ssl

Erstellen Sie eine Sicherungskopie der Datei conf/nginx.conf.

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.bak

Konfigurieren Sie die Datei /usr/local/nginx/conf/nginx.conf.

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

Suchen und entfernen Sie alle Einträge, die mit „server {“ beginnen und mit dem zweiten bis zum letzten schließenden geschweiften Klammer „}“ enden. Mit anderen Worten, lassen Sie die letzte geschweifte Klammer intakt.

Direkt über der letzten geschweiften Klammer folgendes einfügen. Dadurch wird Nginx angewiesen, nach unseren Site-Konfigurationen im Verzeichnis „/usr/local/nginx/conf/sites-enabled“ zu suchen.

include /usr/local/nginx/conf/sites-enabled/*;

Das Ende der Datei sollte also wie folgt aussehen (stellen Sie sicher, dass das Schließen } vorhanden ist):

include /usr/local/nginx/conf/sites-enabled/*; 
}

Aktivieren Sie die „user“-Direktive, indem Sie das Präfix „#“ entfernen, wenn es deaktiviert ist, und stellen Sie sicher, dass es auf den Benutzer „www-data“ anstelle des standardmäßigen „nobody“ gesetzt ist, so dass es unten so aussieht:

user www-data;

Speichern Sie die Datei.

Laden Sie das Nginx-Initskript von Jason Giedymin zur Verwaltung des nginx-Dienstes herunter und konfigurieren Sie es als Dienst.

wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx 
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults

Dieses Skript bietet die folgenden Optionen für die Verwaltung des Nginx-Dienstes:

# service nginx start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy

5. OWASP ModSecuirty Core Regelsatz installieren

Git-Klonierung und Kopieren der aktuellen Version des OWASP-Regelsatzes und der Konfiguration nach Nginx

cd /opt/ 
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git 
cd owasp-modsecurity-crs/ 
cp -R rules/ /usr/local/nginx/conf/ 
cp /opt/owasp-modsecurity-crs/crs-setup.conf.example /usr/local/nginx/conf/crs-setup.conf

Nginx mit OWASP ModSecuirty Core Regelsatz konfigurieren

Bearbeiten Sie /usr/local/nginx/conf/modsecurity.conf.

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

Fügen Sie am Ende der Datei Folgendes ein:

#Load OWASP Config 
Include crs-setup.conf 
#Load all other Rules 
Include rules/*.conf 
#Disable rule by ID from error message 
#SecRuleRemoveById 920350

Geben Sie in Ihrer Nginx modsecurity.conf-Datei oder Ihren individuellen Serverkonfliktdateien Folgendes ein, entweder im Server- oder im Standortblock. Das folgende Beispiel zeigt eine Kombination aus dem Hinzufügen der Einträge sowohl im Server- als auch im Standortblock:

server { 
..... 
modsecurity on; 
location / { 
modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf; 
..... 
} 
}

Testen Sie Ihre Nginx-Konfiguration

service nginx configtest

Wenn keine Fehler auftreten, laden oder starten Sie Ihren Nginx neu.

service nginx reload

Sie können nun die Datei /var/log/modsec_audit.log für alle ModSecurity-Ereignisse anzeigen.

tail -f /var/log/modsec_audit.log

Wenn Sie zufrieden sind, bearbeiten Sie die Datei /usr/local/nginx/conf/modsecurity.conf und setzen Sie „SecRuleEngine“ von „DetectionOnly“ auf „On“ wie unten beschrieben.

SecRuleEngine On

Damit ist diese Anleitung abgeschlossen.


Über den Autor

Dino Edwards ist ein IT-Profi mit mehr als 20 Jahren Erfahrung in Bund, Ländern und der Privatwirtschaft. Er ist auch dafür bekannt, sich in der Programmierung zu versuchen.

Er neigt dazu, Leitfäden oder Anleitungen zu schreiben, nachdem er ein bestimmtes Projekt abgeschlossen hat, in erster Linie, weil sein Gedächtnis schlecht ist und er das Rad nicht neu erfinden will, wenn er das gleiche Projekt erneut durchführen muss.

Nehmen Sie Kontakt auf

Website des Autors Follow Email

Das könnte Dich auch interessieren …