Hobbit DDOS Attack Detection (submission)
Charles Jones
jonescr at cisco.com
Fri Jan 25 21:59:08 CET 2008
I had a hobbit-monitored site become the victim of a DDOS syn-flood
attack. To help detect this in the futrue and also aid
information-gathering, I did the following, which I am sharing:
1. Made the following additions to hobbit-clients.cfg
# Detect more than 100 half-open connections (possible syn-flood attack)
PORT STATE=SYN_RECV MIN=0 MAX=100 COLOR=red TRACK="SYN"
# Detect more than 2000 established connections (possible simple DDOS
http get attack)
PORT STATE=ESTABLISHED MIN=0 MAX=2000 COLOR=red
2. Made a small modification to hobbit-linux.sh, specifically to the
[ports] section. I crammed it all into a single line.
echo "[ports]"
echo "SYN_REC Quick Stats:";SYNs=`netstat -pant 2>/dev/null | grep SYN
| awk -F: '{print $2;}' |awk {'print $2"\t"$1'}| sort | uniq -c |sort
-n`;if [ -n "$SYNs" ]; then echo " # Address Port";printf
"$SYNs\n";echo =============================;else echo "No SYNs
Found";echo =============================;fi
# Bug in RedHat's netstat spews annoying error messages.
netstat -ant 2>/dev/null
#1 allows Hobbit to detect and alert for 2 common DDOS attack signatures
(syn floods and plain old http overloading), as well as creating graphs
via the "track" feature.
#2 prefixes the netstat output you see in the "ports" column with a
table of IPs that have half-open connections. It shows the address, IP,
and what port they are "attacking". Here is an example (IPs and ports
masked of course):
SYN_REC Quick Stats:
# Address Port
1 289.122.3.20 80
1 213.102.135.60 80
1 200.120.152.6 8080
1 201.192.9.130 443
1 174.231.84.4 443
2 191.136.92.135 80
2 216.122.32.240 8080
=============================
The prefixing of this data in the client message has no effect on the
Hobbit server, as it is only looking for the netstat output in the ports
section, and so ignores that extra data (but still displays it). So if
the site gets a syn flood, you can check the ports column of your web
host(s) and easily see the offending IP(s) that are performing the
attack. Note that most "floodbots" are coded such that they spoof their
IP addresses, so the information you gather may not actually help you
determine who is attacking, but is still useful for temporarily
firewalling or whatever other steps you need to take to block it.
Note: this works on RHEL, so should work on RedHat/CentOS/Fedora. I
havn't checked to see if debian/ubuntu has the same netstat parameters I
used, so YMMV :)
-Charles
More information about the Xymon
mailing list