Учебное пособие по предотвращению DDOS-атак - Жуан Ифэн

Java задняя часть внешний интерфейс Безопасность Эксплуатация и техническое обслуживание

Больше месяца назад мой личный сайт подвергся DDOS-атаке и был недоступен более 50 часов. В этой статье будет рассказано о том, как бороться с такого рода атаками.

Чтобы было ясно, я не разбираюсь в DDOS и никогда не думал, что стану целью. После нападения многие друзья, которые никогда раньше не встречались, предлагали разную помощь и советы, что помогло мне многому научиться. Здесь задокументированы некоторые из решений, которые помогли мне больше всего.

1. Что такое ДДОС?

Во-первых, позвольте мне объяснить, что такое DDOS.

Например, я управляю рестораном, который обычно может вместить до 30 человек одновременно. Вы идете прямо в ресторан, находите столик, садитесь, заказываете, и вы готовы к еде.

К сожалению, я обидел хулигана. Он отправил в ресторан одновременно 300 человек. Эти люди выглядели как обычные клиенты, и каждый сказал: «Поторопитесь и возьмите свою еду». Однако вместимость ресторана всего 30 человек, поэтому одновременно удовлетворить такое количество заказов невозможно, и они заблокировали дверь, парализовав ресторан.

Это DDOS-атака, которая инициирует большое количество запросов за короткий промежуток времени, истощает ресурсы сервера, не может отвечать на обычный доступ и приводит к отключению сайта.

DOS в DDOS — это аббревиатура отказа в обслуживании (stop service), указывающая на то, что целью данной атаки является прерывание обслуживания. Первая D распределена, а это значит, что атака идет не из одного места, а со всех сторон, поэтому ее сложнее предотвратить. Вы закрыли входную дверь, и он вошел через заднюю дверь, вы закрыли заднюю дверь, и он выпрыгнул из окна.

2. Типы DDOS

DDOS — это не атака, а общий термин для большого класса атак. Существуют десятки типов, и постоянно изобретаются новые методы атаки. Каждая ссылка в работе веб-сайта может стать целью атаки. Пока одна связь нарушена, так что весь процесс не может работать, цель парализовать службу достигнута.

Среди них одной из наиболее распространенных атак является атака cc. Он просто и грубо отправляет большое количество обычных запросов, превышающих максимальную мощность сервера, что приводит к простоям. С чем я столкнулся, так это с атакой cc.В лучшем случае около 20 IP-адресов в мире отправляли запросы по очереди, и объем запросов каждого адреса составлял около 200 раз в секунду. Когда я посмотрел лог доступа, я почувствовал, что эти запросы хлынули потоком, в мгновение ока их стало очень много, за несколько минут размер лог-файла увеличился на 100 МБ.

Следующее содержание в этой статье относится к атакам cc.

В-третьих, перехват HTTP-запросов

Если вредоносный запрос имеет сигнатуру, с ним легко справиться: достаточно его заблокировать.

Обычно у HTTP-запроса есть две характеристики: IP-адрес и поле User Agent. Например, все вредоносные запросы отправляются с определенного IP-сегмента, поэтому просто заблокируйте этот IP-сегмент. Либо их поле User Agent имеет характеристики (содержит определенное слово), то перехватывает запросы с этим словом.

Перехват может осуществляться на трех уровнях.

(1) Специальное оборудование

Аппаратный брандмауэр может быть установлен перед веб-сервером для специальной фильтрации запросов. Это работает лучше всего, но и самое дорогое.

(2) Локальный брандмауэр

Операционные системы имеют программные брандмауэры, а серверы Linux обычно используютiptables. Например, блокировка IP-адресов1.2.3.4запрос, вы можете выполнить следующееЗаказ.


$ iptables -A INPUT -s 1.2.3.4 -j DROP

iptables сложнее, и я не знаю, как его использовать. Это оказывает определенное влияние на производительность сервера и не может предотвратить крупномасштабные атаки.

(3) Веб-сервер

Веб-серверы также могут фильтровать запросы. Блокировать IP-адреса1.2.3.4, нгинкснаписаниеследующее.


location / {
  deny 1.2.3.4;
}

Апачинаписаниев.htaccessВнутри файла добавьте следующий абзац.


<RequireAll>
    Require all granted
    Require not ip 1.2.3.4
</RequireAll>

Если вам нужен более точный контроль (например, автоматическое определение и блокировка часто запрашиваемых IP-адресов), вам необходимо использоватьWAF. Здесь я не буду вдаваться в подробности, вы можете обратиться к настройкам nginx в этой области.здесьиздесь.

Перехват веб-серверов очень требователен к производительности, особенно Apache. Для более крупных атак этот метод бесполезен.

4. Расширение полосы пропускания

Перехват HTTP в предыдущем разделе предполагает, что запрос должен иметь характеристики. Однако настоящая DDOS-атака не имеет особенностей, ее запрос выглядит так же, как и обычный запрос, и исходит он с другого IP-адреса, поэтому его невозможно перехватить. Вот почему особенно трудно защититься от DDOS.

Конечно, стоимость такой DDOS-атаки не мала, и обычные сайты не будут подвергаться такому обращению. Однако что мне делать, если я действительно столкнулся с этим и есть ли какой-то принципиальный способ предотвратить это?

Ответ прост, попробуйте переварить эти запросы. Если в ресторане на 30 человек 300 человек, то найдите способ расширить ресторан (например, временно арендовать еще одну витрину и нанять несколько поваров), чтобы могли сесть 300 человек, тогда это не повлияет на обычных пользователей. Для веб-сайта это быстрое расширение пропускной способности за короткий период времени, обеспечивающее в несколько или десятки раз большую пропускную способность, чтобы выдерживать запросы большого трафика. Вот почему поставщики облачных услуг могут предлагать продукты для защиты, потому что они имеют большую избыточную полосу пропускания, которую можно использовать для обработки DDOS-атак.

Друг научил меня методу, который произвел на меня большое впечатление. Поставщик облачных услуг пообещал, что каждый хост будет гарантировать атаки ниже трафика 5G, и они купили 5 сразу. Сайт настроен на один из хостов, но он не виден пользователям, остальные хосты являются зеркалами, которые используются для просмотра пользователями, DNS будет равномерно распределять трафик на эти четыре сервера-зеркала. Если атака произошла, эта архитектура может предотвратить трафик 20G.Если есть более крупная атака, купите больше временных хостов и постоянно расширяйте зеркало.

5. CDN

CDN означает, что статическое содержимое веб-сайта распространяется на несколько серверов, и пользователи могут получить к нему доступ поблизости для повышения скорости. Таким образом, CDN также является методом расширения полосы пропускания, который можно использовать для защиты от DDOS-атак.

Контент веб-сайта хранится на исходном сервере, а контент кэшируется в CDN. Пользователю разрешен доступ только к CDN, и если контента нет в CDN, CDN отправляет запрос на исходный сервер. Таким образом, пока CDN достаточно велика, она может противостоять очень крупным атакам. Однако этот подход исходит из того, что большая часть контента сайта должна быть статически кэшируемой. Для веб-сайтов с динамическим содержимым (таких как форумы) мы должны найти другие способы минимизировать запросы пользователей на динамические данные.

Зеркальный сервер, упомянутый в предыдущем разделе, по существу предназначен для самостоятельного создания микро CDN. Предоставляется крупными поставщиками облачных услугIP высокой защиты, что также делается за кулисами: доменное имя веб-сайта указывает на IP-адрес Anti-DDoS Pro, который обеспечивает буферный слой, очищает трафик и кэширует содержимое исходного сервера.

Вот ключевой момент: попав в CDN, не раскрывайте IP-адрес исходного сервера, иначе злоумышленник может обойти CDN и напрямую атаковать исходный сервер, и предыдущие усилия будут напрасными. поиск"Обход CDN для получения реального IP-адреса", вы узнаете, как разрастается отечественная черная промышленность.

cloudflareэто бесплатная служба CDN, которая предоставляет брандмауэр, настоятельно рекомендуется. Я также хотел бы поблагодарить веб-мастера v2ex.com @livid за его любезную помощь, я использую ихCDNпродукт.

(Заканчивать)