ModSecurity voor Nginx installeren op CentOS 7, Debian 8 en Ubuntu 16.04

ModSecurity is een open source webapplicatie firewall (WAF) module die geweldig is voor het beschermen van Apache, Nginx en IIS tegen verschillende cyberaanvallen die potentiële kwetsbaarheden in verschillende webapplicaties aanpakken

In dit artikel zullen we ModSecurity voor Nginx installeren en configureren op CentOS 7, Debian 8 en Ubuntu 16.04.

Vereisten

  • Een up-to-date installatie van CentOS 7, Debian 8 of Ubuntu 16.04 64-bit.
  • Inloggen als root.

Stap 1: werk het systeem bij

Volg deze handleiding en werk de kernel en pakketten van uw server bij naar de nieuwste beschikbare versie.

Stap 2: installeer afhankelijkheden

Voordat u Nginx en ModSecurity succesvol kunt compileren, moet u verschillende softwarepakketten als volgt installeren.

a) Op 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) Op Debian 8 of 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

Stap 3: ModSecurity compileren

Vanwege verschillende instabiliteit gemeld op ModSecurity voor Nginx master branch, wordt het voorlopig officieel aanbevolen om nginx_refactoringwaar mogelijk de nieuwste versie van de branch te gebruiken.

Download de nginx_refactoringtak van ModSecurity voor Nginx:

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

Compileer ModSecurity:

a) Op 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

Opmerking: de twee sedbovenstaande opdrachten worden gebruikt om waarschuwingsberichten te voorkomen bij het gebruik van nieuwere automake-versies.

b) Op Debian 8 of Ubuntu 16.04:

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

Stap 4: Compileer Nginx

Download en archiveer de nieuwste stabiele release van Nginx die Nginx 1.10.3op het moment van schrijven is:

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) Op CentOS 7:

Eerst moet je een toegewijde gebruiker nginxen een toegewijde groep nginxvoor Nginx maken:

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

Compileer vervolgens Nginx terwijl u ModSecurity- en SSL-modules inschakelt:

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

Wijzig de standaardgebruiker van Nginx:

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

b) Op Debian 8 of Ubuntu 16.04:

Ten eerste moet u de bestaande gebruiker www-dataen de bestaande groep gebruiken www-data.

Compileer vervolgens Nginx terwijl u ModSecurity- en SSL-modules inschakelt:

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

Wijzig de standaardgebruiker van Nginx:

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

Als Nginx met succes is geïnstalleerd, bevinden gerelateerde bestanden zich op:

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"

u kunt de installatie testen met:

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

Als er niets misgaat, moet de uitvoer zijn:

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

Voor uw gemak kunt u een systemd-eenheidsbestand voor Nginx instellen:

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 de toekomst kunt u Nginx als volgt starten / stoppen / herstarten:

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

Stap 4: Configureer ModSecurity en Nginx

4.1 Configureer Nginx:

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

Zoek het volgende segment binnen het http {}segment:

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

Voeg de onderstaande regels in het location / {}segment in:

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

Het uiteindelijke resultaat zou moeten zijn:

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

Opslaan en afsluiten:

:wq!

Opmerking: de bovenstaande Nginx-configuratie is slechts een voorbeeldconfiguratie voor het gebruik van Nginx als een webserver in plaats van een omgekeerde proxy. Als u Nginx gebruikt als een omgekeerde proxy, verwijder dan het #teken in de laatste twee regels en breng de nodige wijzigingen aan.

4.2 Maak een bestand met de naam /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

Opmerking: de bovenstaande configuratie past alle OWASP ModSecurity Core-regels in de owasp-modsecurity-crs/rules/directory toe. Als u alleen selectieve regels wilt toepassen, moet u de include owasp-modsecurity-crs/rules/*.confregel verwijderen en na stap 4.5 de exacte regels specificeren.

4.3 ModSecurity-configuratiebestanden importeren:

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 Wijzig het /usr/local/nginx/conf/modsecurity.confbestand:

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

4.5 OWASP ModSecurity CRS-bestanden (Core Rule Set) toevoegen:

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

Stap 5: Test ModSecurity

Start Nginx:

systemctl start nginx.service

Open poort 80 om externe toegang mogelijk te maken:

a) Op CentOS 7:

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

b) Op 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) Op Ubuntu 16.04:

ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable    

Richt uw webbrowser op:

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

Gebruik grepom foutmeldingen als volgt op te halen:

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

De uitvoer moet verschillende foutmeldingen bevatten die vergelijkbaar zijn met:

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"]

Dat is het. Zoals u ziet, heeft de ModSecurity-module deze aanval met succes geregistreerd in overeenstemming met het standaardactiebeleid. Als u meer aangepaste instellingen wilt maken, controleer en bewerk dan zorgvuldig /usr/local/nginx/conf/modsecurity.confen /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.confbestanden.

Laat een reactie achter

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.