Kaip įdiegti „ModSecurity“, skirtą „Nginx“ „CentOS 7“, „Debian 8“ ir „Ubuntu 16.04“

ModSecurity yra atvirojo kodo žiniatinklio programų ugniasienės (WAF) modulis, puikiai tinkantis apsaugoti Apache, Nginx ir IIS nuo įvairių kibernetinių atakų, nukreiptų į galimus įvairių žiniatinklio programų pažeidžiamumus.

Šiame straipsnyje mes įdiegsime ir sukonfigūruosime „ModSecurity“, skirtą „Nginx“, „CentOS 7“, „Debian 8“ ir „Ubuntu 16.04“.

Būtinos sąlygos

  • Up-to-data įrengimas CentOS 7, Debian 8, ar Ubuntu 16.04 64 bitų.
  • Prisijungimas kaip root.

1 veiksmas: atnaujinkite sistemą

Vadovaudamiesi šiuo vadovu atnaujinkite savo serverio branduolį ir paketus į naujausią galimą versiją.

2 veiksmas: įdiekite priklausomybes

Kad galėtumėte sėkmingai kompiliuoti Nginx ir ModSecurity, turite įdiegti kelis programinės įrangos paketus, kaip nurodyta toliau.

a) „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) „Debian 8“ arba „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

3 veiksmas: sukompiliuokite „ModSecurity“.

Dėl kelių nestabilumo, apie kurį pranešta „ModSecurity for Nginx“ pagrindinėje šakoje, kol kas oficialiai rekomenduojama naudoti naujausią nginx_refactoringšakos versiją, kai tik įmanoma.

Atsisiųskite „ nginx_refactoringNginx“ skirtą „ModSecurity“ filialą:

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

Sukompiliuokite „ModSecurity“:

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

Pastaba: dvi sedaukščiau pateiktos komandos naudojamos siekiant išvengti įspėjimo pranešimų, kai naudojamos naujesnės versijos.

b) „Debian 8“ arba „Ubuntu 16.04“:

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

4 veiksmas: sukompiliuokite Nginx

Atsisiųskite ir išarchyvuokite naujausią stabilų „Nginx“ leidimą, kuris yra Nginx 1.10.3rašymo metu:

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“:

Pirmiausia turite sukurti skirtą Nginx vartotoją nginxir grupę nginx:

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

Tada sukompiliuokite Nginx įjungdami ModSecurity ir SSL modulius:

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

Pakeiskite numatytąjį Nginx vartotoją:

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

b) „Debian 8“ arba „Ubuntu 16.04“:

Pirmiausia turėtumėte naudoti esamą vartotoją www-datair esamą grupę www-data.

Tada sukompiliuokite Nginx įjungdami ModSecurity ir SSL modulius:

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

Pakeiskite numatytąjį Nginx vartotoją:

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

Sėkmingai įdiegus „Nginx“, susiję failai bus rasti adresu:

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"

diegimą galite išbandyti naudodami:

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

Jei nieko negerai, išvestis turėtų būti:

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

Patogumui galite nustatyti Nginx sistemos vieneto failą:

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

Eidami į priekį, galite paleisti / sustabdyti / iš naujo paleisti „Nginx“ taip:

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

4 veiksmas: sukonfigūruokite „ModSecurity“ ir „Nginx“.

4.1 „Nginx“ konfigūravimas:

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

Segmente raskite šį http {}segmentą:

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

Į location / {}segmentą įterpkite šias eilutes :

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

Galutinis rezultatas turėtų būti:

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

Išsaugoti ir išeiti:

:wq!

Pastaba: Aukščiau pateikta Nginx konfigūracija yra tik pavyzdinė konfigūracija, skirta naudoti Nginx kaip žiniatinklio serverį, o ne atvirkštinį tarpinį serverį. Jei naudojate Nginx kaip atvirkštinį tarpinį serverį, pašalinkite #simbolį paskutinėse dviejose eilutėse ir atlikite atitinkamus jų pakeitimus.

4.2 Sukurkite failą pavadinimu /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

Pastaba: Aukščiau pateikta konfigūracija taikys visas OWASP ModSecurity pagrindines taisykles owasp-modsecurity-crs/rules/kataloge. Jei norite taikyti tik pasirinktines taisykles, pašalinkite include owasp-modsecurity-crs/rules/*.confeilutę ir nurodykite tikslias taisykles, kurių jums reikia po 4.5 veiksmo.

4.3 Importuoti ModSecurity konfigūracijos failus:

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 Keisti /usr/local/nginx/conf/modsecurity.conffailą:

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

4.5 Pridėkite OWASP ModSecurity CRS (pagrindinių taisyklių rinkinio) failus:

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

5 veiksmas: patikrinkite „ModSecurity“.

Paleiskite Nginx:

systemctl start nginx.service

Atidarykite 80 prievadą, kad galėtumėte pasiekti išorinę prieigą:

a) „CentOS 7“:

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

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

ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable    

Nukreipkite savo žiniatinklio naršyklę į:

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

Norėdami grepgauti klaidų pranešimus, naudokite taip:

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

Išvestyje turėtų būti keli klaidų pranešimai, panašūs į:

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

Viskas. Kaip matote, ModSecurity modulis sėkmingai užregistravo šią ataką pagal numatytąją veiksmų politiką. Jei norite atlikti daugiau tinkintų nustatymų, atidžiai peržiūrėkite ir redaguokite /usr/local/nginx/conf/modsecurity.confbei /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.conffailus.


Kaip įdiegti „Microweber“ „CentOS 7“.

Kaip įdiegti „Microweber“ „CentOS 7“.

Naudojate kitą sistemą? „Microweber“ yra atvirojo kodo „drag and drop“ TVS ir internetinė parduotuvė. „Microweber“ šaltinio kodas yra „GitHub“. Šis vadovas jums parodys

„Minecraft“ serverių tinklo sukūrimas naudojant „BungeeCord“ „Debian 8“, „Debian 9“ arba „CentOS 7“

„Minecraft“ serverių tinklo sukūrimas naudojant „BungeeCord“ „Debian 8“, „Debian 9“ arba „CentOS 7“

Ko jums reikia Vultr VPS su mažiausiai 1 GB RAM. SSH prieiga (su root / administratoriaus teisėmis). 1 veiksmas: „BungeeCord“ diegimas Pirmiausia

Kaip įdiegti „OpenMeetings“ „CentOS 7“.

Kaip įdiegti „OpenMeetings“ „CentOS 7“.

Naudojate kitą sistemą? „Apache OpenMeetings“ yra atvirojo kodo žiniatinklio konferencijų programa. Jis parašytas Java kalba ir palaiko kelis duomenų bazių serverius. aš

„Jekyll“ tinklaraščio kūrimas „CentOS 7“.

„Jekyll“ tinklaraščio kūrimas „CentOS 7“.

Naudojate kitą sistemą? Jekyll yra gera „WordPress“ alternatyva. Tam nereikia jokių duomenų bazių ir jis veikia daugeliui pažįstama kalba

Kaip įdiegti MODX Revolution CentOS 7 LAMP VPS

Kaip įdiegti MODX Revolution CentOS 7 LAMP VPS

Naudojate kitą sistemą? MODX Revolution yra greita, lanksti, keičiamo dydžio, nemokama ir atviro kodo, įmonės lygio turinio valdymo sistema (TVS), parašyta i.

Kaip įdiegti „Elasticsearch“ „Vultr CentOS 7“ serverio egzemplioriuje

Kaip įdiegti „Elasticsearch“ „Vultr CentOS 7“ serverio egzemplioriuje

Elasticsearch yra populiarus atvirojo kodo viso teksto paieškos ir analizės variklis. Dėl savo universalumo, mastelio ir paprasto naudojimo Elasticsearch yra platus

Kaip įdiegti „Automad CMS“ „CentOS 7“.

Kaip įdiegti „Automad CMS“ „CentOS 7“.

Naudojate kitą sistemą? Automad yra atvirojo kodo failais pagrįsta turinio valdymo sistema (TVS) ir šablonų variklis, parašytas PHP. „Automad“ šaltinio kodas i

Kaip įdiegti „osTicket“ „CentOS 7“.

Kaip įdiegti „osTicket“ „CentOS 7“.

Naudojate kitą sistemą? osTicket yra atvirojo kodo klientų aptarnavimo bilietų pardavimo sistema. „osTicket“ šaltinio kodas viešai priglobtas „Github“. Šioje pamokoje

Kaip įdiegti „Open Web Analytics“ „CentOS 7“.

Kaip įdiegti „Open Web Analytics“ „CentOS 7“.

Naudojate kitą sistemą? Open Web Analytics (OWA) yra atvirojo kodo žiniatinklio analizės programa, kurią galima naudoti norint stebėti ir analizuoti, kaip žmonės naudojasi jūsų svetaine.

„Fork CMS“ diegimas „CentOS 7“.

„Fork CMS“ diegimas „CentOS 7“.

Naudojate kitą sistemą? Fork yra atvirojo kodo TVS, parašyta PHP. „Forks“ šaltinio kodas yra „GitHub“. Šis vadovas parodys, kaip įdiegti Fork CM

Kaip įdiegti CMS Made Simple 2.2 CentOS 7 LAMP VPS

Kaip įdiegti CMS Made Simple 2.2 CentOS 7 LAMP VPS

Naudojate kitą sistemą? CMS Made Simple 2.2 yra lanksti ir išplečiama, nemokama ir atvirojo kodo turinio valdymo sistema (TVS), sumaniai sukurta

Kaip įdiegti „Neos CMS“ „CentOS 7“.

Kaip įdiegti „Neos CMS“ „CentOS 7“.

Neos yra naujoviška atvirojo kodo turinio valdymo sistema, puikiai tinkanti kuriant ir redaguojant internetinį turinį. Turint omenyje autorius ir redaktorius, Neo

Kaip įdiegti Ghost v0.11 LTS CentOS 7.3

Kaip įdiegti Ghost v0.11 LTS CentOS 7.3

Naudojate kitą sistemą? Ghost yra atvirojo kodo tinklaraščių platforma, kuri populiarėja tarp kūrėjų ir paprastų vartotojų nuo 201 m.

Nustatykite apsikeitimo failą „Linux“.

Nustatykite apsikeitimo failą „Linux“.

Kartais turėsite padidinti serverio reagavimą, kad išvengtumėte atminties problemų. Išnyksta atminties problemos, kai a

Kaip apsaugoti vsFTPd naudojant SSL / TLS

Kaip apsaugoti vsFTPd naudojant SSL / TLS

Labai saugus FTP demonas arba tiesiog vsFTPd yra lengva programinė įranga, kurią galima pritaikyti. Šioje pamokoje mes užsitikrinsime jau

Kaip įdiegti „Zammad 2.0“ „CentOS 7“.

Kaip įdiegti „Zammad 2.0“ „CentOS 7“.

Naudojate kitą sistemą? Zammad yra atviro kodo pagalbos tarnyba / bilietų pardavimo sistema, skirta klientų aptarnavimo komandoms. Su Zammad, klientų aptarnavimo tarnyba

Kaip įdiegti „Thelia 2.3“ „CentOS 7“.

Kaip įdiegti „Thelia 2.3“ „CentOS 7“.

Naudojate kitą sistemą? Thelia yra atvirojo kodo įrankis, skirtas elektroninio verslo svetainėms kurti ir internetiniam turiniui tvarkyti, parašyta PHP kalba. Thelia šaltinio kodas i

Kaip įdiegti fono CMS 1.8.0 CentOS 7 LAMP VPS

Kaip įdiegti fono CMS 1.8.0 CentOS 7 LAMP VPS

Naudojate kitą sistemą? Backdrop CMS 1.8.0 yra paprasta ir lanksti, mobiliesiems pritaikyta nemokama ir atvirojo kodo turinio valdymo sistema (TVS), kuri leidžia mums

Pagekit CMS diegimas CentOS 7

Pagekit CMS diegimas CentOS 7

Naudojate kitą sistemą? Pagekit yra atvirojo kodo TVS, parašyta PHP. Pagekit šaltinio kodas yra viešai priglobtas GitHub. Šis vadovas parodys, kaip t

Įgalinkite SSH prisijungimo pranešimą sistemoje „Linux“.

Įgalinkite SSH prisijungimo pranešimą sistemoje „Linux“.

Ar jūsų „Linux“ serverį pasiekia keli vartotojai? Jei taip, apsvarstykite galimybę pridėti SSH prisijungimo pranešimą, kai kas nors prisijungia. Toliau pateikti pavyzdžiai siunčia el. laišką

Mašinų augimas: AI pritaikymas realiame pasaulyje

Mašinų augimas: AI pritaikymas realiame pasaulyje

Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.

DDOS atakos: trumpa apžvalga

DDOS atakos: trumpa apžvalga

Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.

Duomenų saugojimo raida – infografika

Duomenų saugojimo raida – infografika

Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.

6 nuostabūs išmaniųjų namų įrenginių privalumai

6 nuostabūs išmaniųjų namų įrenginių privalumai

Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį