Для защиты от такого рода атак можно использовать как внешние средства (промежуточная машина, которая занимается фильтрацией входящего траффика), так и внутренние. Если ddos 'слабый' (читай 'небольшое количество участвующих в ddos клиентов') можно защититься ограничением количества одновременно открытых соединений средствами iptables, или занесением особо активных подсеток в ban-лист плюс ручным отсеканием на площадке провайдера (если конечно у провайдера не стоит никакого оборудования для этого предназначенного). Полезные советы подробно описаны у FractalizeR-а или по этой ссылке. Если ddos 'приличный' (количество клиентов более 500-600), вычислительных способностей не хватит на обслуживание настоящих клиентов и ddos-еров. В этом случае лучше переложить задачу фильтрацию поступающих на сервер запросов на специальное оборудование. Есть специальные решения Cisco Guard (довольно дорогие), можно найти людей сдающих такое оборудование в аренду. В DNS меняется IP Вашего сервера на IP железяки, а в железяке настраивается Forward всех отфильтрованных пакетов на Ваш старый сервер. Обязательно весь входящий траффик (кромер IP железяки) Вашего провайдера зарубить. Второй вариант программно-аппаратный. Собирается промежуточная машина/кластер, на которую ставится быстрый Front-End httpd сервер и настраивается специальным образом Forward-proxy. С помощью этой связки фильтруется входящий траффик (и в этом случае DNS надо изменить как и для первого варианта) и весь отфильтрованный траффик пойдёт по заранее организованному GRE туннелю. И остаётся надеяться, что ddos дело накладное, и его оплата обычно стоит приличных денег. Ну а если Ваши недруги решили потратить всё своё состояние на Вас, тогда самый экономичный способ найти нового провайдера, у которого всё необходимое для фильтрации ddos уже есть на площадке.
Полезные ссылки:
- Понятный текст по работе botnet-ов
- Модуль для Apache mod_dosevasive
- Постоение frontend на nginx
- Анализатор таблицы iptables - psad
- DoS Detector