Re: [users@httpd] need help fighting DoS attack on Apache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This has nothing to do with the server's ability to serve the content.
Heck, I can even reproduce the effect myself. If I simply run "telnet
localhost 80" from the server, a line like:
2-2	14313	0/3/52	R 	0.02	4	3	0.0	0.01	0.09 	?	?	..reading..

is added to Apache Status, and stays there until it either times out
(error 408!) or I close it. Clearly, apache doesn't even try to
determine the IP that the connection is originating from until an
actual request is made. It stands to reason that the origin IP isn't
being passed to modules like mod_choke, so they can't block the
connections.

This means that I could easily DoS myself by running the "telnet
localhost 80" command MaxClients times, leaving each one open until it
times out several minutes later, and re-running.

This is very wrong. I can't figure out why Apache doesn't have any
defense against such an obvious attack -- even the connection limiting
modules can't help because they have no way of knowing that all the
requests are coming from the same IP.

On 5/28/06, Graham Frank <gfrank@xxxxxxxxxxxxxx> wrote:
Error 408 means request timeout.  Make sure your server isn't having an
issue serving the content.

If you can verify that it is an attack, then read the following; otherwise,
skip it.

While I will leave the Apache modding suggestions to the people here who are
sure to do so ... let me give you the iptables command to get rid of this
issue (assuming you use linux).

iptables -A INPUT -s 87.10.176.44 -j DROP
iptables -A OUTPUT -s 87.10.176.44 -j DROP

Look into getting a firewall so that you can easily defend against other
types of DOS attacks.

As for why it doesn't list the IP is exactly because of what server-status
says: It's still reading the request, and that includes the IP.

--Graham Frank

-----Original Message-----
From: Sergey Tsalkov [mailto:flightsimguy@xxxxxxxxx]
Sent: Sunday, May 28, 2006 12:50 PM
To: users@xxxxxxxxxxxxxxxx
Subject: [users@httpd] need help fighting DoS attack on Apache

Hey guys.. My Apache was hit with a DoS attack, where the attacker was
opening connections to the server and not sending any data. It quickly
reached the MaxClients limit and prevented any further connections to
the server.

The Server Status was filled with lines like this:
7-2     4039    0/8/8   R       0.01    3       25      0.0     0.01    0.01
?       ?       ..reading..

..and the apache log with lines like this:
87.10.176.44 - - [28/May/2006:17:26:24 +0000] "-" 408 - "-" "-"

For some reason, Apache isn't listing the IP of the connection in
Server Status until that connection actually makes a request. Anyone
know why?

Anyways, I tried mod_choke's functionality for limiting multiple
connections from the same IP. That didn't help.. I suspect mod_choke
doesn't activate until a request is received through the connection,
so this script can dodge it by opening connections, not requesting
anything, and keeping them open until they time out. mod_evasive was
similarly unhelpful.

I managed to stop the attack by setting IP bans at the firewall, but
that doesn't actually solve the core problem.

Anyone have any suggestions?

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
   "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx



---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
   "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx



---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
  "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux