In diesem Tutorial zeige ich Ihnen, wie Sie die neueste Version von Nginx mit libmodsecurity (Modsecurity 3.x) kompilieren, 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 erforderte verschiedene Abhängigkeiten von Drittanbietern auf Kosten der Leistung. Libmodsecurity ändert all das, indem es von Grund auf neu geschrieben wird. Weitere Informationen zu Libmodsecurity finden Sie hier.
In diesem Handbuch wird davon ausgegangen, dass Sie bereits über eine brandneue aktualisierte Instanz von Ubuntu 16.04 64-Bit verfügen.
1. Installationsvoraussetzungen
Voraussetzungen installieren
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
Klonen Sie Modsecurity mit Git, checken Sie aus und erstellen Sie 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
Klonen Sie den Modsecurity-nginx-Connector mit Git
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git
Sie sollten jetzt das folgende Verzeichnis haben, das den Modsecurity-nginx-Connector enthält
/opt/ModSecurity-nginx
3. Nginx herunterladen
Neueste stabile Nginx-Quelle herunterladen
Gehen Sie zu http://nginx.org/en/download.html und rufen Sie den Link zur neuesten stabilen Version von Nginx ab. Zum Zeitpunkt dieses Schreibens war die neueste stabile Version nginx-1.12.0.tar.gz. Passen Sie die Anweisungen unten für Ihre spezifische Version an. Herunterladen und extrahieren
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-Connector 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 Quellcode von ModSecurity, den wir zuvor heruntergeladen haben, enthält eine Beispieldatei 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/nginx zu /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
Erstellen Sie einen Symlink von /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 der vorletzten schließenden geschweiften Klammer „}“ enden. Mit anderen Worten, lassen Sie die letzte geschweifte Klammer intakt.
Fügen Sie direkt über der letzten geschweiften Klammer Folgendes ein. Dadurch wird Nginx angewiesen, im Verzeichnis „/usr/local/nginx/conf/sites-enabled“ nach unseren Site-Konfigurationen zu suchen
include /usr/local/nginx/conf/sites-enabled/*;
Das Ende der Datei sollte also wie folgt aussehen (stellen Sie sicher, dass das schließende } vorhanden ist):
include /usr/local/nginx/conf/sites-enabled/*;
}
Aktivieren Sie die „user“-Direktive, indem Sie das „#“-Präfix entfernen, falls es deaktiviert ist, und stellen Sie sicher, dass es auf den Benutzer „www-data“ statt auf den Standardwert „nobody“ gesetzt ist, sodass es wie folgt aussieht:
user www-data;
Speichern Sie die Datei.
Laden Sie das Nginx-Init-Skript von Jason Giedymin herunter, um den Nginx-Dienst zu verwalten und als Dienst zu konfigurieren
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 zum Verwalten des Nginx-Dienstes:
# service nginx start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy
5. Installieren Sie das OWASP ModSecurity Core Rule Set
Git klonen und kopieren Sie die aktuelle 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
Konfigurieren Sie Nginx mit dem OWASP ModSecurity Core Rule Set
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-Datei modsecurity.conf oder Ihren individuellen Server-conf-Dateien Folgendes entweder in den Server- oder Standortblöcken ein. Das folgende Beispiel zeigt eine Kombination aus dem Hinzufügen der Einträge in den Server- und Standortblöcken:
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 Sie Nginx neu oder starten Sie es neu
service nginx reload
Sie können jetzt /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
SecRuleEngine On
Damit ist dieser Leitfaden abgeschlossen.
Über den Autor
Dino Edwards ist ein IT-Experte mit mehr als 20 Jahren Erfahrung im Bundes-, Landes- und Privatsektor. Er ist auch dafür bekannt, sich mit Programmieren zu beschäftigen.
Er neigt dazu, Leitfäden oder Anleitungen zu schreiben, nachdem er ein bestimmtes Projekt abgeschlossen hat, hauptsächlich weil sein Gedächtnis schlecht ist und er das Rad nicht neu erfinden möchte, wenn er dasselbe Projekt noch einmal machen muss.
Kontaktieren Sie uns
Website des Autors Folgen E-Mail