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.

Обновлено:

Все термины раздела «Доменные имена и DNS»

Что будем искать? Например,Продвижение