собственно, сама защита от DOS сильно зависит от самого объекта атаки.
если на вас идет распределенный дос (DDOS), помочь может, а точнее должен, только провайдер - потуги "получателя" бессмыслены. причем, блокировать желательно автоматически. жаль, что у многих провайдеров защита заключается в блокировании вашего IP адреса у top-провайдеров, через которых идет DDOS
если же это web-сайт, от отказа сервиса и для увеличения кол-ва одновлеменно подключенных клиентов вполне может помочь proxy-акселератор с ограничениями по подключениям и одного/всех IP адресов + кеширование контента в памяти.
nginx, squid, oops, mod_proxy - с этим вполне справляются.
не лишним будет тюнинг файрвола - анализ и ограничение количества подключений, кол-во подключений за интервал времени, объем трафика. при превышении - блокировка на уровне файрвола.