# DDoS Angriffe abwehren

Hier soll erklärt werden, wie DDoS (Distributed Denial of Service) Angriffe mit Linux Bordmitteln abgewehrt werden können. Je nach Angriff funktionieren diese Methoden allerdings nur schlecht oder gar nicht. In diesem Fall muss der Angriff soweit möglich auf vorgelagerter Hardware (Router) geblockt werden oder der Dienst hinter einen Anbieter wie CloudFlare umgezogen werden.

#### Wie erkenne ich einen DDoS?

Server hat hohe Load, Ping zeigt Packetloss, Login oder Arbeiten auf der Shell ist kaum möglich.

#### Abwehrmaßnahmen

<div id="bkmrk-"></div>##### Bei protocol-ddos TCP/UDP, Synflood

Syncookies auf den betroffenen Servern/Loadbalancern aktivieren:

<div id="bkmrk-echo-1-%3E-%2Fproc%2Fsys%2Fn">```
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
```

</div>#### Angreifer identifizieren

Hosts mit den meisten Verbindungen:

<div id="bkmrk-netstat--atun-%7C-awk-"><div>```
netstat -atun | awk '{print $5}' | cut -d: -f1 | sed -e '/^$/d' |sort | uniq -c | sort -n
```

</div></div>Anhand der Apache Zugriffslogs:

<div id="bkmrk-cat-access.log-%7C-awk">```
cat access.log | awk '{print $1}' | cut -d: -f1 | sed -e '/^$/d' |sort | uniq -c | sort -n | tail -n 20
```

</div>#### Angreifer blocken

Per IP:

<div id="bkmrk-iptables--i-input--s">```
iptables -I INPUT -s <angreifer-IP> -j DROP
```

</div>#### SYN-Pakete per iptables limitieren

<div id="bkmrk-%2Fsbin%2Fiptables--a-in">```
/sbin/iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 4 -j DROP
/sbin/iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 25 -j REJECT --reject-with tcp-reset
```

</div>