DoS-атака
Оригинальное название: Denial-of-Service (DoS)
Коротко
Атака на доступность, при которой один источник перегружает сайт или сервер запросами либо исчерпывает его ресурсы, и сервис перестаёт отвечать.
Что такое «DoS-атака»
Цель такой атаки — не украсть данные и не проникнуть внутрь, а сделать так, чтобы настоящие пользователи не получили ответ. Ресурс, который исчерпывают, может быть любым: процессор, память, соединения веб-сервера, процессы PHP-FPM, подключения к базе, канал. В отличие от DDoS, здесь нападение идёт с одного адреса или небольшого их числа, поэтому от него проще защититься — достаточно найти и заблокировать источник.
Чем можно положить сайт с одного компьютера
- Тяжёлые страницы: поиск по каталогу без кеша, фильтр с десятком параметров, генерация отчётов. Пара запросов в секунду к ним иногда нагружает сервер сильнее, чем тысяча обращений к главной.
- Медленные соединения, как в атаке Slowloris: клиент открывает много подключений и очень медленно присылает заголовки. Серверы с моделью «поток на соединение» быстро упираются в лимит, nginx к этому устойчивее.
- Уязвимые регулярные выражения и алгоритмы, которые на специально подобранной строке работают минутами.
- Перебор паролей через wp-login.php или xmlrpc.php в WordPress — побочным эффектом становится перегрузка.
Бывает и «DoS без злого умысла»: агрессивный парсер конкурента или неправильно настроенный краулер, который выкачивает весь каталог без пауз.
Как найти источник по логам
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
Команда выводит IP-адреса с наибольшим числом запросов. Если сверху один адрес с десятками тысяч обращений, его можно заблокировать в файрволе или в конфигурации nginx.
Пример: закрыть ненужный вход
location = /xmlrpc.php {
deny all;
}
Если XML-RPC не используется мобильным приложением или сторонними сервисами, такое правило убирает одну из популярных целей для атак на WordPress. Внешне перегрузка часто выглядит как ошибки 502 и 503 — что они значат и как их разбирать, описано в статье об ошибках 500, 502 и 503.

