Sådan installeres ModSecurity for Nginx på CentOS 7, Debian 8 og Ubuntu 16.04

ModSecurity er et open source webapplikations firewall (WAF) modul, som er fantastisk til at beskytte Apache, Nginx og IIS mod forskellige cyberangreb, der retter sig mod potentielle sårbarheder i forskellige webapplikationer

I denne artikel vil vi installere og konfigurere ModSecurity for Nginx på CentOS 7, Debian 8 og Ubuntu 16.04.

Forudsætninger

  • En opdateret installation af CentOS 7, Debian 8 eller Ubuntu 16.04 64-bit.
  • Log ind som root.

Trin 1: Opdater systemet

Ved at følge denne vejledning skal du opdatere din servers kerne og pakker til den seneste tilgængelige version.

Trin 2: Installer afhængigheder

Før du kan kompilere Nginx og ModSecurity med succes, skal du installere flere softwarepakker som følger.

a) På 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) På Debian 8 eller 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

Trin 3: Kompiler ModSecurity

På grund af adskillige ustabiliteter rapporteret på ModSecurity for Nginx master branch, anbefales det indtil videre officielt at bruge den seneste version af nginx_refactoringfilialen, når det er muligt.

Download nginx_refactoringgrenen af ​​ModSecurity til Nginx:

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

Kompiler ModSecurity:

a) På 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

Bemærk: de to sedkommandoer ovenfor bruges til at forhindre advarselsmeddelelser ved brug af nyere autofabrikationsversioner.

b) På Debian 8 eller Ubuntu 16.04:

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

Trin 4: Kompiler Nginx

Download og afarkiver den seneste stabile udgivelse af Nginx, som er Nginx 1.10.3i skrivende stund:

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) På CentOS 7:

Først skal du oprette en dedikeret bruger nginxog en dedikeret gruppe nginxtil Nginx:

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

Kompiler derefter Nginx, mens du aktiverer ModSecurity og SSL-moduler:

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

Rediger standardbrugeren af ​​Nginx:

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

b) På Debian 8 eller Ubuntu 16.04:

Først skal du bruge den eksisterende bruger www-dataog den eksisterende gruppe www-data.

Kompiler derefter Nginx, mens du aktiverer ModSecurity og SSL-moduler:

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

Rediger standardbrugeren af ​​Nginx:

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

Når Nginx er installeret, vil relaterede filer blive placeret på:

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"

du kan teste installationen med:

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

Hvis intet går galt, skal outputtet være:

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

For nemheds skyld kan du konfigurere en systemd enhedsfil til Nginx:

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

Fremad kan du starte/stoppe/genstarte Nginx som følger:

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

Trin 4: Konfigurer ModSecurity og Nginx

4.1 Konfigurer Nginx:

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

Find følgende segment inden for http {}segmentet:

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

Indsæt nedenstående linjer i location / {}segmentet:

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

Det endelige resultat skulle være:

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

Gem og luk:

:wq!

Bemærk: Nginx-konfigurationen ovenfor er kun en eksempelkonfiguration til brug af Nginx som en webserver i stedet for en omvendt proxy. Hvis du bruger Nginx som en omvendt proxy, skal du fjerne #tegnet i de sidste to linjer og foretage passende ændringer til dem.

4.2 Opret en fil med navnet /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

Bemærk: Konfigurationen ovenfor vil anvende alle OWASP ModSecurity Core Rules i owasp-modsecurity-crs/rules/mappen. Hvis du kun vil anvende selektive regler, skal du fjerne include owasp-modsecurity-crs/rules/*.conflinjen og derefter angive nøjagtige regler, du har brug for efter trin 4.5.

4.3 Importer ModSecurity-konfigurationsfiler:

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 Rediger /usr/local/nginx/conf/modsecurity.conffilen:

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

4.5 Tilføj OWASP ModSecurity CRS (Core Rule Set) filer:

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

Trin 5: Test ModSecurity

Start Nginx:

systemctl start nginx.service

Åbn port 80 for at tillade ekstern adgang:

a) På CentOS 7:

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

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

ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable    

Peg din webbrowser til:

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

Brug greptil at hente fejlmeddelelser som følger:

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

Outputtet skal indeholde flere fejlmeddelelser, der ligner:

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

Det er det. Som du kan se, har ModSecurity-modulet med succes logget dette angreb i overensstemmelse med dets standardhandlingspolitik. Hvis du vil lave flere brugerdefinerede indstillinger, bedes du omhyggeligt gennemgå og redigere /usr/local/nginx/conf/modsecurity.confog /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.conffiler.

Efterlad en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.

DDOS-angreb: et kort overblik

DDOS-angreb: et kort overblik

Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.

Funktioner af Big Data Reference Architecture Layers

Funktioner af Big Data Reference Architecture Layers

Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.

Udvikling af datalagring – Infografik

Udvikling af datalagring – Infografik

Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af ​​dataene. Denne blog dækker udviklingen af ​​datalagring på basis af en infografik.

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af ​​mac-maskiner. Læs denne artikel for at lære mere