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