ModSecurityn asentaminen Nginxille CentOS 7:lle, Debian 8:lle ja Ubuntu 16.04:lle

ModSecurity on avoimen lähdekoodin verkkosovellusten palomuuri (WAF) moduuli, joka sopii erinomaisesti Apachen, Nginxin ja IIS:n suojaamiseen erilaisilta verkkohyökkäyksiltä, ​​jotka kohdistuvat eri verkkosovellusten mahdollisiin haavoittuvuuksiin.

Tässä artikkelissa asennamme ja määritämme ModSecurityn Nginxille CentOS 7:ssä, Debian 8:ssa ja Ubuntu 16.04:ssä.

Edellytykset

  • Ajan tasalla asennus CentOS 7, Debian 8 tai Ubuntu 16.04 64-bittinen.
  • Kirjaudu sisään nimellä root.

Vaihe 1: Päivitä järjestelmä

Seuraavat tämän oppaan , päivittää palvelimen ydin ja paketit uusimpaan saatavilla olevaan versioon.

Vaihe 2: Asenna riippuvuudet

Ennen kuin voit kääntää Nginxin ja ModSecurityn onnistuneesti, sinun on asennettava useita ohjelmistopaketteja seuraavasti.

a) CentOS 7:ssä:

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) Debian 8:ssa tai Ubuntu 16.04:ssä:

apt-get install -y git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-dev libxml2-dev libcurl4-openssl-dev automake pkgconf

Vaihe 3: Käännä ModSecurity

Useiden ModSecurity for Nginx -päähaarassa raportoitujen epävakauksien vuoksi on toistaiseksi virallisesti suositeltavaa käyttää nginx_refactoringhaaran uusinta versiota aina kun mahdollista.

Lataa nginx_refactoringModSecurityn haara Nginxille:

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

Käännä ModSecurity:

a) CentOS 7:ssä:

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

Huomautus: kahta sedyllä olevaa komentoa käytetään estämään varoitusviestit käytettäessä uudempia automake-versioita.

b) Debian 8:ssa tai Ubuntu 16.04:ssä:

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

Vaihe 4: Käännä Nginx

Lataa ja poista arkistosta Nginxin uusin vakaa julkaisu, joka on Nginx 1.10.3kirjoitushetkellä:

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) CentOS 7:ssä:

Ensin sinun on luotava oma käyttäjä nginxja oma ryhmä nginxNginxille:

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

Käännä sitten Nginx ja ota ModSecurity- ja SSL-moduulit käyttöön:

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

Muokkaa Nginxin oletuskäyttäjää:

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

b) Debian 8:ssa tai Ubuntu 16.04:ssä:

Ensin sinun tulee käyttää olemassa olevaa käyttäjää www-dataja olemassa olevaa ryhmää www-data.

Käännä sitten Nginx ja ota ModSecurity- ja SSL-moduulit käyttöön:

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

Muokkaa Nginxin oletuskäyttäjää:

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

Kun Nginx on asennettu onnistuneesti, liittyvät tiedostot sijaitsevat osoitteessa:

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"

voit testata asennusta:

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

Jos mikään ei mene pieleen, tulosteen tulee olla:

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

Avuksesi voit määrittää systemd-yksikkötiedoston Nginxille:

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

Eteenpäin voit käynnistää/pysäyttää/käynnistää Nginxin uudelleen seuraavasti:

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

Vaihe 4: Määritä ModSecurity ja Nginx

4.1 Määritä Nginx:

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

Etsi seuraava segmentti http {}segmentistä:

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

Lisää alla olevat rivit location / {}segmenttiin:

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

Lopputuloksen pitäisi olla:

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

Tallenna ja lopeta:

:wq!

Huomautus: Yllä oleva Nginx-asetus on vain esimerkkimäärittely Nginxin käyttämiseksi verkkopalvelimena käänteisen välityspalvelimen sijaan. Jos käytät Nginxiä käänteisenä välityspalvelimena, poista #merkki kahdelta viimeiseltä riviltä ja tee niihin tarvittavat muutokset.

4.2 Luo tiedosto nimeltä /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

Huomautus: Yllä oleva konfiguraatio soveltaa kaikkia OWASP ModSecurity Core Rules -sääntöjä owasp-modsecurity-crs/rules/hakemistossa. Jos haluat käyttää vain valikoivia sääntöjä, poista include owasp-modsecurity-crs/rules/*.confrivi ja määritä sitten tarkat tarvitsemasi säännöt vaiheen 4.5 jälkeen.

4.3 Tuo ModSecurity-määritystiedostot:

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

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

4.5 Lisää OWASP ModSecurity CRS (Core Rule Set) -tiedostoja:

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

Vaihe 5: Testaa ModSecurity

Käynnistä Nginx:

systemctl start nginx.service

Avaa portti 80 salliaksesi ulkopuolisen pääsyn:

a) CentOS 7:ssä:

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

b) Debian 8:ssa:

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) Ubuntu 16.04:ssä:

ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable    

Osoita selaimellasi:

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

Käytä grepvirheilmoitusten hakemiseen seuraavasti:

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

Tulosteen tulee sisältää useita virheilmoituksia, jotka ovat samankaltaisia ​​kuin:

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

Se siitä. Kuten näet, ModSecurity-moduuli on onnistuneesti kirjannut tämän hyökkäyksen oletustoimintokäytäntönsä mukaisesti. Jos haluat tehdä enemmän mukautettuja asetuksia, lue tarkkaan ja muokata /usr/local/nginx/conf/modsecurity.confja /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.conftiedostoja.

Jätä kommentti

Koneiden nousu: tekoälyn todelliset sovellukset

Koneiden nousu: tekoälyn todelliset sovellukset

Tekoäly ei ole tulevaisuudessa, se tässä nykyisyydessä Tässä blogissa Lue kuinka tekoälysovellukset ovat vaikuttaneet eri sektoreihin.

DDOS-hyökkäykset: lyhyt katsaus

DDOS-hyökkäykset: lyhyt katsaus

Oletko myös DDOS-hyökkäysten uhri ja hämmentynyt ehkäisymenetelmistä? Lue tämä artikkeli ratkaistaksesi kysymyksesi.

Oletko koskaan miettinyt, kuinka hakkerit ansaitsevat rahaa?

Oletko koskaan miettinyt, kuinka hakkerit ansaitsevat rahaa?

Olet ehkä kuullut, että hakkerit ansaitsevat paljon rahaa, mutta oletko koskaan miettinyt, kuinka he ansaitsevat tuollaista rahaa? keskustellaan.

Googlen vallankumouksellisia keksintöjä, jotka helpottavat elämääsi.

Googlen vallankumouksellisia keksintöjä, jotka helpottavat elämääsi.

Haluatko nähdä Googlen vallankumouksellisia keksintöjä ja kuinka nämä keksinnöt muuttivat jokaisen ihmisen elämää nykyään? Lue sitten blogia nähdäksesi Googlen keksinnöt.

Essential perjantai: Mitä tekoäly-ohjatuille autoille tapahtui?

Essential perjantai: Mitä tekoäly-ohjatuille autoille tapahtui?

Konsepti itseohjautuvista autoista lähteä tielle tekoälyn avulla on ollut haaveena jo jonkin aikaa. Mutta useista lupauksista huolimatta niitä ei näy missään. Lue tämä blogi saadaksesi lisätietoja…

Teknologinen singulaarisuus: ihmissivilisaation kaukainen tulevaisuus?

Teknologinen singulaarisuus: ihmissivilisaation kaukainen tulevaisuus?

Kun tiede kehittyy nopeasti ja ottaa haltuunsa suuren osan ponnisteluistamme, myös riskit altistaa itsemme selittämättömälle singulariteetille kasvavat. Lue, mitä singulaarisuus voisi tarkoittaa meille.

Big Datan referenssiarkkitehtuurikerrosten toiminnot

Big Datan referenssiarkkitehtuurikerrosten toiminnot

Blogista saat tietää Big Data -arkkitehtuurin eri kerroksista ja niiden toiminnoista yksinkertaisimmalla tavalla.

Tietojen tallennuksen evoluutio – Infografiikka

Tietojen tallennuksen evoluutio – Infografiikka

Tietojen säilytystavat ovat kehittyneet mahdollisesti Datan syntymästä lähtien. Tämä blogi käsittelee tiedon tallennuksen kehitystä infografian pohjalta.

6 uskomatonta etua älykkäiden kotilaitteiden käyttämisestä elämässämme

6 uskomatonta etua älykkäiden kotilaitteiden käyttämisestä elämässämme

Tässä digitaalisessa maailmassa kodin älylaitteista on tullut tärkeä osa elämää. Tässä on muutamia älykkäiden kodin laitteiden hämmästyttäviä etuja, joiden avulla ne tekevät elämästämme elämisen arvoista ja yksinkertaisempaa.

macOS Catalina 10.15.4 -täydennyspäivitys aiheuttaa enemmän ongelmia kuin ratkaiseminen

macOS Catalina 10.15.4 -täydennyspäivitys aiheuttaa enemmän ongelmia kuin ratkaiseminen

Apple julkaisi äskettäin macOS Catalina 10.15.4 -lisäpäivityksen ongelmien korjaamiseksi, mutta näyttää siltä, ​​että päivitys aiheuttaa lisää ongelmia, jotka johtavat mac-koneiden tiilikaamiseen. Lue tämä artikkeli saadaksesi lisätietoja