В общем, решил собрать свои наработки и сравнить с тем, что делают ребята на практике. Сразу скажу, что универсального волшебного средства нет, но кое-какие вещи часто повторяются.
1. Простая проверка нагрузки через netstat и tcpdump — иногда хватает это, чтобы понять, что именно лезет и откуда.
2. Фильтрация на уровне iptables/файрвола — базовый минимум, который можно настроить самому, чтобы отсеивать очевидный мусор.
3. Использование внешних антиддос-сервисов — у меня пару раз выручали, но ставлю их как резерв, а не на 100%.
4. CDN с защитой от DDoS — если сайт не очень тяжелый, помогает разгрузить канал.
5. Настройка fail2ban — отсекает постоянные повторяющиеся подключения.
6. Логирование и мониторинг в реальном времени — иначе сложно понять, что вообще происходит.
7. Часто ловлю себя на том, что забываю закрыть неиспользуемые сервисы и порты — это дырка, которую часто не замечают.
8. Тестовые нагрузки в контролируемой среде — пробую разные варианты, чтобы понять, что сработает лучше.
9. Пытался настраивать Layer7 фильтры, но это сложно и нагрузка на сервер сильно растёт.
В итоге, лучше всего помогает грамотная связка из обычных правил на сервере, базового файрвола и готового антиддос сервиса, если на него деньги есть. А у вас как? Что реально срабатывает и что оказалась пустая трата времени?