Pentru cei dintre voi care lucrează în domeniul găzduirii sau dacă vă găzduiți propriile servere și le expuneți la internet, securizarea sistemelor împotriva atacatorilor trebuie să fie o prioritate ridicată.
mod_security (motor open-source de detectare și prevenire a intruziunilor pentru aplicații web care se integrează perfect cu serverul web) și mod_evaziv sunt două instrumente foarte importante care pot fi utilizate pentru a proteja un server web împotriva forței brute sau a atacurilor (D) DoS.
mod_evaziv, așa cum sugerează și numele său, oferă capacități evazive în timp ce sunt atacate, acționând ca o umbrelă care protejează serverele web de astfel de amenințări.
În acest articol, vom discuta despre cum să le instalăm, să le configurăm și să le punem în joc împreună cu Apache RHEL/CentOS 8 și 7 precum și Fedora. În plus, vom simula atacuri pentru a verifica dacă serverul reacționează corespunzător.
Aceasta presupune că aveți un server LAMP instalat pe sistemul dvs. Dacă nu, vă rugăm să verificați acest articol înainte de a continua.
De asemenea, va trebui să vă configurați iptables ca front-end firewall implicit în loc de firewalld dacă alergi RHEL / CentOS 8/7 sau Fedora. Facem acest lucru pentru a utiliza același instrument în ambele RHEL/CentOS 8/7 și Fedora.
Pentru a începe, opriți și dezactivați firewalld:
# systemctl stop firewalld. # systemctl dezactivează firewalld.
Apoi instalați fișierul iptables-servicii înainte de activare iptables:
# yum update && yum install iptables-services. # systemctl activează iptables. # systemctl pornește iptables. # systemctl status iptables.
Pe lângă faptul că aveți deja instalată o LAMP, va trebui să o faceți activați depozitul EPEL în RHEL/CentOS 8/7 pentru a instala ambele pachete. Utilizatorii Fedora nu trebuie să activeze nicio repo, deoarece epel face deja parte din Proiectul Fedora.
# 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.
Când instalarea este finalizată, veți găsi fișierele de configurare pentru ambele instrumente în /etc/httpd/conf.d.
# ls -l /etc/httpd/conf.d.
Acum, pentru a integra aceste două module cu Apache și puneți-le să le încarce când începe, asigurați-vă că următoarele linii apar în secțiunea de nivel superior a mod_evasive.conf și mod_security.conf, respectiv:
LoadModule evasive20_module modules / mod_evasive24.so. LoadModule security2_module modules / mod_security2.so.
Rețineți că modules / mod_security2.so și modules / mod_evasive24.so sunt căile relative, de la /etc/httpd director la fișierul sursă al modulului. Puteți verifica acest lucru (și îl puteți schimba, dacă este necesar) listând conținutul fișierului /etc/httpd/modules director:
# cd / etc / httpd / modules. # pwd. # ls -l | grep -Ei '(evaziv | securitate)'
Apoi reporniți Apache și verificați dacă se încarcă mod_evaziv și mod_security:
# systemctl reporniți httpd
Renunțați la o listă de module statice și partajate încărcate.
# httpd -M | grep -Ei '(evaziv | securitate)'
În câteva cuvinte, a Set de reguli de bază (aka CRS) furnizează serverului web instrucțiuni despre cum să te comporti în anumite condiții. Firma de dezvoltatori a mod_security oferă o gratuitate CRS numit OWASP (Deschideți proiectul de securitate a aplicațiilor web) ModSecurity CRS care poate fi descărcat și instalat după cum urmează.
1. Descărcați fișierul OWASP CRS într-un director creat în acest scop.
# 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 stăpâne.
2. Desfaceți CRS fișierul și schimbați numele directorului pentru una dintre comoditățile noastre.
# tar xzf master. # mv owasp-modsecurity-crs-3.2.0 owasp-modsecurity-crs.
3. Acum este timpul să configurați mod_security. Copiați fișierul eșantion cu reguli (owasp-modsecurity-crs / modsecurity_crs_10_setup.conf.example) într-un alt fișier fără .exemplu extensie:
# cd owasp-modsecurity-crs / # cp crs-setup.conf.example crs-setup.conf.
si spune Apache să utilizați acest fișier împreună cu modulul prin inserarea următoarelor linii în fișierul principal de configurare al serverului web /etc/httpd/conf/httpd.conf fişier. Dacă ați ales să despachetați tarball-ul într-un alt director, va trebui să editați căile urmând directivele Includeți:
Includeți crs-tecmint / owasp-modsecurity-crs / crs-setup.conf Includeți crs-tecmint / owasp-modsecurity-crs / rules / *. Conf.
În cele din urmă, este recomandat să creăm propriul nostru fișier de configurare în /etc/httpd/modsecurity.d director în care vom plasa directivele noastre personalizate (îl vom denumi tecmint.conf în exemplul următor) în loc să modificați CRS direct fișiere. Acest lucru va permite o actualizare mai ușoară a CRS-urilor pe măsură ce sunt lansate noi versiuni.
SecRuleEngine On SecRequestBodyAccess On SecResponseBodyAccess On SecResponseBodyMimeType text / text simplu / html text / xml application / octet-stream SecDataDir / tmp.
Puteți face referire la ModSecurity GitHub al SpiderLabs depozit pentru un ghid explicativ complet al mod_security directive de configurare.
mod_evaziv este configurat folosind directive în /etc/httpd/conf.d/mod_evasive.conf. Deoarece nu există reguli de actualizat în timpul actualizării pachetului, nu avem nevoie de un fișier separat pentru a adăuga directive personalizate, spre deosebire de mod_security.
Implicit mod_evasive.conf fișierul are următoarele directive activate (rețineți că acest fișier este foarte comentat, așa că am eliminat comentariile pentru a evidenția directivele de configurare de mai jos):
DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10.
Explicația directivelor:
Simțiți-vă liber să experimentați aceste valori, astfel încât serverul dvs. web să poată gestiona cantitatea și tipul de trafic necesare.
Doar o avertisment mic: dacă aceste valori nu sunt setate corect, riscați să ajungeți să blocați vizitatorii legitimi.
Poate doriți să luați în considerare și alte directive utile:
Dacă aveți un server de poștă electronică în funcțiune, puteți trimite mesaje de avertizare prin Apache. Rețineți că va trebui să acordați utilizatorului apache SELinux permisiunea de a trimite e-mailuri dacă SELinux este setat să aplice. Puteți face acest lucru alergând
# setsebool -P httpd_can_sendmail 1.
Apoi, adăugați această directivă în mod_evasive.conf înregistrați cu restul celorlalte directive:
DOSEmailNotificați [e-mail protejat]
Dacă această valoare este setată și serverul dvs. de e-mail funcționează corect, un e-mail va fi trimis la adresa specificată ori de câte ori o adresă IP devine pe lista neagră.
Aceasta are nevoie de o comandă de sistem validă ca argument,
Comandă DOSSystem
Această directivă specifică o comandă care trebuie executată ori de câte ori o adresă IP devine pe lista neagră. Este adesea utilizat împreună cu un script shell care adaugă o regulă firewall pentru a bloca conexiunile suplimentare care vin de la adresa IP respectivă.
Când o adresă IP devine pe lista neagră, trebuie să blocăm conexiunile viitoare care vin de la ea. Vom folosi următorul script shell care efectuează această lucrare. Creați un director numit script-tecmint (sau orice nume la alegere) în /usr/local/bin și un fișier numit ban_ip.sh în acel director.
#! / bin / sh. # IP care va fi blocat, așa cum este detectat de mod_evasive. IP = 1 USD. # Calea completă către iptables. IPTABLES = "/ sbin / iptables" # director de blocare mod_evasiv. MOD_EVASIVE_LOGDIR = / var / log / mod_evasive. # Adăugați următoarea regulă firewall (blocați tot traficul provenit de la $ IP) $ IPTABLES -I INPUT -s $ IP -j DROP. # Eliminați fișierul de blocare pentru verificări viitoare. rm -f "$ MOD_EVASIVE_LOGDIR" / dos - "$ IP"
Al nostru Comandă DOSSystem directiva ar trebui să citească după cum urmează:
DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh% s"
În linia de mai sus, % s reprezintă adresa IP ofensată așa cum a fost detectată de mod_evaziv.
Rețineți că toate acestea nu vor funcționa decât dacă acordați permisiunile utilizatorului apache pentru a rula scriptul nostru (și numai acel script!) fără terminal și parolă. Ca de obicei, puteți doar să tastați visudo ca root pentru a accesa fișierul /etc/sudoers fișier și apoi adăugați următoarele 2 linii, așa cum se arată în imaginea de mai jos:
apache ALL = NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh. Valori implicite: apache! Requiretty.
IMPORTANT: Ca politică de securitate implicită, puteți rula numai sudo într-un terminal. Deoarece în acest caz, trebuie să folosim sudo fără tty, trebuie să comentăm linia care este evidențiată în următoarea imagine:
#Defaults obligatorii.
În cele din urmă, reporniți serverul web:
# systemctl reporniți httpd.
Există mai multe instrumente pe care le puteți utiliza pentru a simula un atac extern pe serverul dvs. Poți doar să cauți google pentru „instrumente pentru simularea atacurilor ddos”Pentru a găsi mai mulți dintre ei.
Rețineți că dvs., și numai dvs., veți fi responsabili pentru rezultatele simulării dvs. Nici măcar nu vă gândiți să lansați un atac simulat pe un server pe care nu îl găzduiți în propria rețea.
Dacă doriți să faceți același lucru cu un VPS găzduit de altcineva, trebuie să vă avertizați în mod corespunzător furnizorul de găzduire sau să cereți permisiunea ca o astfel de inundație de trafic să treacă prin rețelele lor. Tecmint.com nu este, în niciun caz, responsabil pentru faptele tale!
În plus, lansarea unui atac DoS simulat de la o singură gazdă nu reprezintă un atac din viața reală. Pentru a simula astfel, ar trebui să vă vizați serverul de la mai mulți clienți în același timp.
Mediul nostru de testare este compus dintr-un CentOS 7 Server [IP 192.168.0.17] și o gazdă Windows de la care vom lansa atacul [IP 192.168.0.103]:
Vă rugăm să redați videoclipul de mai jos și să urmați pașii indicați în ordinea indicată pentru a simula un atac DoS simplu:
Apoi IP-ul ofensator este blocat de iptables:
Cu mod_security și mod_evaziv activat, atacul simulat provoacă CPU și RAM să experimentați cu un vârf de utilizare temporară doar câteva secunde înainte ca adresele IP sursă să fie listate pe lista neagră și blocate de firewall. Fără aceste instrumente, simularea va doborî cu siguranță serverul foarte repede și îl va face inutilizabil pe durata atacului.
Ne-ar plăcea să aflăm dacă intenționați să utilizați (sau ați folosit în trecut) aceste instrumente. Așteptăm întotdeauna cu nerăbdare să auzim de la dvs., așa că nu ezitați să lăsați comentariile și întrebările dvs., dacă există, folosind formularul de mai jos.
https://www.modsecurity.org/