6 technische maatregelen tegen (D)DoS aanvallen

Denial of Serice aanvallen zijn frustrerend ze kunnen druk bezochte website onbereikbaar maken.
Zo moest ook zelfs Rabobank er het afgelopen jaar aan geloven. (bron)
En het afgelopen jaar is een DDoS aanval een soort vorm van digitaal protest geworden. In het verleden deden we vooral denial of service ontmoedigd door er flinke straffen erop te zetten.
Echter met een flinke toename van DDoS aanvallen is dit lastig te handhaven. Het vraagt om meer technische maatregelen.
Helaas is dat niet altijd mogelijk maar er zijn wel degelijk een aantal simpele technische maatregelen die een denial of service aanval op een webserver kunnen verminderen of tegengaan.
Dit zijn geen professionele oplossingen met hardware, maar voor een niet druk bezochte website op een thuisservertje werken deze maatregelen voldoende.

  1. Zet TCP SYN cookies aan.
    TCP syn cookies verkomen SYN flood aanvallen (OSI model, laag 4 DoS aanvallen)
  2. Limiteer het aantal connectie per IP adres naar je webserver.
    Onder linux system kan dit eenvoudig worden bereikt door de volgende regel aan iptables toe te voegen. 

    sudo iptables -A INPUT -p tcp --syn --dport 80 -d ! 192.168.0.0/24 -m connlimit --connlimit-above 41 -j DROP
    sudo iptables -A INPUT -p tcp --syn --dport 80 -d ! 192.168.0.0/24 -m connlimit --connlimit-above 40 -j REJECT --reject-with tcp-reset
    

    Hierbij zijn de ip adressen: 192.168.0.1 tot 192.168.0.255 een uitgezonderd van dit limiet. Dit is nodig om beveiligings scanners zoals de scanner hier besproken nog snel te kunnen laten werken.
    Echter heeft deze regel ook nadelen wanneer veel mensen hetzelfde ip adres delen door bijvoorbeeld via dezelfde proxy naar de webserver te surfen kunnen ze je website mogelijk niet goed bereiken door te weinig toegestane connecties. Verhoog de maximaal 40 simultane connecties per ip adres eventueel als dit probleem zich voordoet.

  3. Installeer mod_evasive op apache.
    De evasive module voor apache beschermt tegen snel refreshen van dezelfde pagina in weinig tijd en ook tegen het maken van zeer snel veel nieuwe connecties naar de webserver vanuit hetzelfde ip adres. Maar dat filteren we ook al met onze firewall regel bij tip1.
    Wanneer iemand je webpagina vaak in weinig tijd meerderen keer herlaadt zorgt mod_evasive ervoor dat een lege pagina verstuurt wordt zodat deze vorm van denial of service wordt tegen gegaan.

  4. Zet hostname lookups uit. Wanneer de webserver veel requests van verschillende ip adressen krijgt kan het voor elke ip adres een reverse hostname lookup gaan doen. Het gevolg is dat je webserver een DoS aanval naar de ingesteld DNS Server uitvoert. Dit staat bekent als ‘backchatter’ aanval.
    Je kunt dit voorkomen in apache door: HostNameLookups op off te zetten.
    Let er verder op dat je niet deny from en allow from met dns namen gebruikt anders doet apache nog steeds een hostname lookup ookal staat de instelling op off. 

  5. Installeer een web applicatie firewall (WAF) zoals mod_security.
    Mod_security kan ook beschermen tegen denial of sevice aanvallen door bepaalde request te blokkeren en eventueel ingestelde HTTP error tonen of opgebouwde connectie meteen te sluiten. (FIN pakket te versturen) 

  6. Sta requests van een ongeldige/niet op het internet uitgegeven ip adressen niet toe.
    Niet alle ip adressen op het internet worden gebruikt en sommige mogen niet op het internet gebruikt worden.
    Blokkeer deze adressen met je firewall voordat iemand met deze adressen gespoofd1 je webserver aanvalt. zie deze wiki.