Kako nastaviti ModSecurity z Apache na Debian/Ubuntu


Spletni strežnik Apache je zelo prilagodljiv in ga je mogoče konfigurirati na več načinov, da ustreza vašim potrebam. Obstaja veliko modulov tretjih oseb, ki jih lahko uporabite za konfiguriranje Apacheja po svojih željah.

ModSecurity je odprtokodni požarni zid WAF (požarni zid spletnih aplikacij), ki je domač za spletni strežnik Apache. Sprva je bil samo modul Apache, vendar se je z letom povečal in postal polnopraven požarni zid spletne aplikacije. Zdaj ga podpirata Nginx in celo IIS.

ModSecurity pregleda dohodne zahteve spletnemu strežniku glede na vnaprej določen nabor pravil. Običajno zagotavlja nabor pravil, znanih kot CRS (Core Rule Set), ki ščitijo spletno mesto pred vrsto napadov spletnih aplikacij, kot so injekcija SQL, XSS in ugrabitev seje med drugimi izkoriščanji.

[ Morda vam bo všeč tudi: 5 orodij za skeniranje strežnika Linux za zlonamerno programsko opremo in rootkite ]

Požarni zid aplikacije ModSecurity je sestavni del skladnosti PCI DSS pri zaščiti spletnih mest pred zunanjimi napadi. Ko je modul omogočen, sproži 403 Forbidden Error, kar preprosto pomeni, da nimate dovolj dovoljenj za dostop do vira na spletnem strežniku.

V tem priročniku vam bomo pokazali, kako nastaviti in konfigurirati ModSecurity za delo z Apache v Debianu in Ubuntu Linuxu.

1. korak: Namestite ModSecurity v Ubuntu

Prvi korak je namestitev ModSecurity. Začeli bomo tako, da bomo najprej osvežili sezname paketov, kot sledi:

$ sudo apt update

Nato namestite paket ModSecurity poleg drugih odvisnosti in knjižnic.

$ sudo apt install libapache2-mod-security2

Nato omogočite modul.

$ sudo a2enmod security2

Nato znova zaženite spletni strežnik Apache, da uveljavite spremembe.

$ sudo systemctl restart apache2

Na tej točki je ModSecurity uspešno nameščen. Zdaj ga konfigurirajmo.

2. korak: Konfigurirajte ModSecurity v Ubuntuju

ModSecurity je privzeto konfiguriran samo za odkrivanje in beleženje sumljivih dejavnosti. Narediti moramo dodaten korak in ga konfigurirati tako, da ne samo zazna, ampak tudi blokira sumljivo dejavnost.

Kopirajte privzeto konfiguracijsko datoteko ModSecurity – modsecurity.conf-recommended – v novo datoteko, kot je navedeno v spodnjem ukazu.

$ sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Z želenim urejevalnikom besedil odprite datoteko

$ sudo nano /etc/modsecurity/modsecurity.conf

Poiščite vrstico:

SecRuleEngine DetectionOnly

Nastavi na:

SecRuleEngine On

Shranite spremembe in zaprite datoteko.

Če želite uporabiti spremembe v Apache, znova zaženite spletni strežnik.

$ sudo systemctl restart apache2

3. korak: Prenesite OWASP ModSecurity Core Ruleset

Naslednji korak je prenos najnovejšega OWASP ModSecurity Core Rule Set (CRS) s strani GitHub.

Klonirajte repozitorij OWASP git, kot je prikazano.

$ git clone https://github.com/coreruleset/coreruleset.git

Pomaknite se v imenik.

$ cd coreruleset/

Prepričajte se, da ste datoteko crs-setup.conf.example premaknili v imenik modsecurity in jo preimenovali v crs-setup.conf.

$ sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf

Poleg tega premaknite tudi imenik pravil v imenik modsecurity.

$ sudo mv rules/ /etc/modsecurity/

Nato uredite datoteko security2.conf.

$ sudo nano /etc/apache2/mods-enabled/security2.conf

Prepričajte se, da vsebuje naslednje vrstice.

IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf

Nato znova zaženite Apache, da se spremembe ohranijo.

$ sudo systemctl restart apache2

Zdaj pa preizkusimo našo konfiguracijo ModSecurity.

4. korak: Testiranje konfiguracije ModSecurity v Ubuntu

Nazadnje moramo preizkusiti, ali ModSecurity lahko zazna in blokira sumljiv promet HTTP. Da bi to dosegli, moramo urediti privzeto datoteko virtualnega gostitelja.

$ sudo nano /etc/apache2/sites-available/000-default.conf

Nato bomo ustvarili pravilo za blokiranje, ki bo blokiralo dostop do določenega URL-ja, ko do njega dostopa spletni brskalnik.

Te vrstice pripnite na koncu pred zaključno oznako 'Virtualhost'.

SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:254,deny,status:403,msg:'Test Successful'"

Oznaki id in msg lahko nastavite na želene vrednosti.

Nato znova zaženite spletni strežnik Apache, da uveljavite spremembe v konfiguracijski datoteki navideznega gostitelja.

$ sudo systemctl restart apache2

V spletnem brskalniku poskusite obiskati URL, ki je prikazan z ?testparam=test na koncu.

http://server-ip/?testparam=test

Dobite '403 Forbidden error', ki nakazuje, da vam je bil blokiran dostop do vira.

Dodatno lahko potrdite, da je bil odjemalec blokiran, tako da preverite dnevnike napak, kot sledi.

$ cat /var/log/apache2/error.log | grep “Test Successful”

[ Morda vam bo všeč tudi: Kako namestiti ModSecurity za Nginx na Debian/Ubuntu ]

To je potrditev, da smo uspešno nastavili ModSecurity za odkrivanje in blokiranje neželenega prometa. V tem priročniku smo vas popeljali skozi postopek nastavitve ModSecurity z Apache v sistemih Debian/Ubuntu.