Giunsa ang Pag-install sa ModSecurity alang sa Nginx sa Debian/Ubuntu
Ang tinguha sa matag developer nga mag-deploy og luwas nga mga aplikasyon sa web nga luwas gikan sa mga hulga. Sa kadaghanan nga mga okasyon, kini wala’y mahimo nga gisulti kaysa nahimo. Ang kasubsob sa mga website nga gi-hack nagpadayon sa pagtaas samtang ang mga hacker nagpadayon sa pagpahimulos sa tanan nga mga vector sa pag-atake nga ilang magamit.
Ang seguridad sa WebApp mahimong usa ka dako nga hagit labi na sa pagkaylap sa mga makadaot nga himan sama sa mga rootkit, scanner, bot, ug uban pang malware. Bisan kung ang pagkalapas mahimo’g usa ka butang kung kanus-a kung dili kung, mabinantayon nga ipatuman ang pipila nga mga disente nga lakang sa seguridad aron mapanalipdan ang imong mga aplikasyon sa web.
[ Tingali ganahan ka usab: 5 Mga Himan sa Pag-scan sa Linux Server alang sa Malware ug Rootkits ]
Usa sa mga himan nga makahatag usa ka desente nga lebel sa seguridad batok sa mga pag-atake gitawag nga ModSecurity. Kini usa ka libre ug bukas nga gigikanan nga Web Application Firewall (WAF) nga nanalipod sa imong mga aplikasyon sa web gikan sa daghang mga pag-atake sa layer 7 sama sa cross-site scripting (XSS), SQL injection, session hijacking, ug daghan pa.
Sa kini nga giya, ipakita namon kanimo kung giunsa ang pag-install ug pag-configure sa ModSecurity aron magtrabaho kauban ang Nginx sa mga distribusyon sa Linux nga nakabase sa Debian sama sa Ubuntu.
Lakang 1: I-install ang Dependencies
Aron masugdan ang pag-instalar, gikinahanglan ang daghang mga dependency sa software aron magmalampuson ang pag-instalar. Apan una, i-update ang mga lista sa package ug i-refresh ang mga repository sama sa mosunod.
$ sudo apt update
Sunod, i-install ang mga dependency sama sa mosunod.
$ sudo apt install make gcc build-essential autoconf automake libtool libfuzzy-dev ssdeep gettext pkg-config libcurl4-openssl-dev liblua5.3-dev libpcre3 libpcre3-dev libxml2 libxml2-dev libyajl-dev doxygen libcurl4 libgeoip-dev libssl-dev zlib1g-dev libxslt-dev liblmdb-dev libpcre++-dev libgd-dev
Lakang 2: I-install ang Pinakabag-ong Bersyon sa Nginx
Ang sunod nga lakang mao ang pag-install sa Nginx web browser. Aron ma-install ang pinakabag-o nga bersyon, among i-install kini gikan sa ondrej/nginx-mainline PPA w nga karon gipadayon sa usa ka developer sa Debian sukad 2000.
Aron idugang ang PPA sa imong lokal nga sistema sa Ubuntu ipatuman ang mando:
$ sudo add-apt-repository ppa:ondrej/nginx-mainline -y
Sunod, i-update ang mga lista sa package ug i-install ang pinakabag-o nga bersyon sa Nginx sama sa mosunod
$ sudo apt update $ sudo apt install nginx-core nginx-common nginx nginx-full
Kasagaran, ang default repository lamang ang gipagana. Maalamon nga mahimo ang repository sa source code aron mahimo nimo, sa ulahi, i-download ang Nginx source code sa sunod nga lakang.
Aron makab-ot kini, usba ang Nginx repository file.
$ sudo vim /etc/apt/sources.list.d/ondrej-ubuntu-nginx-mainline-*.list
Pangitaa ug i-uncomment kini nga linya aron mahimo ang source code repository:
# deb-src http://ppa.launchpad.net/ondrej/nginx-mainline/ubuntu/ focal main
Ang file kinahanglan nga makita karon sama sa gipakita.
I-save ang mga pagbag-o ug paggawas.
Dayon i-update ang package index.
$ sudo apt update
Lakang 3: Pag-download sa Nginx Source Package
Aron ma-compile ang dinamikong module sa ModSecurity, kinahanglan namon nga i-download ang Nginx source code package. Aron mahimo kini, una, maghimo kami usa ka direktoryo sa Nginx sa/usr/local/src/nga agianan aron ma-accommodate ang Nginx source code package file.
$ sudo mkdir -p /usr/local/src/nginx
Sunod, itudlo ang mga permiso sa direktoryo sama sa gipakita. Siguroha nga ilisan ang username sa imong aktuwal nga sudo username.
$ sudo chown username:username -R /usr/local/src/
Pagkahuman, pag-navigate sa direktoryo sa gigikanan sa Nginx:
$ cd /usr/local/src/nginx
Ipadayon ug i-download ang Nginx source file packages:
$ sudo apt source nginx
Lagmit makasulod ka sa mosunod nga sayop:
W: Download is performed unsandboxed as root as file 'nginx_1.19.5.orig.tar.gz' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
Kini walay bisan unsa aron ikaw motrabaho. Busa, ibaliwala lang ang sayop.
Mahimo nimong tan-awon ang source file gamit ang ls command.
$ ls -l
Siguroha nga ang bersyon sa source code motakdo sa bersyon sa Nginx nga na-install.
$ nginx -v
Lakang 4: I-install ang Libmodsecurity3 Library
Ang Libmodesecurity usa ka librarya sa Modsecurity nga nagdumala sa pagsala sa HTTP alang sa imong mga aplikasyon. Adunay duha ka paagi sa pag-instalar niini. Mahimo nimong gamiton ang apt package manager sama sa gipakita
$ sudo apt install libmodsecurity3
Ang uban nga pamaagi mao ang pag-instalar niini gikan sa usa ka tinubdan nga mas maayo tungod kay kini naghatag kanimo sa pinakabag-o nga bersyon. Aron masugdan ang pag-install sa Libmodsecurity gikan sa gigikanan, i-clone ang git repository sama sa gipakita:
$ git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
Pag-navigate sa gi-clone nga direktoryo:
$ cd /usr/local/src/ModSecurity/
Paghimo usa ka punto aron i-install ang mga submodules
$ sudo git submodule init $ sudo git submodule update
Pagkahuman, paghimo sa palibot gamit ang mga mando sa ubos.
$ sudo ./build.sh $ sudo ./configure
Sa makausa pa, ibaliwala ang sayup nga gipakita sa ubos.
fatal: No names found, cannot describe anything.
Dayon i-compile ang source code ug i-install ang ubang mga utilities gamit ang mosunod nga make command. Nagkinahanglan kini og mga 25 minutos, ug gikinahanglan ang pipila ka pailub.
$ sudo make -j4
Kung nahuman na, i-install ang mga librarya.
$ sudo make install
Lakang 5: Pag-download ug Pag-compile sa ModSecurity v3 Nginx Connector
Ang sunod nga lakang mao ang pag-download ug pag-compile sa ModSecurity Nginx connector. Ang connector, sumala sa gisugyot sa ngalan, nagsumpay sa Libmodsecurity library ngadto sa Nginx webserver. Aron ma-download ang Modsecurity connector, I-clone kini gikan sa GitHub repository sama sa mosunod.
$ git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/
Pagdala ngadto sa cloned nga direktoryo.
$ cd /usr/local/src/nginx/nginx-1.21.3/
Ipadayon ug i-install ang mga dependency sa pagtukod
$ sudo apt build-dep nginx $ sudo apt install uuid-dev
Sunod, i-compile ang ModSecurity Nginx Connector module nga adunay --with-compat
nga bandera. Ang --with-compat
nga opsyon naghimo sa ModSecurity Nginx Connector module nga binary-compatible sa kasamtangan nga Nginx library.
$ sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx
Kung nahuman na kana, paghimo sa ModSecurity Nginx Connector module gamit ang make command.
$ sudo make modules
Ang module gitipigan isip objs/ngx_http_modsecurity_module.so. Kinahanglan nimong kopyahon kini nga module sa /usr/share/nginx/modules/ directory sama sa mosunod.
$ sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/
Lakang 6: I-load ang ModSecurity Nginx Connector Module
Aron ma-load ang Nginx connector module, Una, i-access ang main Nginx configuration file.
$ sudo vim /etc/nginx/nginx.conf
Idugang ang mosunod nga linya ubos lang sa unang pipila ka linya
load_module modules/ngx_http_modsecurity_module.so;
Dugang pa, idugang ang mosunod nga mga linya sa http {...}
nga seksyon. Gitugotan niini ang ModSecurity alang sa tanan nga mga virtual host sa Nginx.
modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf;
I-save ang mga pagbag-o ug paggawas sa file.
Sunod, paghimo sa/etc/nginx/modsec/direktoryo nga magtipig ModSecurity configuration.
$ sudo mkdir /etc/nginx/modsec/
Sunod, kopyaha ang ModSecurity configuration file sama sa mosunod.
$ sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
Unya ablihi ang configuration file.
$ sudo vim /etc/nginx/modsec/modsecurity.conf
Pangitaa ang linya nga nagsugod sa SecRuleEngine nga direktiba.
SecRuleEngine DetectionOnly
Kini nga linya nagtudlo sa ModSecurity sa pag-log lamang sa mga transaksyon sa HTTP apan walay aksyon atubangan sa pag-atake sa web app. Kinahanglan nimo nga usbon kini aron ang Modsecurity dili lamang makamatikod apan makapugong usab sa mga pag-atake sa web.
Usba ang linya sa linya sa ubos
SecRuleEngine On
I-save ang mga pagbag-o ug paggawas sa file.
Sunod, paghimo sa /etc/nginx/modsec/main.conf file.
$ sudo vim /etc/nginx/modsec/main.conf
Idugang kini nga linya sa paghisgot sa /etc/nginx/modsec/modsecurity.conf configuration file.
Include /etc/nginx/modsec/modsecurity.conf
I-save ang mga pagbag-o ug paggawas sa file.
Dugang pa, kopyaha ang Unicode mapping file.
$ sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/
Dayon sulayi ang configuration sa Nginx.
$ sudo nginx -t
Ang pagsulay kinahanglan nga malampuson. Kung dili, balik ug susiha kung husto ba ang tanan nga mga pagbag-o nga gihimo.
Unya sa katapusan, i-restart ang Nginx aron magamit ang tanan nga mga pagbag-o nga gihimo.
$ sudo systemctl restart nginx
Ug pamatud-i nga ang Nginx nagdagan sama sa gipaabut.
$ sudo systemctl status nginx
Lakang 7: I-download ang OWASP Corerule Set
Aron mapanalipdan sa ModSecurity ang imong mga aplikasyon sa web, kinahanglan nimong itakda ang mga lagda nga makit-an ang mga kadudahang kalihokan ug babagan kini. Aron makasugod, mas maayo nga i-install ang naglungtad nga mga set sa lagda nga makatabang kanimo nga makat-on sa mga pisi.
Ang OWASP Core Rule Set (CRS) kay usa ka libre, open-source, ug community-maintained rule set nga naghatag ug mga lagda aron likayan ang mga common attack vectors sama sa SQL injection, Cross-site scripting (XSS).
I-download ang OWASP Core Rule Set gikan sa Github sama sa gipakita gamit ang wget command.
$ wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz
Kuhaa ang compressed file.
$ tar xvf v3.3.0.tar.gz
Siguruha nga ibalhin ang wala ma-compress nga direktoryo sa /etc/nginx/modsec/ path.
$ sudo mv coreruleset-3.3.0/ /etc/nginx/modsec/
Unya ilisan ang ngalan sa crs-setup.conf.example file ngadto sa crs-setup.conf.
$ sudo mv /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf
Pag-usab, balik sa ModSecurity configuration file.
$ sudo vim /etc/nginx/modsec/main.conf
Ug idugang ang mosunod nga mga linya.
Include /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf Include /etc/nginx/modsec/coreruleset-3.3.0/rules/*.conf
Ang file kinahanglan nga adunay 3 ka linya:
I-save ang file ug, sa makausa pa, i-restart ang Nginx.
$ sudo systemctl restart nginx
Lakang 8: Pagsulay sa ModSecurity
Sa katapusan, Maghimo kami usa ka pagsulay nga ModSecurity ug kumpirmahon nga kini makamatikod ug makapugong sa kadudahang trapiko sa HTTP.
Atong usbon ang ModSecurity configuration file ug maghimo ug blocking rule nga mobabag sa access sa usa ka URL kung ma-access sa web browser.
$ sudo vim /etc/nginx/modsec/modsecurity.conf
Idugang kini nga linya ubos lang sa SecRuleEngine On direktiba
SecRule ARGS:testparam "@contains test" "id:254,deny,status:403,msg:'Test Successful'"
Mahimo nimong itakda ang mga tag nga 'id' ug 'msg' sa imong gusto nga mga kantidad.
I-save ang mga pagbag-o ug i-restart ang Nginx.
$ sudo systemctl restart nginx
Karon ilunsad ang imong browser ug bisitaha ang URL sa ubos gamit ang ?testparam=test
suffix
http://server-ip/?testparam=test
Kinahanglan nga makakuha ka usa ka 403 nga 'Gidili' nga sayup. Kini nagpakita nga ikaw naningkamot sa pag-access sa usa ka gidili nga kapanguhaan sa webserver.
Dugang pa, mahimo nimong susihon ang mga log sa sayup sa Nginx aron makumpirma nga gibabagan ang kliyente
$ cat /var/log/nginx/error.log | grep "Test Successful"
[ Tingali ganahan ka usab: Giunsa ang Pag-set Up sa ModSecurity sa Apache sa Debian/Ubuntu]
Kana usa ka kinatibuk-an nga pagtan-aw kung giunsa nimo ma-set up ang Modsecurity sa Nginx sa Debian ug Ubuntu. Kami nanghinaut nga kini nakabenepisyo.