Назад | Перейти на главную страницу

Как предотвратить синхронную DDOS-атаку

У меня есть сайт с оперативной памятью 2 ГБ на centos. Использование LAMP

Каждый день на несколько часов (от 3 до 4 часов) apache отключается. Страница загружается слишком долго, и в большинстве случаев отображается время ожидания запроса. Но другие порты в порядке, например ftp и 7778, так как я использую kloxo.

Я не эксперт по серверам, но я погуглил и провел небольшое исследование, и я думаю, что это атака ddos ​​syn.

я использовал netstat -n | grep :80 | grep SYN |wc -l посмотреть на синхронные соединения

Во время атаки он показывает число больше 3000. Но когда мой сайт возвращается в нормальное состояние, он показывает число около 100.

Пожалуйста, помогите мне. и скажи мне, как остановить это, это меня действительно бесит.

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

Есть ли у вас какие-либо системы мониторинга производительности, такие как Cacti, Munin, Zabbix, Observium или какие-либо другие варианты в этой области? Если нет, купите один из них сейчас. Настройте их для графического отображения всех обычных вещей, таких как использование памяти, средняя загрузка, использование ЦП, свободное дисковое пространство, IOPS, использование сети и т. Д., Но также, возможно, стоит добавить настраиваемые метрики, такие как количество запросов в минуту или состояния TCP. Также добавьте любые шаблоны, соответствующие используемым вами службам, например Apache, MySQL, memcached и т. Д.

Анализируя графики, создаваемые этими инструментами, вы сможете найти ресурс, который загружается на 100% во время этих простоев. Отсюда вы можете проследить причинно-следственную цепочку до исходного триггера, вызвавшего проблему. Вполне возможно, что исчерпаемый ресурс не измеряется вами и даже не находится под вашим контролем.

Как предположение, если ваши связи находятся в SYN_SENT состояние, вы, вероятно, используете чей-то API через HTTP, и он либо не работает, либо временно заблокировал вас. Если они в SYN_RECV состоянии, возможно, проблема с брандмауэром блокирует SYN-ACK ответы от получения клиентом или ответ от клиента, полученный вами. Это также может быть предложенный вами SYN-флуд.

Во время реального SYN-флуда вы увидите значительный скачок пропускной способности и количества пакетов в секунду. Использовать tcpdump -w packet-capture-file.cap или -j LOG в iptables, чтобы регистрировать эти пакеты и посмотреть, сможете ли вы определить шаблон. Может быть, исходный адрес всегда один и тот же, может быть, он всегда в небольшом диапазоне, может быть установлен странный TCP-флаг (например, URG или PSH). В противном случае проверьте, не предпринимают ли задействованные IP-адреса несколько попыток подключения. Если они это сделают, вы можете добавить их в DROP правил в вашем брандмауэре, чтобы вашей ОС не приходилось с ними сталкиваться. В зависимости от количества различных IP-адресов вам может потребоваться разделить правила на несколько таблиц, чтобы уменьшить размер списка, который iptables должен сканировать.

DDoS может быть настолько большим, что фактически исчерпывает пропускную способность вашего хостинг-провайдера. Если это так, им или вам, вероятно, придется обратиться в специализированную компанию по предотвращению DDoS-атак. Эти парни используют DNS или BGP для маршрутизации вашего трафика к ним, фильтрации DDoS-трафика и отправки остального вам. Как правило, они недешевы, и вам придется взвесить стоимость простоя и стоимость услуги по смягчению последствий. Существуют также такие сервисы, как CloudFlare, которые могут предотвращать DDoS-атаки до определенных пределов и имеют более доступные тарифные планы.

Распространены они или поступают с одного IP? В любом случае я бы порекомендовал брандмауэр, например CSF для ограничения атак TCP syn.

Быстрое и дешевое решение:

  • Уменьшите тайм-аут тайм-аута синхронных пакетов

    Отредактируйте /etc/sysctl.conf

net.netfilter.nf_conntrack_tcp_timeout_syn_recv=30

  • Ограничьте количество пакетов синхронизации, которые вы можете получить

создавать новые цепочки

iptables -N syn-flood

ограничивает входящие пакеты

iptables -A syn-flood -m limit --limit 10/second --limit-burst 50 -j RETURN

лог-атаки

iptables -A syn-flood -j LOG --log-prefix "SYN flood: "

молча бросить остальные

iptables -A syn-flood -j DROP

Источник

Кого волнует отслеживание IP-адресов. 90% DoS / DDoS-атак будут проксироваться! Вам необходимо настроить период черного списка на основе «вредоносного трафика».

http://perishablepress.com/eight-ways-to-blacklist-with-apaches-mod_rewrite/

При атаке SYN ваша система переполняется серией пакетов SYN (очевидно). Каждый пакет заставляет вашу систему выдавать ответ SYN-ACK. Ваша система ожидает ACK, следующего за SYN + ACK (трехстороннее рукопожатие). Поскольку атака никогда не отправляет обратно ACK, ваши системные ресурсы потребляются. Как только очередь будет заполнена, ваша система будет игнорировать входящие запросы от легальных пользователей на услуги (http / mail и т. Д.). Следовательно, необходимо остановить эту атаку с помощью iptables, ipfw и т. Д.

Что касается правила iptables:

iptables -A INPUT -p tcp! --syn -m state --state NEW -j DROP