![Dette nettstedet gjør Donald Trumps tweets til dikter](/f/f4bc90c6366a7da59a33cbed975cbafe.png?width=100&height=100)
For deg som er i vertsbransjen, eller hvis du er vert for dine egne servere og utsetter dem for Internett, må sikring av systemene dine mot angripere ha høy prioritet.
mod_sikkerhet (åpen kildekode inntrengingsdeteksjon og forebyggingsmotor for webapplikasjoner som integreres sømløst med webserveren) og mod_evasive er to svært viktige verktøy som kan brukes til å beskytte en webserver mot brutal kraft eller (D) DoS -angrep.
mod_evasive, som navnet antyder, gir unnvikende evner under angrep, og fungerer som en paraply som beskytter webservere mot slike trusler.
I denne artikkelen vil vi diskutere hvordan du installerer, konfigurerer og setter dem i spill sammen med Apache RHEL/CentOS 8 og 7 i tillegg til Fedora. I tillegg vil vi simulere angrep for å bekrefte at serveren reagerer deretter.
Dette forutsetter at du har en LAMP -server installert på systemet ditt. Hvis ikke, vennligst sjekk denne artikkelen før du fortsetter.
Du må også sette opp iptables som standard brannmur-front-end i stedet for firewalld hvis du løper RHEL/CentOS 8/7 eller Fedora. Vi gjør dette for å bruke det samme verktøyet i begge RHEL/CentOS 8/7 og Fedora.
For å begynne, stopp og deaktiver firewalld:
# systemctl stopp firewalld. # systemctl deaktiver firewalld.
Installer deretter iptables-tjenester pakken før du aktiverer den iptables:
# yum update && yum install iptables-services. # systemctl aktiver iptables. # systemctl starter iptables. # systemctl status iptables.
I tillegg til å ha et LAMP -oppsett allerede på plass, må du også aktiver EPEL -depotet i RHEL/CentOS 8/7 for å installere begge pakkene. Fedora -brukere trenger ikke å aktivere noen repo, fordi epel allerede er en del av Fedora -prosjektet.
# 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 installer mod_evasive.
Når installasjonen er fullført, finner du konfigurasjonsfilene for begge verktøyene i /etc/httpd/conf.d.
# ls -l /etc/httpd/conf.d.
For å integrere disse to modulene med Apache og la den laste dem når den starter, må du kontrollere at følgende linjer vises i delen på øverste nivå av mod_evasive.conf og mod_security.conf, henholdsvis:
LoadModule evasive20_module modules/mod_evasive24.so. LoadModule security2_module modules/mod_security2.so.
Noter det modules/mod_security2.so og modules/mod_evasive24.so er de relative stiene, fra /etc/httpd katalogen til kildefilen til modulen. Du kan bekrefte dette (og endre det om nødvendig) ved å vise innholdet i /etc/httpd/modules katalog:
# cd/etc/httpd/modules. # pwd. # ls -l | grep -Ei '(unnvikende | sikkerhet)'
Start deretter Apache på nytt og bekreft at den lastes mod_evasive og mod_sikkerhet:
# systemctl start httpd på nytt
Dump en liste over lastede statiske og delte moduler.
# httpd -M | grep -Ei '(unnvikende | sikkerhet)'
Med noen få ord, a Kjerne -regelsett (alias CRS) gir webserveren instruksjoner om hvordan de skal oppføre seg under visse forhold. Utviklerfirmaet til mod_sikkerhet gir en gratis CRS kalt OWASP (Åpne Web Application Security Project) ModSecurity CRS som kan lastes ned og installeres som følger.
1. Last ned OWASP CRS til en katalog som er opprettet for dette formålet.
# 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 mester.
2. Opp til CRS filen og endre navnet på katalogen for en av våre bekvemmeligheter.
# tar xzf master. # mv owasp-modsecurity-crs-3.2.0 owasp-modsecurity-crs.
3. Nå er det på tide å konfigurere mod_security. Kopier prøvefilen med regler (owasp-modsecurity-crs/modsecurity_crs_10_setup.conf.example) til en annen fil uten .eksempel Utvidelse:
# cd owasp-modsecurity-crs/ # cp crs-setup.conf.example crs-setup.conf.
og fortelle Apache for å bruke denne filen sammen med modulen ved å sette inn følgende linjer i webserverens hovedkonfigurasjonsfil /etc/httpd/conf/httpd.conf fil. Hvis du valgte å pakke ut tarballen i en annen katalog, må du redigere banene etter inkluderingsdirektivene:
Inkluder crs-tecmint/owasp-modsecurity-crs/crs-setup.conf Inkluder crs-tecmint/owasp-modsecurity-crs/regler/*. Konf.
Til slutt anbefales det at vi lager vår egen konfigurasjonsfil i /etc/httpd/modsecurity.d katalogen der vi vil plassere våre tilpassede direktiver (vi vil nevne det tecmint.conf i følgende eksempel) i stedet for å endre CRS filer direkte. Hvis du gjør det, blir det enklere å oppgradere CRS -er når nye versjoner slippes.
SecRuleEngine På SecRequestBodyAccess På SecResponseBodyAccess På SecResponseBodyMimeType tekst/ren tekst/html tekst/xml applikasjon/octet-stream SecDataDir/tmp.
Du kan referere til SpiderLabs ’ModSecurity GitHub depot for en komplett forklarende guide til mod_sikkerhet konfigurasjonsdirektiver.
mod_evasive er konfigurert ved hjelp av direktiver i /etc/httpd/conf.d/mod_evasive.conf. Siden det ikke er noen regler for oppdatering under en pakkeoppgradering, trenger vi ikke en egen fil for å legge til tilpassede direktiver, i motsetning til mod_sikkerhet.
Standaren mod_evasive.conf filen har følgende direktiver aktivert (vær oppmerksom på at denne filen er tungt kommentert, så vi har fjernet kommentarene for å markere konfigurasjonsdirektivene nedenfor):
DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10.
Forklaring av direktivene:
Eksperimenter gjerne med disse verdiene, slik at webserveren din kan håndtere nødvendig mengde og type trafikk.
Bare et lite forbehold: Hvis disse verdiene ikke er riktig angitt, risikerer du å ende opp med å blokkere legitime besøkende.
Du kan også vurdere andre nyttige direktiver:
Hvis du har en e -postserver i gang, kan du sende ut varselmeldinger via Apache. Vær oppmerksom på at du må gi apache -brukeren SELinux tillatelse til å sende e -post hvis SELinux er satt til å håndheve. Du kan gjøre det ved å løpe
# setsebool -P httpd_can_sendmail 1.
Deretter legger du til dette direktivet i mod_evasive.conf fil med resten av de andre direktivene:
DOSEmailNotify [e -postbeskyttet]
Hvis denne verdien er angitt og e -postserveren din fungerer som den skal, sendes en e -post til adressen som er angitt hver gang en IP -adresse blir svartelistet.
Dette trenger en gyldig systemkommando som et argument,
DOSSystemCommand
Dette direktivet spesifiserer en kommando som skal utføres når en IP -adresse blir svartelistet. Det brukes ofte i forbindelse med et skallskript som legger til en brannmurregel for å blokkere ytterligere tilkoblinger som kommer fra den IP -adressen.
Når en IP -adresse blir svartelistet, må vi blokkere fremtidige tilkoblinger som kommer fra den. Vi vil bruke følgende skallskript som utfører denne jobben. Lag en katalog som heter scripts-tecmint (eller hvilket navn du ønsker) i /usr/local/bin og en fil som heter ban_ip.sh i den katalogen.
#!/bin/sh. # IP som vil bli blokkert, som oppdaget av mod_evasive. IP = $ 1. # Full vei til iptables. IPTABLES = "/sbin/iptables" # mod_evasive lock -katalog. MOD_EVASIVE_LOGDIR =/var/log/mod_evasive. # Legg til følgende brannmurregel (blokker all trafikk som kommer fra $ IP) $ IPTABLES -I INPUT -s $ IP -j DROP. # Fjern låsefilen for fremtidige kontroller. rm -f "$ MOD_EVASIVE_LOGDIR"/dos -"$ IP"
Våre DOSSystemCommand direktivet bør lyde som følger:
DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh %s"
I linjen ovenfor, %s representerer den krenkende IP som oppdaget av mod_evasive.
Vær oppmerksom på at alt dette bare ikke fungerer med mindre du gir tillatelser til brukeren apache for å kjøre skriptet vårt (og det skriptet bare!) uten terminal og passord. Som vanlig kan du bare skrive visudo som rot for å få tilgang til /etc/sudoers filen og legg deretter til de følgende 2 linjene som vist på bildet nedenfor:
apache ALL = NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh. Standardinnstillinger: apache!
VIKTIG: Som standard sikkerhetspolicy kan du bare kjøre sudo i en terminal. Siden i dette tilfellet må vi bruke sudo uten en tty, vi må kommentere linjen som er fremhevet i følgende bilde:
#Standardinnstillinger krever.
Til slutt starter du webserveren på nytt:
# systemctl start httpd på nytt.
Det er flere verktøy du kan bruke til å simulere et eksternt angrep på serveren din. Du kan bare google for "verktøy for å simulere ddos -angrep”For å finne flere av dem.
Vær oppmerksom på at du, og bare du, vil bli holdt ansvarlig for resultatene av simuleringen din. Ikke tenk på å starte et simulert angrep på en server du ikke er vert for i ditt eget nettverk.
Skulle du ønske å gjøre det samme med en VPS som er vert for noen andre, må du advare hostingleverandøren din på passende måte eller be om tillatelse til at en slik trafikkflom går gjennom nettverkene deres. Tecmint.com er på ingen måte ansvarlig for handlingene dine!
I tillegg representerer ikke å starte et simulert DoS-angrep fra bare en vert et angrep i virkeligheten. For å simulere slike må du målrette serveren din mot flere klienter samtidig.
Testmiljøet vårt består av et CentOS 7 server [IP 192.168.0.17] og en Windows -vert som vi vil starte angrepet fra [IP 192.168.0.103]:
Spill av videoen nedenfor og følg trinnene beskrevet i den angitte rekkefølgen for å simulere et enkelt DoS -angrep:
Deretter blokkeres den krenkende IP -en av iptables:
Med mod_sikkerhet og mod_evasive aktivert, forårsaker det simulerte angrepet prosessor og RAM å eksperimentere med en midlertidig brukstopp i bare et par sekunder før kilde -IP -ene blir svartelistet og blokkert av brannmuren. Uten disse verktøyene vil simuleringen sikkert slå serveren veldig raskt ned og gjøre den ubrukelig under angrepets varighet.
Vi vil gjerne høre om du planlegger å bruke (eller har brukt tidligere) disse verktøyene. Vi gleder oss alltid til å høre fra deg, så ikke nøl med å legge igjen kommentarer og spørsmål, hvis noen, ved å bruke skjemaet nedenfor.
https://www.modsecurity.org/