Så här konfigurerar du mod_evasive för Apache DDoS -skydd

0
142
Den Rise/Shutterstock.com < /figure>

mod_evasive är en Apache -modul som hjälper dig att försvara din server mot brutal kraft och förnekelse av serviceattacker. Genom att ställa in mod_evasive får du ett skyddsnät för att fånga skadliga aktörer innan de kan börja försämra din servers prestanda.

Modulen har flera konfigurationsparametrar som låter dig definiera antalet samtidiga förfrågningar som en klient kan göra inom en viss tidsram. Ytterligare förfrågningar blockeras under en period efter att gränsen har överskridits.

Installation av mod_evasive

Installationsstegen varierar beroende på operativsystemets distribution och Apache-version. För den mest populära kombinationen av Apache 2.4 på ett Debian-baserat system, använd följande steg. Instruktioner för att bygga från källan finns också i projektets arkiv.

apt update apt install libapache2-mod-evasive

Installationer via apt aktiverar modulen automatiskt.

Du kan kontrollera detta med hjälp av apachectl -verktyget:

apachectl -M | grep evasive

Du bör se modulens namn om det är aktivt.

Configuring Blocking Settings

Konfigurationsfilen mod_evasive kan vanligtvis hittas på /etc/apache2/mods-enabled/evasive.conf. Den använder samma format som andra Apache -konfigurationsfiler. En fullständig referens finns i mod_evasive -dokumenten.

Här är ett exempel på en konfigurationsfil med flera anpassningar:

& lt; IfModule mod_evasive20.c & gt; DOSPageCount 5 DOSSiteCount 10 DOSPageInterval 1 DOSSiteInterval 2 DOSBlockingPeriod 300 DOSEmailNotify user@example.com & lt;/IfModule & gt; Annons

mod_evasive skiljer mellan förfrågningar om en sida och förfrågningar om en webbplats. Du kan ställa in dessa två blockeringsfaktorer oberoende av varandra. Det här exemplet blockerar klienter som begär samma URI fem gånger under ett sekundintervall. Ett block kommer dessutom att införas för klienter som begär mer än tio URI från en enda plats inom två sekunders intervall.

När någon av gränserna överskrids kommer klienten att blockeras från att göra ytterligare förfrågningar om en fem minuter (300 sekunder). mod_evasive skickar ett e -postmeddelande till user@example.com och meddelar att IP -adressen har blockerats.

mod_evasive stöder också att köra ett godtyckligt systemkommando när en gräns nås. Detta kan användas för att integrera verktyget med din egen applikation eller brandvägg så att du kan spela in ett block i din databas. Ställ in DOSSystemCommand-inställningen med %s för att markera den blockerade IP-adressen:

DOSSystemCommand /app/blacklisted_ip.php –ip = %s

Vitlista kända IP-adresser

mod_evasive stöder en vitlista över kända IP -adresser för att underlätta utveckling och testning. Utvecklare kan ibland skapa höga förfrågningsvolymer medan de arbetar på en server, vare sig det är avsiktligt eller på annat sätt.

Använd inställningen DOSWhiteList för att ange IP -adressintervall som ska ignoreras. Begränsningar tillämpas inte på någon av dessa adresser.

DOSWhiteList 127.0.0.1 DOSWhiteList 192.168.0.*

Hur fungerar det?

mod_evasive funktioner genom att behålla en hashtabell med IP -adresser och URI i en tillfällig svartlista. IP -adressen och URI har hash för att skapa en nyckel som kan användas för att kontrollera om klienten har begärt samma sida tidigare.

Annonsering

Ett block uppstår när en URI eller webbplats visas i IP -hashtabellen med högre frekvens än du har tillåtit. Detta resulterar i att en 403 -statuskod skickas tillbaka till klienten. Statusen är det enda svaret som klienten kommer att få, vilket minimerar de serverresurser som behövs för att hantera förfrågningar som anses vara falska eller skadliga.

När ett tak har nåtts måste klienten vänta på den angivna DOSBlockingPeriod innan den kan göra en annan lyckad begäran. Att försöka igen under väntetiden resulterar i ett ännu längre block. Andra IP -adresser fortsätter att tas upp som vanligt och ska inte uppstå störningar från försök att neka service.

Modulen kan orsaka prestationsstraff på mycket aktiva servrar. Den måste registrera varje begäran och kontrollera om IP: n har blockerats eller om den behöver blockeras. Upptagen servrar med tillräckligt med minne bör öka DOSHashTableSize-inställningen för att möjliggöra ett större hashtabell i minnet. Detta förkortar den tid som krävs för att leta upp en inkommande IP mot sina andra senaste begäranden.

DOSHashTableSize 32768

Testa din installation

Det bästa sättet att testa mod_evasive är att starta en kort översvämning av förfrågningar för att kontrollera hur din server svarar. Med mod_evasive aktiverat korrekt bör du snabbt börja se 403 -talet och en e -postvarning om den är konfigurerad.

Verktyget ab -kommandoraden kan användas för att initiera anslutningar i massor:

ab – n 1000 -c 50 http: //…

Du bör justera parametrarna -n och -c så att de passar din mod_evasive -konfiguration och förväntade serverpåverkan:

  • -n – Det totala antalet förfrågningar att göra.
  • -c – Antalet samtidiga anslutningar som ska öppnas.

Annonsering

Exemplet ovan skickar 1 000 förfrågningar i grupper om 50.

ab är ett kraftfullt verktyg som kan starta en verklig denial of service -attack. Se till att du har angett rätt serveradress innan du skickar förfrågningarna!

Sammanfattning

mod_evasive är en enkel men effektiv modul för att förhindra brute force -attacker från att påverka serverns funktion. Du kan konfigurera begränsningar per sida och per webbplats som gäller för varje klient som försöker ansluta. Om klienten överskrider gränsen får de en 403 och måste medge en tillfällig blockeringsperiod.

Som administratör kan du välja att få e-postvarningar när ett nytt block åläggs. Detta håller dig informerad om potentiella attacker och låter dig övervaka efter falska positiva. Du behöver en fungerande e -poststack på servern – mod_evasive skickar med systemöverföringsagenten.

Slutligen är det möjligt att integrera mod_evasive med andra delar av din applikation genom att köra ett systemkommando när en IP -lista svartlistas. Den här funktionen kan användas för att flagga en databasanvändare, skapa en varning i ett övervakningsverktyg från tredje part eller vidarebefordra blocket till dina andra servrar för att skydda ytterligare delar av din infrastruktur.