Re: DOS prevention

"J. Wade Michaelis" <[email protected]>
Newsgroups gmane.user-groups.linux.kansascity
Message-ID <CAKcSjihzTWjAe7pD7q2t6jseB6GSeUiLADiaqkbXprLOOdtN=A@mail.gmail.com>
I really think that I want to go with a simple set of IPTABLES rules, and
here is why:

The only two occasions that the server has hung up were due to DOS attacks
averaging around 8 or 10 requests per second for a minute or more.  Also,
hosting this server is not profitable enough to do a lot of work installing
additional packages and configuring and testing them, or subscribing to
additional third-party services.

It appears that limiting the number of connections accepted from a single
IP in 10 seconds (or similar) could have prevented the two attacks I have
seen from bring down the server.

So, that brings me to the following questions:

I found this pair of rules at
http://blog.bodhizazen.net/linux/prevent-dos-with-iptables/comment-page-1/#comment-4524
iptables -v -A INPUT -i eth0 -p tcp –syn –match multiport –dports 80 -m
recent –rcheck –seconds 5 –hitcount 10 –name HTTP -j LOG –log-prefix “HTTP
Rate Limit: ”
iptables -v -A INPUT -i eth0 -p tcp –syn –dport 80 -m recent –update
–seconds 5 –hitcount 10 –name HTTP -j DROP

Do I need any other rules, or can I use just these two (given that the
server is already behind a hardware firewall)?  Will they work as is, or
will I need to adjust them?  Do I need additional rules for HTTPS traffic,
or can I change "-dports 80" to "-dports 80,443" to achieve that?

Any other advice?

Thanks for all of the suggestions!

~ j.
[email protected]


On Mon, Mar 18, 2013 at 4:33 PM, Nathan Cerny <[email protected]> wrote:

> Obviously you want to address the attacks, but you could also look into a
> more efficient web server.
>
> Apache is great for the feature-list, but I've had much better performance
> using nginx.
> Granted, my experience is much smaller scale - 5-10 users on a highly
> intensive website.
>
> http://en.wikipedia.org/wiki/Nginx
>
>
> On Mon, Mar 18, 2013 at 4:22 PM, Billy Crook <[email protected]> wrote:
>
>> It's easy to /say/ that any modern server should be able to handle a
>> few thousand GET requests.
>>
>> The reality is that a single URI may affect dozens of scripts that you
>> didn't write, which might hit some database as many times, and you
>> can't change them for business or political reasons; even if you are
>> entirely qualified to fix bugs and do performance tuning.
>>
>> When an aggressor, or just some well-intentioned runaway script harps
>> on one of these URIs, your options as an admin are limited.
>>
>> You can throw more hardware at it, put (and maintain) some caching
>> proxy infront of it; or you can throttle the aggressor   Fail2ban will
>> help you do the latter, and much more.  For instance, it becomes
>> realistic to run ssh on its official port (gasp!) if you use fail2ban
>> to cut down on riff raff.
>>
>> As fail2ban starts blocking the sources of the floods, look over the
>> list of addresses, and see if you can identify a business partner.  If
>> you can get them to fix their script, all the better.
>>
>> On Mon, Mar 18, 2013 at 3:45 PM, J. Wade Michaelis
>> <[email protected]> wrote:
>> > On Mon, Mar 18, 2013 at 2:58 PM, Mark Hutchings <
>> [email protected]>
>> > wrote:
>> >>
>> >> You sure it was just a http attack?   Several hundred requests in a few
>> >> minutes shouldnt really put it on it's knees, unless the server is a
>> VPS
>> >> with low memory/CPU usage limits, or the server itself is low on
>> resources.
>> >
>> >
>> > I've gone over my access logs again, and here are the particulars on
>> the two
>> > attacks that caused the server to hang:
>> >
>> > On March 6th, between 4:29:11 and 4:31:40, there were 1453 requests
>> from a
>> > single IP, and all were 'GET' requests for a single page (one that does
>> > exist).
>> >
>> > On March 14th, between 15:15:19 and 15:16:29, there were 575 requests
>> from
>> > the one IP address.  These were all different GET requests, nearly all
>> > resulting in 404 errors.  Some appear to be WordPress URLs.  (The
>> website on
>> > my server is a Magento commerce site.)
>> >
>> > Here are some other example requests from the attack:
>> >
>> > GET /?_SERVER[DOCUMENT_ROOT]=http://google.com/humans.txt? HTTP/1.1
>> > GET /?npage=1&content_dir=http://google.com/humans.txt%00&cmd=lsHTTP/1.1
>> > GET
>> > /A-Blog/navigation/links.php?navigation_start=
>> http://google.com/humans.txt?
>> > HTTP/1.1
>> > GET
>> > /Administration/Includes/deleteUser.php?path_prefix=
>> http://google.com/humans.txt
>> > HTTP/1.1
>> > GET
>> > /BetaBlockModules//Module/Module.php?path_prefix=
>> http://google.com/humans.txt
>> > HTTP/1.1
>> > GET /admin/header.php?loc=http://google.com/humans.txt HTTP/1.1
>> >
>> > I don't recognize most of these, but the pattern indicates to me that
>> these
>> > are most likely 'standard' URLs in various CMSs.
>> >
>> > As for the server configuration, it is a dedicated server (only one
>> website)
>> > running on VMware ESXi 5.0.
>> >
>> > CentOS 6.3
>> > 8 virtual CPU cores (2 quad-core CPUs)
>> > 4096 MB memory
>> >
>> > Other VMs on the same host appeared to be unaffected by the attack.
>> >
>> > Thanks,
>> > ~ j.
>> > [email protected]
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > KCLUG mailing list
>> > [email protected]
>> > http://kclug.org/mailman/listinfo/kclug
>> _______________________________________________
>> KCLUG mailing list
>> [email protected]
>> http://kclug.org/mailman/listinfo/kclug
>>
>
>
>
> --
> Nathan Cerny
>
>
> -------------------------------------------------------------------------------
> "I have always wished that my computer would be as easy to use as my
> telephone. My wish has come true. I no longer know how to use my telephone."
> --Bjarne Stroustrup, Danish computer scientist
>
> -------------------------------------------------------------------------------
>

_______________________________________________
KCLUG mailing list
[email protected]
http://kclug.org/mailman/listinfo/kclug
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.