Hoe mod_evasive te configureren voor Apache DDoS-bescherming

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

mod_evasive is een Apache-module die je server helpt beschermen tegen brute force en denial of service-aanvallen. Het instellen van mod_evasive geeft je een vangnet om kwaadwillende actoren te vangen voordat ze de prestaties van je server kunnen verminderen.

De module wordt geleverd met verschillende configuratieparameters waarmee u het aantal gelijktijdige verzoeken kunt definiëren die een klant in een bepaald tijdsbestek kan doen. Verdere verzoeken worden gedurende een periode geblokkeerd nadat de limiet is overschreden.

Mod_evasive installeren

Installatiestappen variëren afhankelijk van uw besturingssysteemdistributie en Apache-release. Gebruik de volgende stappen voor de meest populaire combinatie van Apache 2.4 op een op Debian gebaseerd systeem. Instructies voor het bouwen vanaf de broncode worden ook gegeven in de repository van het project.

apt update apt install libapache2-mod-evasive

Installaties via apt zullen de module automatisch inschakelen.

U kunt dit controleren met het hulpprogramma apachectl:

apachectl -M | grep evasive

U zou de naam van de module moeten zien verschijnen als deze actief is.

Blokkeerinstellingen configureren

Het configuratiebestand mod_evasive is meestal te vinden op /etc/apache2/mods-enabled/evasive.conf. Het gebruikt hetzelfde formaat als andere Apache-configuratiebestanden. Een volledige referentie is te vinden in de mod_evasive docs.

Hier is een voorbeeldconfiguratiebestand met verschillende aanpassingen:

<IfModule mod_evasive20.c> DOSpageCount 5 DOSSiteCount 10 DOSpageInterval 1 DOSSiteInterval 2 DOSBlockingPeriod 300 DOSEmailNotify user@example.com </IfModule> Advertentie

mod_evasive maakt onderscheid tussen verzoeken om een ​​pagina en verzoeken om een ​​site. U kunt deze twee blokkeringsfactoren onafhankelijk van elkaar instellen. In dit voorbeeld worden clients geblokkeerd die vijf keer om dezelfde URI verzoeken met een interval van één seconde. Bovendien wordt een blokkering opgelegd aan klanten die meer dan tien URI's van een enkele site aanvragen binnen een interval van twee seconden.

Als een van de limieten wordt overschreden, wordt de klant geblokkeerd om verdere verzoeken om een periode van vijf minuten (300 seconden). mod_evasive stuurt een e-mail naar gebruiker@example.com met de melding dat het IP-adres is geblokkeerd.

mod_evasive ondersteunt ook het uitvoeren van een willekeurig systeemcommando wanneer een limiet is bereikt. Hiermee kunt u de tool integreren met uw eigen applicatie of firewall, zodat u een blokkering in uw database kunt opnemen. Stel de DOSSystemCommand-instelling in, met %s om het geblokkeerde IP-adres aan te duiden:

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

Whitelisting bekende IP's

mod_evasive ondersteunt een witte lijst met bekende IP's om ontwikkeling en testen te vergemakkelijken. Ontwikkelaars kunnen soms hoge verzoekvolumes creëren terwijl ze op een server werken, al dan niet opzettelijk.

Gebruik de instelling DOSWhiteList om IP-adresbereiken op te geven die moeten worden genegeerd. Er worden geen limieten toegepast op deze adressen.

DOSWhiteList 127.0.0.1 DOSWhiteList 192.168.0.*

Hoe werkt het?

mod_evasive functioneert door een hash-tabel van IP-adressen en URI's in een tijdelijke zwarte lijst bij te houden. Het IP-adres en de URI worden gehasht om een ​​sleutel te maken die kan worden gebruikt om te controleren of de klant eerder dezelfde pagina heeft opgevraagd.

Advertentie

Een blokkering treedt op wanneer een URI of site met een grotere frequentie in de hashtabel van het IP verschijnt dan u hebt toegestaan. Dit resulteert in een 403-statuscode die wordt teruggestuurd naar de klant. De status is het enige antwoord dat de client ontvangt, waardoor de serverbronnen die nodig zijn om verzoeken te verwerken die als onecht of kwaadaardig worden beschouwd, tot een minimum worden beperkt.

Zodra een limiet is bereikt, moet de client wachten op de opgegeven DOSBlockingPeriod voordat deze opnieuw een succesvol verzoek kan indienen. Opnieuw proberen tijdens de wachttijd resulteert in een nog langere blokkering. Andere IP-adressen worden gewoon toegelaten en zouden geen onderbreking moeten ondervinden van de denial of service-poging.

De module kan een prestatieverlies veroorzaken op zeer actieve servers. Het moet elk verzoek registreren en controleren of het IP-adres is geblokkeerd of moet worden geblokkeerd. Bezette servers met voldoende geheugen zouden de DOSHashTableSize-instelling moeten verhogen om een ​​grotere hashtabel in het geheugen mogelijk te maken. Dit vermindert de tijd die nodig is om een ​​binnenkomend IP-adres op te zoeken met andere recente verzoeken.

DOSHashTableSize 32768

Uw installatie testen

De beste manier om mod_evasive te testen is om een ​​korte stroom van verzoeken te lanceren om te controleren hoe uw server reageert. Als mod_evasive correct is ingeschakeld, zou je snel 403's en een e-mailwaarschuwing moeten zien als het is geconfigureerd.

Het ab-opdrachtregelprogramma kan worden gebruikt om massaal verbindingen te starten:

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

U moet de parameters -n en -c aanpassen aan uw mod_evasive-configuratie en verwachte serverimpact:

  • -n – Het totale aantal verzoeken dat moet worden gedaan.
  • -c – Het aantal gelijktijdige verbindingen dat moet worden geopend.

Advertentie

In het bovenstaande voorbeeld worden 1.000 verzoeken verzonden in batches van 50.

ab is een krachtig hulpmiddel dat zou kunnen starten een echte denial of service-aanval. Zorg ervoor dat je het juiste serveradres hebt opgegeven voordat je de verzoeken verzendt!

Samenvatting

mod_evasive is een eenvoudige maar effectieve module om te voorkomen dat brute force-aanvallen de werking van uw server beïnvloeden. U kunt limieten per pagina en per site configureren die van toepassing zijn op elke client die verbinding probeert te maken. Als de klant de limiet overschrijdt, ontvangt hij een 403 en moet hij toegeven aan een tijdelijke blokkeringsperiode.

Als beheerder kun je ervoor kiezen om e-mailwaarschuwingen te ontvangen bij een nieuwe blokkering wordt opgelegd. Zo blijft u op de hoogte van mogelijke aanvallen en kunt u controleren op valse positieven. U hebt wel een werkende e-mailstack op de server nodig – mod_evasive verzendt met behulp van de systeemmailoverdrachtagent.

Ten slotte is het mogelijk om mod_evasive te integreren met andere delen van uw toepassing door een systeemopdracht uit te voeren wanneer een IP op de zwarte lijst staat. Deze mogelijkheid kan worden gebruikt om een ​​databasegebruiker te markeren, een waarschuwing te maken in een monitoringtool van derden of de blokkering door te geven aan uw andere servers om extra delen van uw infrastructuur te beschermen.