Kaitske Apache'i toore jõu või DDoS-rünnakute eest, kasutades Mod_Security ja Mod_evasive mooduleid


Neile teist, kes hostimise alal tegutsevad, või kui hostite oma servereid ja paljastate neid Internetile, peab teie süsteemide turvalisus ründajate eest olema esmatähtis.

mod_security (avatud lähtekoodiga sissetungimise tuvastamise ja ennetamise mootor veebirakendustele, mis integreerub sujuvalt veebiserveriga) ja mod_evasive on kaks väga olulist tööriista, mida saab kasutada veebiserveri kaitsmiseks toore jõu või (D) DoS-rünnakute vastu.

Mod_evasive , nagu nimigi ütleb, pakub rünnaku ajal põgenemisvõimalusi, toimides vihmavarjuna, mis kaitseb veebiservereid selliste ohtude eest.

Selles artiklis käsitleme, kuidas neid koos Apache'iga installida, konfigureerida ja mängu panna nii RHEL/CentOS 8 ja 7 kui ka Fedoras. Lisaks simuleerime rünnakuid, et kontrollida, kas server reageerib vastavalt.

See eeldab, et teie süsteemi on installitud LAMP-server. Kui ei, kontrollige enne jätkamist seda artiklit.

  • Kuidas LAMP-serverit CentOS 8-le installida
  • Kuidas paigaldada LAMP-i virn RHEL/CentOS 7-sse

Kui kasutate RHEL/CentOS 8/7 või Fedora, peate ka tulemüüri asemel vaikimisi tulemüüri eesseadeteks seadistama iptables. Teeme seda selleks, et kasutada sama tööriista nii RHEL/CentOS 8/7 kui ka Fedoras.

1. samm: installige rakenduse Iptables tulemüür RHEL/CentOS 8/7 ja Fedora

Alustamiseks peatage ja keelake tulemüür :

# systemctl stop firewalld
# systemctl disable firewalld

Seejärel installige pakett iptables-services enne iptables lubamist:

# yum update && yum install iptables-services
# systemctl enable iptables
# systemctl start iptables
# systemctl status iptables

2. samm: installige Mod_Security ja Mod_evasive

Lisaks sellele, et LAMP-i seadistus on juba paigas, peate mõlema paketi installimiseks lubama ka EPEL-i hoidla RHEL/CentOS 8/7-s. Fedora kasutajad ei pea repot lubama, kuna epel on juba osa Fedora projektist.

# yum update && yum install mod_security mod_evasive

--------------- CentOS/RHEL 8 --------------- 
# dnf install https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-1.el8.noarch.rpm
# dnf --enablerepo=raven-extras install mod_evasive

Kui installimine on lõpule jõudnud, leiate mõlema tööriista konfiguratsioonifailid saidilt /etc/httpd/conf.d .

# ls -l /etc/httpd/conf.d

Nüüd, et integreerida need kaks moodulit rakendusega Apache ja lasta see käivitamisel need laadida, veenduge, et saidi mod_evasive.conf ülataseme jaotises kuvatakse järgmised read ja mod_security.conf :

LoadModule evasive20_module modules/mod_evasive24.so
LoadModule security2_module modules/mod_security2.so

Pange tähele, et moodulid/mod_security2.so ja moodulid/mod_evasive24.so on suhtelised teed kataloogist /etc/httpd kuni algfailini mooduli. Seda saate kontrollida (ja vajadusel muuta) kataloogi /etc/httpd/modules sisu loetlemisega:

# cd /etc/httpd/modules
# pwd
# ls -l | grep -Ei '(evasive|security)'

Seejärel taaskäivitage Apache ja veenduge, et see laadiks mod_evasive ja mod_security :

# systemctl restart httpd 	

Koormatud staatiliste ja jagatud moodulite loendi kuvamine.

# httpd -M | grep -Ei '(evasive|security)'				

3. samm: põhireeglite komplekti installimine ja Mod_Security konfigureerimine

Mõne sõnaga annab põhireeglite komplekt (aka CRS ) veebiserverile juhised, kuidas teatud tingimustes käituda. mod_security arendusettevõte pakub tasuta CRS -i nimega OWASP (avatud veebirakenduste turbeprojekt) ModSecurity CRS, mille saab alla laadida ja installida järgmiselt.

1. Laadige OWASP CRS alla selleks loodud kataloogi.

# mkdir /etc/httpd/crs-tecmint
# cd /etc/httpd/crs-tecmint
# wget -c https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.2.0.tar.gz -O master

2. Tühjendage fail CRS ja muutke meie mugavuse huvides kataloogi nime.

# tar xzf master
# mv owasp-modsecurity-crs-3.2.0 owasp-modsecurity-crs

3. Nüüd on aeg seadistada mod_security. Kopeerige näidisfail reeglitega ( owasp-modsecurity-crs/modsecurity_crs_10_setup.conf.example ) teise faili ilma laiendiga .example :

# cd owasp-modsecurity-crs/
# cp crs-setup.conf.example crs-setup.conf

ja käskige Apache -il seda faili koos mooduliga kasutada, sisestades veebiserveri põhisesse konfiguratsioonifaili /etc/httpd/conf/httpd.conf järgmised read. Kui otsustasite paketi paki lahti pakkida mõnes teises kataloogis, peate redigeerima ridu, järgides direktiive Lisa:

<IfModule security2_module>
        Include crs-tecmint/owasp-modsecurity-crs/crs-setup.conf
        Include crs-tecmint/owasp-modsecurity-crs/rules/*.conf
</IfModule>

Lõpuks on soovitatav luua oma konfiguratsioonifail kataloogi /etc/httpd/modsecurity.d kuhu paigutame kohandatud direktiivid (nimetame selle nimeks tecmint.conf järgmises näites), selle asemel et muuta otse CRS -faile. See võimaldab arvutipõhiseid ettetellimissüsteeme hõlpsamini uuendada, kuna uued versioonid ilmuvad.

<IfModule mod_security2.c>
	SecRuleEngine On
	SecRequestBodyAccess On
	SecResponseBodyAccess On 
	SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream 
	SecDataDir /tmp
</IfModule>

Mod_security seadistamisdirektiivide täieliku selgitava juhendi leiate SpiderLabsi ModSecurity GitHubi hoidlast.

4. samm: Mod_Evasive'i seadistamine

mod_evasive on konfigureeritud jaotises /etc/httpd/conf.d/mod_evasive.conf olevate käskude abil. Kuna paketi värskendamise ajal pole reegleid, mida värskendada, ei pea me kohandatud käskude lisamiseks erinevalt failist mod_security eraldi faili.

Vaikimisi failil mod_evasive.conf on lubatud järgmised direktiivid (pange tähele, et seda faili on palju kommenteeritud, seega oleme kommentaarid eemaldanud, et allpool toodud konfiguratsioondirektiivid esile tuua):

<IfModule mod_evasive24.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>

Direktiivide selgitus:

  • DOSHashTableSize : see direktiiv määrab räsitabeli suuruse, mida kasutatakse tegevuse jälgimiseks IP-aadressi alusel. Selle arvu suurendamine võimaldab kiiremini otsida saite, mida klient on varem külastanud, kuid see võib mõjutada üldist jõudlust, kui see on liiga kõrge seatud.
  • DOSPageCount : konkreetse URI-ga (näiteks mis tahes Apache poolt pakutava failiga) identse päringu õiguspärane arv, mille külastaja saab teha DOSPageIntervali intervalli jooksul.
  • DOSSiteCount : sarnane teenusega DOSPageCount, kuid viitab sellele, kui palju üldiseid taotlusi saab kogu saidile DOSSiteIntervali intervalli jooksul teha.
  • DOSBlockingPeriod : kui külastaja ületab DOSSPageCount või DOSSiteCount seatud piiranguid, lisatakse tema allika IP-aadress DOSBlockingPeriodi jooksul musta nimekirja. DOSBlockingPeriodi ajal ilmnevad kõik sellelt IP-aadressilt pärinevad päringud 403 keelatud tõrge.

Katsetage julgelt nende väärtustega, et teie veebiserver saaks hakkama vajaliku liikluse hulga ja tüübiga.

Ainult väike hoiatus: kui neid väärtusi pole õigesti määratud, on oht, et lõpetate seaduslike külastajate blokeerimise.

Võite kaaluda ka muid kasulikke direktiive:

Kui teie meiliserver töötab ja töötab, saate hoiatussõnumeid Apache'i kaudu välja saata. Pange tähele, et kui SELinux on seatud jõustamisele, peate andma apache kasutajale SELinuxi loa meilide saatmiseks. Seda saate teha joostes

# setsebool -P httpd_can_sendmail 1

Järgmisena lisage see direktiiv faili mod_evasive.conf koos ülejäänud muude direktiividega:

DOSEmailNotify [email 

Kui see väärtus on määratud ja teie meiliserver töötab korralikult, saadetakse meilisõnum määratud aadressile alati, kui IP-aadress musta nimekirja satub.

See vajab argumendina kehtivat süsteemi käsku,

DOSSystemCommand </command>

See direktiiv määrab käsu, mis tuleb täita alati, kui IP-aadress muutub musta nimekirja. Seda kasutatakse sageli koos shelliskriptiga, mis lisab tulemüüri reegli, et blokeerida sellelt IP-aadressilt tulevad ühendused.

Kui IP-aadress muutub musta nimekirja, peame blokeerima sellest tulevased ühendused. Selle töö jaoks kasutame järgmist shelliskripti. Looge kataloogi /usr/local/bin kataloog nimega scripts-tecmint (või mis tahes teie valitud nimi) ja fail nimega ban_ip.sh selles kataloogis.

#!/bin/sh
# IP that will be blocked, as detected by mod_evasive
IP=$1
# Full path to iptables
IPTABLES="/sbin/iptables"
# mod_evasive lock directory
MOD_EVASIVE_LOGDIR=/var/log/mod_evasive
# Add the following firewall rule (block all traffic coming from $IP)
$IPTABLES -I INPUT -s $IP -j DROP
# Remove lock file for future checks
rm -f "$MOD_EVASIVE_LOGDIR"/dos-"$IP"

Meie DOSSystemCommand direktiiv peaks olema järgmine:

DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh %s"

Ülal oleval real tähistab % s rikkuvat IP-d, mille tuvastab mod_evasive .

Pange tähele, et see kõik lihtsalt ei toimi, kui te ei anna kasutajale apache õigusi meie skripti (ja ainult selle skripti!) Käitamiseks ilma terminali ja paroolita. Nagu tavaliselt, saate failile /etc/sudoers juurdepääsu saamiseks lihtsalt juurena sisestada visudo ja seejärel lisada järgmised 2 rida, nagu on näidatud alloleval pildil:

apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh
Defaults:apache !requiretty

TÄHTIS: Vaikimisi turbepoliitikana saate sudo käivitada ainult terminalis. Kuna sel juhul peame kasutama sudo ilma tty -ta, peame kommenteerima rida, mis on esile tõstetud järgmisel pildil:

#Defaults requiretty

Lõpuks taaskäivitage veebiserver:

# systemctl restart httpd

4. samm: Dache-rünnakute simuleerimine Apache'il

Serveri välise rünnaku simuleerimiseks võite kasutada mitmeid tööriistu. Mitme neist leidmiseks võite lihtsalt otsida Google'ilt\" tööriistu ddos-rünnakute simuleerimiseks ".

Pange tähele, et teie ja ainult teie vastutate oma simulatsiooni tulemuste eest. Ärge isegi mõelge simuleeritud rünnaku alustamisele serverile, mida te oma võrgus ei paku.

Kui soovite sama teha kellegi teise hostitud VPS-iga, peate oma hostiteenuse pakkujat asjakohaselt hoiatama või küsima luba selliseks liikluseuputuseks nende võrkude läbimiseks. linux-console.net ei vastuta mingil juhul teie tegude eest!

Lisaks ei tähenda simuleeritud DoS-rünnaku käivitamine ainult ühelt hostilt reaalse elu rünnakut. Sellise simuleerimiseks peaksite oma serveri sihtima korraga mitmest kliendist.

Meie testikeskkond koosneb CentOS 7 serverist [ IP 192.168.0.17 ] ja Windowsi hostist, kust käivitame rünnaku [IP 192.168.0.103 ]:

Esitage lihtsat DoS-rünnaku simuleerimiseks allolevat videot ja järgige näidatud järjekorras kirjeldatud samme:

Seejärel blokeerivad rikkuva IP iptables:

Järeldus

Kui funktsioonid mod_security ja mod_evasive on lubatud, põhjustab simuleeritud rünnak CPU ja RAM katse ajutise kasutuse tipuga vaid paar sekundit enne seda, kui lähte-IP-d tulemüür musta nimekirja lisavad ja blokeerivad. Ilma nende tööriistadeta lööb simulatsioon serveri kindlasti väga kiiresti alla ja muudab selle rünnaku ajal kasutuskõlbmatuks.

Tahaksime kuulda, kas kavatsete neid tööriistu kasutada (või olete varem kasutanud). Ootame teid alati huviga, seega ärge kartke oma kommentaare ja küsimusi, kui neid on, kasutada allolevat vormi kasutades.

Viited