Ahoana ny fametrahana ModSecurity 3 + OWASP amin'ny Nginx amin'ny Rocky Linux 9

ModSecurity, izay antsoina matetika hoe Modsec, dia firewall (WAF) maimaim-poana amin'ny tranonkala. ModSecurity dia noforonina ho modely ho an'ny Apache HTTP Server. Na izany aza, hatramin'ny androny voalohany dia nitombo ny WAF ary mandrakotra ny fangatahana HyperText Transfer Protocol sy ny fahaiza-manasivana valiny ho an'ny sehatra isan-karazany toy ny Microsoft IIS, Nginx, ary Apache. Ny andraikitry ny ModSecurity voalohany dia ny fiarovana ny rindranasa amin'ny tranonkala amin'ny alàlan'ny fanivanana ny fifamoivoizana miditra sy ny fanakanana ny fangatahana ratsy. Ny WAF dia azo amboarina ihany koa mba hanaraha-maso ny fifamoivoizana amin'ny karazana hetsika sasany, toy ny fanafihana tsindrona SQL, ary miteraka fanairana rehefa hita ny hetsika toy izany. Ho fanampin'ny tombontsoa azony amin'ny fiarovana, ModSecurity dia afaka manatsara ny fahombiazan'ny tranonkala amin'ny alàlan'ny caching fitsipika ary manafoana ny filàna miverimberina ny fangatahana mitovy.

Miaraka amin'ny fametrahana Modsecurity, ny OWASP Core Rule Set (CRS) dia matetika ampiasaina miaraka izay andian-dalàna mivelatra voasoratra amin'ny fiteny SecRules an'ny ModSecurity. Ny CRS dia heverina fatratra amin'ny indostrian'ny fiarovana, ary ModSecurity dia heverina ho iray amin'ireo fomba mahomby indrindra hiarovana ny fampiharana amin'ny tranonkala amin'ny fanafihana. Na dia tsy bala volafotsy aza ny ModSecurity, dia fitaovana tena ilaina amin'ny arsenan'ny fikambanana rehetra izay mandray ny fiarovana ny tranonkala.

Ny OWASP Rule Set miaraka amin'ny ModSecurity dia afaka manampy avy hatrany hiaro ny mpizara anao.

  • Mpampiasa ratsy
  • DDoS
  • Mamakivaky ny tranonkala scripting
  • Tsindrona SQL
  • Fanararaotana fivoriana
  • Fandrahonana hafa

Amin'ity lesona manaraka ity dia hianatra ny fomba fametrahana ModSecurity 3 & OWASP Core Rule Set miaraka amin'ny Nginx amin'ny Rocky Linux 9 miaraka amin'ny fanamafisana ohatra manomboka amin'ny voalohany ka hatramin'ny farany.

Fanavaozana ny Rocky Linux

Voalohany, havaozy ny rafitrao mba hahazoana antoka fa ny fonosana rehetra efa misy dia havaozina.

sudo dnf upgrade --refresh

Apetraho ny Nginx Stable na Mainline farany

Amin'ny alàlan'ny default, azonao atao ny mitazona ny kinova Nginx efa misy anao raha toa ka mahita loharano mifanentana. Raha tsy izany, ny fametrahana na ny fananganana stable na mainline farany an'ny Nginx dia atolotra, satria ny lesona dia handeha eto ambany.

Esory ny fametrahana Nginx efa misy

Atsaharo ny serivisy Nginx ankehitriny:

sudo systemctl stop nginx

Esory izao ny fametrahana Nginx efa misy toy izao:

sudo dnf remove nginx

Amin'izao fotoana izao dia efa nesorinao tamim-pahombiazana ny dikan-teny Nginx taloha, raha nametraka azy io ianao, hametraka ny mainline Nginx, dia mila mametraka ny fiankinan-doha aminy aloha ianao, izay dnf-utilities miaraka amin'ity baiko manaraka ity:

sudo dnf install dnf-utils -y

Manaraka, manafatra ireo tahiry etsy ambany.

Import Nginx Mainline Repository

sudo tee /etc/yum.repos.d/nginx-mainline.repo<<EOF

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

EOF

Ireo mpampiasa manana maritrano aarch, soloy amin'ny baiko etsy ambony baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/ amin'ny baseurl=http://nginx.org/packages/mainline/centos/9/aarch64/.

Import Nginx Stable Repository

sudo tee /etc/yum.repos.d/nginx-stable.repo<<EOF

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/9/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

EOF

Ireo mpampiasa manana maritrano aarch, soloy amin'ny baiko etsy ambony baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/ amin'ny baseurl=http://nginx.org/packages/mainline/centos/9/aarch64/.

Ampidiro ny Nginx

Amin'ny alàlan'ny default, ny tahiry farany ho an'ny fonosana Nginx stable dia ampiasaina aloha. Na izany aza, ny tutorial dia hametraka Nginx mainline, noho izany dia mila manatanteraka ity baiko manaraka ity ianao mba hahafahan'ny tahiry mainline toy izao manaraka izao:

sudo yum-config-manager --enable nginx-mainline

Mariho raha tianao ny stable, aza mampiasa ny baiko etsy ambony ary mandehana amin'ny ampahany manaraka amin'ny lesona.

Manaraka, apetraho ny mainline Nginx toy izao manaraka izao:

sudo dnf install nginx
Ahoana ny fametrahana ModSecurity 3 + OWASP amin'ny Nginx amin'ny Rocky Linux 9

Tahaka ny etsy ambony, ny fampianarana dia mametraka ny dikan-teny farany farany Nginx mivantana avy amin'ny Nginx.org. Mariho fa hahita pop-up ianao izay mampahafantatra anao momba ny fanafarana ny Famaha GPG mandritra ny fametrahana. Azo atao izany ary ilaina ny mamarana ny fametrahana ny Nginx mainline amin'ny fomba mahomby.

Amin'ny alàlan'ny default, Nginx dia tsy mandeha ary tsy mandeha amin'ny fametrahana. Raha hampiasa ny serivisy Nginx anao dia ampiasao:

sudo systemctl start nginx

Alefaso ny Nginx manomboka amin'ny boot; ampiasao ity baiko manaraka ity:

sudo systemctl enable nginx

Raha azo atao, hamarino ny dikan-nao Nginx. Amin'ny tranga misy antsika dia ny dikan-teny Nginx Mainline; ampiasao ity baiko manaraka ity.

nginx -v

Amboary ny FirewallD ho an'ny Nginx

Raha tsy manolo ny serivisy Nginx efa misy ianao ary mametraka Nginx sambany, dia mety mila manitsy ny firewall ho an'ny fifamoivoizana HTTP sy HTTPS ianao. Ohatra iray amin'ny fomba hanaovana izany eto ambany:

Avelao hampiasa ity baiko manaraka ity ny fifamoivoizana HTTP:

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

Avelao hampiasa ity baiko manaraka ity ny fifamoivoizana HTTPS:

sudo firewall-cmd --permanent --zone=public --add-service=https

Rehefa vita dia mila manao ny fanovana ianao amin'ny alàlan'ny famerenana indray ny firewall:

sudo firewall-cmd --reload

Ampidino ny loharano Nginx

Ny dingana manaraka dia izao, ary mila misintona ny kaody loharano Nginx ianao mba hanangonana ny maody dynamique ModSecurity. Tsy maintsy misintona sy mitahiry ny fonosana loharano ao amin'ny toerana lahatahiry ianao /etc/local/src/nginx.

Mamorona sy amboary ny lahatahiry

Mamorona ny toerana toy izao manaraka izao:

sudo mkdir /usr/local/src/nginx && cd /usr/local/src/nginx

Download Source Archive

Avy eo, alao ny arisiva loharano Nginx avy amin'ny pejin'ny fampidinana mba hifanaraka amin'ny dikan-teny Nginx fantatrao teo aloha. Na dia tsy nanavao ny kinova farany an'ny Nginx stable na mainline ianao ary mampiasa dikan-teny taloha, dia tokony ho afaka hahita loharano mifanaraka amin'ny anao manokana ianao.

Ny pejy download Nginx dia mety ho hita eto.

Ampidino ny loharano mampiasa ny wget baiko toy izao (ohatra ihany).

sudo wget http://nginx.org/download/nginx-1.23.1.tar.gz

Tsarovy fa tena ilaina ny dikan-teny Nginx napetraka mifanaraka amin'ny arisiva alaina, raha tsy izany dia hisy tsy fahombiazana ianao any aoriana any amin'ny lesona.

Manaraka, esory ny arisiva toy izao manaraka izao.

sudo tar -xvzf nginx-1.23.1.tar.gz

Hamarino ny Source Version

Manaraka, tanisao ny rakitra lahatahiry miaraka amin'ny ls baiko toy izao manaraka izao.

ls

Output ohatra amin'ny anao /usr/src/local/nginx lahatahiry.

[joshua@rocky-linux-9 nginx]$ ls
nginx-1.23.1  nginx-1.23.1.tar.gz

Manaraka, hamafiso fa ny fonosana loharano dia mitovy amin'ny dikan-nao Nginx napetraka ao amin'ny rafitrao, araka ny voalaza teo aloha.

Mametraka libmodsecurity3 ho an'ny ModSecurity

Ny fonosana libmodsecurity3 no ampahany fototra amin'ny WAF izay manao ny HTTP sivana ho an'ny fampiharana tranonkalanao. Hanambatra azy avy amin'ny loharano ianao.

Clone ModSecurity Repository avy amin'ny Github

Ny dingana voalohany dia ny clone avy amin'ny Github, ary raha tsy nametraka git ianao dia mila manatanteraka ity baiko manaraka ity:

sudo dnf install git -y

Manaraka, clone ny libmodsecurity3 GIT repository toy izao manaraka izao.

sudo git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/

Rehefa vita ny klone dia mila manao izany ianao CD mankany amin'ny lahatahiry.

cd /usr/local/src/ModSecurity/

Mametraka libmodsecurity3 Dependencies

Alohan'ny hanangonanao dia mila mametraka ireto fiankinana manaraka ireto ianao.

Ny asa voalohany dia ny fametrahana ny tahiry EPEL, ary ny tolo-kevitra dia ny fametrahana ireo tahiry roa ireo.

Voalohany, avelao ny tahiry CRB.

sudo dnf config-manager --set-enabled crb

Manaraka izany EPEL mampiasa ireto manaraka ireto (dnf) baiko terminal.

sudo dnf install \
    https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
    https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm

Manaraka, araho ity baiko manaraka ity mba hametrahana ireo fonosana izay takian'ny Modsecurity. Izany dia tokony handrakotra ny ankamaroan'ny safidy sy ny endri-javatra azonao ampiasaina amin'ny Modsecurity sy ny fitsipika fototra napetraka.

sudo dnf install doxygen yajl-devel gcc-c++ flex bison yajl curl-devel zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pcre-static pkgconfig libtool httpd-devel redhat-rpm-config wget curl openssl openssl-devel geos geos-devel geocode-glib-devel geolite2-city geolite2-country nano -y

Ampidiro ny GeoIP, mila manafatra ny tahiry Remi aloha ianao.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

Ampidiro izao ny GeoIP-devel mampiasa ity baiko manaraka ity.

sudo dnf --enablerepo=remi install GeoIP-devel -y

Mba hamaranana izao dia apetraho ireto submodules GIT manaraka ireto.

sudo git submodule init

Avy eo, manavao ny submodules:

sudo git submodule update

Manorina ny tontolo iainana ModSecurity

Ny dingana manaraka izao dia ny fananganana ny tontolo iainana aloha. Ampiasao ity baiko manaraka ity:

sudo ./build.sh

Manaraka, araho ny baiko configure.

sudo ./configure

Mariho fa mety ho hitanao ity hadisoana manaraka ity.

fatal: No names found, cannot describe anything.

Afaka tsy miraharaha an'izany ianao ary mandroso amin'ny dingana manaraka.

Manangona ny ModSecurity Source Code

Ankehitriny rehefa nanangana sy nanamboatra ny tontolo iainana ho an'ny libmodsecurity3 ianao dia izao no fotoana hanangonana azy miaraka amin'ny baiko manao.

sudo make

Ny fika mora dia ny mamaritra ny -j satria mety hampitombo be ny hafainganam-pandehan'ny fanangonana izany raha manana mpizara matanjaka ianao.

Ohatra, manana CPU 6 ny mpizara, ary afaka mampiasa ny 6 na farafaharatsiny 4 hatramin'ny 5 aho mba hampitombo ny hafainganam-pandeha.

sudo make -j 6

Rehefa avy nanangona ny kaody loharano dia araho izao ny baiko fametrahana ao amin'ny terminal anao:

sudo make install

Mariho fa ny fametrahana dia atao ao amin'ny /usr/local/modsecurity/, izay horesahinao any aoriana.

Apetraho ModSecurity-nginx Connector

The ModSecurity-nginx connector dia ny teboka mampifandray ny nginx sy ny libmodsecurity. Io no singa mifandray amin'ny Nginx sy ModSecurity (libmodsecurity3).

Clone ModSecurity-nginx Repository avy amin'ny Github

Mitovy amin'ny dingana teo aloha amin'ny fanaovana cloning ny libmodsecurity3 repository, dia mila manao clone ny repository connector indray ianao amin'ny fampiasana ity baiko manaraka ity:

sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/

Apetraho ModSecurity-nginx Dependencies

Avy eo, midira ao amin'ny lahatahiry loharano Nginx; tadidio fa ny ohatra etsy ambany dia tsy mitovy amin'ny dikan-nao; ohatra fotsiny io.

ohatra:

cd /usr/local/src/nginx/nginx-1.23.1/

Manaraka, hanangona ny ModSecurity-nginx Connector Module miaraka amin'ny -with-compat saina toy izao:

sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx

Output ohatra raha toa ka niasa tsara ny rehetra hatreto:

Ahoana ny fametrahana ModSecurity 3 + OWASP amin'ny Nginx amin'ny Rocky Linux 9

ankehitriny manao (mamorona) ny modules dynamique miaraka amin'ity baiko manaraka ity:

sudo make modules

Ohatra output:

Ahoana ny fametrahana ModSecurity 3 + OWASP amin'ny Nginx amin'ny Rocky Linux 9

Avy eo, raha ao amin'ny lahatahiry loharano Nginx, ampiasao ity baiko manaraka ity mba hamindra ny maody mavitrika nataonao izay voatahiry ao amin'ilay toerana. objs/ngx_http_modsecurity_module.so ary kopia amin'ny /usr/share/nginx/modules lahatahiry.

sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/

Azonao atao ny mitahiry ny maody dynamique na aiza na aiza raha mamaritra ny lalana feno ianao rehefa mampiditra.

Ho an'ireo mpampiasa nametraka Nginx mainline na stable, ny toerana dia ho toy izao manaraka izao.

sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/

Ampidiro sy amboary ny mpampitohy ModSecurity-nginx miaraka amin'ny Nginx

Ankehitriny rehefa nanangona ny maody dynamique ianao ary nametraka azy mifanaraka amin'izany, dia mila manitsy ny anao ianao /etc/nginx/nginx.conf fichier configuration mba hahazoana ModSecurity miasa amin'ny mpizara tranonkala Nginx anao.

Alefaso ny ModSecurity amin'ny nginx.conf

Voalohany dia mila mamaritra ianao load_module ary lalana mankany amin'ny module modsecurity anao.

Sokafy nginx.conf miaraka amin'ny mpamoaka lahatsoratra rehetra. Ho an'ny lesona, nano dia hampiasaina:

sudo nano /etc/nginx/nginx.conf

Manaraka, ampio ity andalana manaraka ity amin'ny rakitra eo akaikin'ny tampony:

load_module modules/ngx_http_modsecurity_module.so;

Raha hitanao any an-kafa ny module dia ampidiro ny lalana feno.

Ampio izao code manaraka izao eo ambanin'ny HTTP {} fizarana toy izao manaraka izao:

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;

ohatra:

Ahoana ny fametrahana ModSecurity 3 + OWASP amin'ny Nginx amin'ny Rocky Linux 9

Raha hitanao any an-kafa ny module dia ampidiro ny lalana feno.

Tehirizo ilay rakitra (CTRL+O), dia mivoaka (CTRL+X).

Mamorona sy manamboatra lahatahiry sy rakitra ho an'ny ModSecurity

Ho an'ny fampianarana dia mila mamorona lahatahiry hitehirizana ireo rakitra fanamafisana sy fitsipika ho avy ianao, OWASP CRS.

Ampiasao ity baiko manaraka ity mba hamoronana ny /etc/nginx/modsec lahatahiry.

sudo mkdir /etc/nginx/modsec/

Tsy maintsy mandika ny rakitra fikirakirana ModSecurity santionany avy amin'ny lahatahiry GIT cloned.

sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

Ampiasao ny tonian-dahatsoratra tianao indrindra, sokafy ny rakitra modsecurity.conf toy izao manaraka izao.

sudo nano /etc/nginx/modsec/modsecurity.conf

Amin'ny alàlan'ny default, ModSecurity configuration dia manana ny motera fitsipika voatondro ho (Detection Only), izay raha lazaina amin'ny teny hafa, dia mitantana ny ModSecurity ary mahita ny fitondran-tena ratsy rehetra fa tsy manakana na mandrara ary manoratra ny fifampiraharahana HTTP rehetra izay asehony. Tsy tokony hampiasaina fotsiny izany raha toa ka be dia be ny valiny diso na nampitombo ny fandrindrana ny haavon'ny fiarovana ho amin'ny ambaratonga faran'izay henjana sy ny fitsapana hahitana raha misy valiny diso.

Ao amin'ny rakitra fanamafisana, ovay ity fihetsika ity ho (amin'ny), hita ao amin'ny andalana faha-7.

SecRuleEngine DetectionOnly

Hanova ny andalana ho amin'ity mba hahafahan'ny ModSecurity:

SecRuleEngine On

ohatra:

Ahoana ny fametrahana ModSecurity 3 + OWASP amin'ny Nginx amin'ny Rocky Linux 9

Ankehitriny, mila mitady ireto manaraka ireto ianao SecAuditLogParts, izay hita ao amin'ny tsipika 224.

# Log everything we know about a transaction.
SecAuditLogParts ABIJDEFHZ

Tsy mety izany ary mila ovaina. Ovao ho toy izao ny andalana:

SecAuditLogParts ABCEFHJKZ

Vonjeo izao ny fampiasana rakitra (CTRL+O), dia mivoaka (CTRL+X).

Ny ampahany manaraka dia ny famoronana ity rakitra manaraka ity modsec-config.conf. Eto ianao dia hanampy ny modsecurity.conf rakitra miaraka ary aoriana amin'ny fitsipika hafa toy ny OWASP CRS, ary raha mampiasa WordPress ianao, ny WPRS CRS fitsipika napetraka.

Ampiasao ity baiko manaraka ity hamoronana ny rakitra ary hanokafana azy.

sudo nano /etc/nginx/modsec/modsec-config.conf

Rehefa tafiditra ao anaty rakitra dia ampio ity andalana manaraka ity.

include /etc/nginx/modsec/modsecurity.conf

Tehirizo ny rakitra modsec-config.conf amin'ny (CTRL+O), avy eo (CTRL+X) Fivoahana.

Farany, kopia ny ModSecurity's unicode.mapping tahiry miaraka amin'ny baiko CP toy izao manaraka izao.

sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/

Alohan'ny handrosoana dia tokony hanome ny serivisy Nginx ho maina ianao miaraka amin'ity baiko terminal manaraka ity.

sudo nginx -t

Raha efa nametraka tsara ny zava-drehetra ianao dia tokony hahazo ity vokatra manaraka ity:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Mba hahatonga ny fanovana ho velona, ​​avereno indray ny serivisy Nginx amin'ny alàlan'ny baiko systemctl:

sudo systemctl restart nginx

Apetraho ny OWASP Core Rule Set ho an'ny ModSecurity

Ny ModSecurity irery dia tsy miaro ny mpizara tranonkalanao, ary mila manana fitsipika ianao. Iray amin'ireo fitsipika malaza sy hajaina ary malaza indrindra ny fitsipika OWASP CRS napetraka. Ny fitsipika no be mpampiasa indrindra amin'ireo mpizara tranonkala sy WAF hafa, ary ny ankamaroan'ny rafitra mitovy amin'izany dia mametraka ny ankamaroan'ny fitsipiny amin'ity CRS ity. Ny fametrahana ity fehezan-dalàna ity dia hanome anao loharanom-piarovana lehibe amin'ny ankamaroan'ny fandrahonana mipoitra amin'ny Internet amin'ny alàlan'ny fitadiavana ireo mpisehatra ratsy sy fanakanana azy ireo.

Hamarino ny Pejy tenifototra OWASP famoahana mba hahitana izay vaovao farany, satria mety ho niova ny ohatra etsy ambany amin'ny ho avy.

Voalohany, miverena any amin'ny lahatahiry modsec izay noforonina.

cd /etc/nginx/modsec

mampiasa ny baiko wget, download the OWASP CRS 3.3.2 arisiva, izay amin'ity daty ity dia ny stable farany indrindra, saingy tadidio efatra andro lasa izay, nihena ny dikan-teny mialoha ny famoahana, koa ny torohevitro dia ny manamarina ny rohy vitsivitsy etsy ambony mba hahitana hoe toy ny ahoana ny famoahana ho an'ny fitsipika fototra.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.2.zip

Azonao atao ny misintona ny fananganana amin'ny alina ho an'ireo izay te-hiaina amin'ny sisiny. Ampiasao fotsiny ny alina raha vonona ny hamerina hamerina sy hanamarina matetika ny CoreRuleSet Github ianao amin'ny fanavaozana ary ho matoky kokoa amin'ny famahana olana. Ara-teknika dia mety ho azo antoka kokoa ny alina nefa mety hiteraka olana.

Ho an'ny mpampiasa vaovao, ampiasao ny kinova stable ary aza mampiasa ny dikan-teny etsy ambany.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/nightly.zip

Tamin'ny fotoana namoronana ny fampianarana dia misy ihany koa ny famoahana mialoha ny v4.0.0-RC1, araka ny voalaza teo aloha.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v4.0.0-rc1.zip

mametraka ny Sokafy ny fonosana raha tsy nametraka an'io ao amin'ny servero ianao.

sudo dnf install unzip -y

Sokafy izao ny arsiva, ary hametraka ny kandidà RC ny fampianarana satria akaiky ny kinova farany azo atao raha tsy mampiasa ny alina, izay mety ho olana raha tsy efa za-draharaha amin'ny fitsipika OWASP sy Modsecurity ianao. Avy eo dia manoro hevitra aho ny hampiasa an'io dikan-teny io ho an'ny fitsipika fiarovana farany.

sudo unzip v4.0.0-rc1 -d /etc/nginx/modsec

Manoro hevitra aho ny hitazona ny dikan-tenin'ny OWASP fitsipika satria afaka misintona maromaro ianao ary, amin'ny ho avy, ovay haingana ao amin'ny modsecurity.conf ianao mba hahitana hoe inona no fitsipika miasa tsara indrindra tsy misy olana, toy ny fitsapana eo amin'ny kandidà famoahana sy ny alina na stable. ary hamoaka kandida.

Toy ny teo aloha, toy ny modsecurity.conf santionany config, OWASP CRS dia tonga miaraka amin'ny santionany fichier fichier mila soloina anarana. Ny tsara indrindra dia ny mampiasa ny baiko CP ary mitazona backup ho an'ny ho avy raha toa ka mila mamerina indray ianao.

sudo cp /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf.example /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf

Mba hahafahan'ny fitsipika, sokafy ny /etc/nginx/modsec/modsec-config.conf.

sudo nano /etc/nginx/modsec/modsec-config.conf

Rehefa tafiditra ao anaty rakitra indray dia ampio ireto andalana roa fanampiny ireto:

include /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf
include /etc/nginx/modsec/coreruleset-4.0.0-rc1/rules/*.conf

ohatra:

Ahoana ny fametrahana ModSecurity 3 + OWASP amin'ny Nginx amin'ny Rocky Linux 9

Tehirizo ilay rakitra (CTRL+O) ary mivoaka (CTRL+T).

Tsarovy fa, araka ny nohazavaina teo aloha, dia afaka misintona dikan-teny maro ara-teknika ianao, manova ity rakitra ity, ary aza adino ny mandika sy manao lisitra fotsy, ny ampahany manan-danja amin'ny lisitra fotsy dia ny ankapobeny amin'ny ankamaroany.

Toy ny teo aloha dia mila manandrana fanampim-baovao vaovao amin'ny serivisy Nginx ianao alohan'ny hanaovana azy mivantana.

sudo nginx -t

Rehefa vita ny fitsapana maina dia tokony hahazo ity vokatra manaraka ity ianao izay midika fa mandeha tsara ny zava-drehetra:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Avereno indray ny serivisy Nginx anao mba hahatonga ny fanovana ho velona toy izao manaraka izao:

sudo systemctl restart nginx

Mampiasa sy mahatakatra ny OWASP Core Rule Set

OWASP CRS dia manana safidy maro, ny fanovana default, na izany aza, ivelan'ny boaty, dia hiaro ny ankamaroan'ny mpizara avy hatrany tsy handratra ny tena mpitsidika anao sy ny bots SEO tsara. Ireto ambany ireto ny faritra sasany hodinihina mba hanazavana. Ny famakiana fanampiny dia tsara indrindra raha manadihady ny safidy rehetra ao amin'ny fisie fichier satria manana angon-drakitra kely hazavaina izy ireo.

Sokafy ny anao CRS-setup.conf hametraka.

sudo nano /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf

Mariho fa ity no fanamafisam-peo dev miaraka amin'ny singa fanampiny raha oharina amin'ny version 3.3.

Avy eto ianao dia afaka manova ny ankamaroan'ny firafitry ny OWASP CRS anao.

OWASP CRS scoring

Mba handrava azy, ModSecurity dia manana fomba roa:

Anomaly Scoring Mode

# -- [[ Anomaly Scoring Mode (default) ]] --
# In CRS3, anomaly mode is the default and recommended mode, since it gives the
# most accurate log information and offers the most flexibility in setting your
# blocking policies. It is also called "collaborative detection mode".
# In this mode, each matching rule increases an 'anomaly score'.
# At the conclusion of the inbound rules, and again at the conclusion of the
# outbound rules, the anomaly score is checked, and the blocking evaluation
# rules apply a disruptive action, by default returning an error 403.

Fomba Mifehy tena

# -- [[ Self-Contained Mode ]] --
# In this mode, rules apply an action instantly. This was the CRS2 default.
# It can lower resource usage, at the cost of less flexibility in blocking policy
# and less informative audit logs (only the first detected threat is logged).
# Rules inherit the disruptive action that you specify (i.e. deny, drop, etc).
# The first rule that matches will execute this action. In most cases this will
# cause evaluation to stop after the first rule has matched, similar to how many
# IDSs function.

Anomaly Scoring amin'ny ankapobeny, ho an'ny ankamaroan'ny mpampiasa, ny fomba tsara indrindra ampiasaina.

Misy ambaratonga efatra paranoia:

  • Paranoia Level 1 - Ambaratonga default ary atolotra ho an'ny ankamaroan'ny mpampiasa.
  • Paranoia Level 2 - Ireo mpampiasa mandroso ihany.
  • Paranoia Level 3 - Mpampiasa manam-pahaizana ihany.
  • Paranoia Level 4 - Tsy soso-kevitra mihitsy, afa-tsy amin'ny toe-javatra miavaka.
# -- [[ Paranoia Level Initialization ]] ---------------------------------------
#
# The Paranoia Level (PL) setting allows you to choose the desired level
# of rule checks that will add to your anomaly scores.
#
# With each paranoia level increase, the CRS enables additional rules
# giving you a higher level of security. However, higher paranoia levels
# also increase the possibility of blocking some legitimate traffic due to
# false alarms (also named false positives or FPs). If you use higher
# paranoia levels, it is likely that you will need to add some exclusion
# rules for certain requests and applications receiving complex input.
#
# - A paranoia level of 1 is default. In this level, most core rules
#   are enabled. PL1 is advised for beginners, installations
#   covering many different sites and applications, and for setups
#   with standard security requirements.
#   At PL1 you should face FPs rarely. If you encounter FPs, please
#   open an issue on the CRS GitHub site and don't forget to attach your
#   complete Audit Log record for the request with the issue.
# - Paranoia level 2 includes many extra rules, for instance enabling
#   many regexp-based SQL and XSS injection protections, and adding
#   extra keywords checked for code injections. PL2 is advised
#   for moderate to experienced users desiring more complete coverage
#   and for installations with elevated security requirements.
#   PL2 comes with some FPs which you need to handle.
# - Paranoia level 3 enables more rules and keyword lists, and tweaks
#   limits on special characters used. PL3 is aimed at users experienced
#   at the handling of FPs and at installations with a high security
#   requirement.
# - Paranoia level 4 further restricts special characters.
#   The highest level is advised for experienced users protecting
#   installations with very high security requirements. Running PL4 will
#   likely produce a very high number of FPs which have to be
#   treated before the site can go productive.
#
# All rules will log their PL to the audit log;
# example: [tag "paranoia-level/2"]. This allows you to deduct from the
# audit log how the WAF behavior is affected by paranoia level.
#
# It is important to also look into the variable
# tx.enforce_bodyproc_urlencoded (Enforce Body Processor URLENCODED)
# defined below. Enabling it closes a possible bypass of CRS.

Andramo ny OWASP CRS amin'ny mpizara anao

Mba hitsapana raha miasa amin'ny lohamilinao ny OWASP CRS dia sokafy ny Internet Browser ary ampiasao ireto manaraka ireto:

https://www.yourdomain.com/index.html?exec=/bin/bash

Tokony hahazo a 403 fahadisoana voarara. Raha tsy izany, dia misy dingana tsy hita.

ohatra:

Ahoana ny fametrahana ModSecurity 3 + OWASP amin'ny Nginx amin'ny Rocky Linux 9

Ny olana mahazatra indrindra dia ny fanovana DetectionOnly ny On, araka ny voalaza teo aloha tao amin'ny lesona.

Fiaraha-miasa amin'ny Positive Diso & Fanilihana ny fitsipika manokana

Ny iray amin'ireo asa tsy misy fiafarana matetika dia ny fiatrehana ireo vokatra diso, ModSecurity sy OWASP CRS dia manao asa lehibe miaraka, saingy tonga amin'ny fandaniana ny fotoananao izany, fa raha omena ny fiarovana azonao, dia mendrika izany. Ho an'ny fanombohana, tsy mametraka ny haavon'ny paranoia ho avo dia ny fitsipika volamena.

Ny fitsipika tsara dia ny mampandeha ny fitsipika napetraka mandritra ny herinandro vitsivitsy ka hatramin'ny volana maromaro miaraka amin'ny tsy fahampian'ny valiny diso, dia ampitomboy, ohatra, ny paranoia level 1 ka hatramin'ny paranoia level 2, mba tsy ho tototry ny taonina ianao miaraka.

Tsy tafiditra ao ny False Positives fantatra

Ny Modsecurity, amin'ny alàlan'ny default, dia afaka manao lisitra fotsy ny hetsika isan'andro izay mitarika ho amin'ny fahatsarana diso toy ny eto ambany:

#SecAction \
# "id:900130,\
#  phase:1,\
#  nolog,\
#  pass,\
#  t:none,\
#  setvar:tx.crs_exclusions_cpanel=1,\
#  setvar:tx.crs_exclusions_dokuwiki=1,\
#  setvar:tx.crs_exclusions_drupal=1,\
#  setvar:tx.crs_exclusions_nextcloud=1,\
#  setvar:tx.crs_exclusions_phpbb=1,\
#  setvar:tx.crs_exclusions_phpmyadmin=1,\
#  setvar:tx.crs_exclusions_wordpress=1,\
#  setvar:tx.crs_exclusions_xenforo=1"

Mba ahafahana, ohatra, WordPress, phpBB, ary phpMyAdmin rehefa mampiasa azy telo ianao, esory ny tsipika ary avelao ny (1) tsy misy isa, ovay ny serivisy hafa tsy ampiasainao, ohatra, Xenforo ho (0) satria tsy te hanao lisitra fotsy ireo fitsipika ireo ianao.

Ohatra eto ambany:

SecAction \
 "id:900130,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:tx.crs_exclusions_cpanel=0,\
  setvar:tx.crs_exclusions_dokuwiki=0,\
  setvar:tx.crs_exclusions_drupal=0,\
  setvar:tx.crs_exclusions_nextcloud=0,\
  setvar:tx.crs_exclusions_phpbb=1,\
  setvar:tx.crs_exclusions_phpmyadmin=1,\
  setvar:tx.crs_exclusions_wordpress=1,\
  setvar:tx.crs_exclusions_xenforo=0"

Azonao atao koa ny manova ny syntax, izay ho madio kokoa. Ohatra:

SecAction \
 "id:900130,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:tx.crs_exclusions_phpbb=1,\
  setvar:tx.crs_exclusions_phpmyadmin=1,\
  setvar:tx.crs_exclusions_wordpress=1"

Araka ny hitanao dia nesorina ireo safidy tsy ilaina ary ampiana (“) amin'ny faran'ny WordPress ho an'ny syntax marina.

Tsy tafiditra ny fitsipika alohan'ny CRS

Mba hiatrehana ny fanilikilihana mahazatra, voalohany dia mila manova ny anarana avy amin'ny FANGATAHANA-900-FIKAMBANANA-FAMPIANARANA-TAOHAN'NY-CRS-SAMPLE.conf tahiry miaraka amin'ny baiko cp toy izao manaraka izao:

sudo cp /etc/nginx/modsec/coreruleset-3.4-dev/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example /etc/nginx/modsec/coreruleset-3.4-dev/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf

Tsarovy rehefa mamorona fitsipika fanilihana, ny tsirairay dia tsy maintsy manana id: ary ho tokana, raha tsy izany, rehefa manandrana ny serivisy Nginx ianao dia hahazo fahadisoana.

ohatra “id:1544,phase:1,log,allow,ctl:ruleEngine=off”, ny id 1544 dia tsy azo ampiasaina amin'ny fitsipika faharoa.

Ohatra, ny REQUEST_URI sasany dia hampiakatra valiny diso. Ny ohatra etsy ambany dia roa miaraka amin'ny Google pagespeed beacon sy WMUDEV plugin ho an'ny WordPress:

SecRule REQUEST_URI "@beginsWith /wp-load.php?wpmudev" "id:1544,phase:1,log,allow,ctl:ruleEngine=off"

SecRule REQUEST_URI "@beginsWith /ngx_pagespeed_beacon" "id:1554,phase:1,log,allow,ctl:ruleEngine=off"

Araka ny hitanao dia avela ho azy ny URL rehetra manomboka amin'ny lalana.

Safidy iray hafa dia ny whitelist ny adiresy IP; fomba vitsivitsy azonao atao momba izany:

SecRule REMOTE_ADDR "^195\.151\.128\.96" "id:1004,phase:1,nolog,allow,ctl:ruleEngine=off"
## or ###
SecRule REMOTE_ADDR "@ipMatch 127.0.0.1/8, 195.151.0.0/24, 196.159.11.13" "phase:1,id:1313413,allow,ctl:ruleEngine=off"

The @ipMatch azo ampiasaina betsaka kokoa ho an'ny subnets. Raha te mandà fanovana subnet na adiresy IP ianao dia avelao handà. Miaraka amin'ny fahaiza-manao sasany, azonao atao koa ny mamorona lisitra mainty sy fotsy ary manamboatra izany amin'ny fail2ban. Ny fahafaha-manao dia matetika tsy misy farany.

Ohatra iray farany dia ny manafoana ny fitsipika izay miteraka fatiantoka diso, fa tsy ny fanaovana lisitra fotsy ny lalana manontolo, araka ny hitanao tamin'ny ohatra REQUEST_URI voalohany. Mitaky fotoana sy fitsapana bebe kokoa anefa izany.

Ohatra, raha te hanaisotra fitsipika ianao 941000 ary 942999 avy amin'ny anao /admin/ faritra satria tsy mitsahatra miteraka fandrarana diso sy sakana ho an'ny ekipanao izy, tadiavo ao amin'ny logs modsecurity anao ny rakitra ID fitsipika ary esory ny ID miaraka amin'ny RemoveByID toy ny ohatra eto ambany:

SecRule REQUEST_FILENAME "@beginsWith /admin" "id:1004,phase:1,pass,nolog,ctl:ruleRemoveById=941000-942999"

Misy ohatra azo jerena ao amin'ny ModSecurity GIT wiki page.

WordPress WPRS fitsipika napetraka ho an'ny ModSecurity

Safidy hafa ho an'ny WordPress Ny mpampiasa dia ny mametraka sy mihazakazaka miaraka amin'ny OWASP CRS fitsipika napetraka, tetikasa fanta-daza mitondra ny lohateny hoe WPRS fitsipika napetraka. Satria safidy io ary tsy ho an'ny rehetra, ny lesona dia tsy handrakotra izany amin'ity fizarana ity.

Na izany aza, raha te-hametraka izany ianao ho fiarovana fanampiny amin'ny fampiasana WordPress amin'ny mpizara anao, tsidiho azafady ny torolalana momba ny Fametrahana WordPress ModSecurity Rule Set (WPRS).

Mamorona rakitra ModSecurity LogRotate

Mety hitombo be ny logs ModSecurity, noho izany dia mila manangana log rotating ianao satria tsy natao ho anao izany.

Voalohany, mamorona sy sokafy ny rakitra rotate ModSecurity anao modsec.

sudo nano /etc/logrotate.d/modsec

Ampio ity code manaraka ity:

/var/log/modsec_audit.log
{
        rotate 31
        daily
        missingok
        compress
        delaycompress
        notifempty
}

Izany dia hitazona ny diary mandritra ny 31 andro. Raha tianao ny manana kely kokoa dia ovay 31 ka hatramin'ny 7 andro, mitovy amin'ny sandan'ny diary iray herinandro. Tokony hihodina isan'andro ianao ho an'ny ModSecurity. Raha mila mijery ny rakitra misy rakitra isan-kerinandro ianao dia ho loza hosivanina, raha jerena ny habeny.

Hevitra sy fehin-kevitra

Amin'ny ankapobeny, ny fametrahana ny ModSecurity amin'ny mpizara anao dia hanome fiarovana eo noho eo. Na izany aza, ny faharetana, ny fotoana ary ny fanoloran-tena amin'ny fianarana dia ho endri-javatra lehibe toy izany. Ny zavatra farany tadiavinao dia ny manakana ny bots SEO na, ny tena zava-dehibe, ny tena mpampiasa mety ho mpanjifa mety.

Tsarovy ny hizaha toetra sy hanamarina ny logs ary aza mametraka ny haavon'ny fiarovana. Na dia lehibe aza ireo rindrambaiko ireo dia afaka manakana ny fifamoivoizana ara-dalàna haingana izy ireo ary, miankina amin'ny hoe loharanon-karama ny tranokalanao dia mety hisy vokany ratsy.



Araho ny LinuxCapable.com!

Te hahazo fanavaozana mandeha ho azy? Araho izahay amin'ny iray amin'ireo kaonty media sosialy!