Способов много. Основные:
1) Блокирование не целевой аудитории. Если сайт, например новостной, то скорее всего его новости интересны не всему интернету, а только некоторой части. Например, можно отклонять все запросы из Китая, Японии, Корее, Аргентины, Австралии и так далее. Есть вероятность, что так вы потеряете некоторое количество пользователей, но этот способ может отсеять очень большое количество нападающих.
2) Блокировка явно чужеродных запросов. Проверяя служебные заголовки тоже можно отфильтровать огромное количество нападающих.
3) Перевод под "щитовой" сервер. Просто очень мощный сервер, который обрабатывает запросы и передает их на основной. Он же может выступать в роли кэш-сервера, что значительно снизит нагрузку на реальный сервер.
4) Перевод динамики сайта в статику. Уменьшаем интерактивность сайта, зато увеличиваем его стойкость.
Способов еще вагон и маленькая тележка, но основные, я думаю, я уже привел.