Varnish and Connection Flood (DoS - DDoS) [дубликат]

На этот вопрос уже есть ответ здесь:

Я был поигрался с сервером кеширования Varnish, и моя веб-страница заработала молниеносно, она получила 97 баллов в Google Pagespeed и 100 @ Pingdom. Я использовал Varnish (прокси для nginx), NGINX (доступен только локально, прокси * .php на php- fpm (но я думаю о переходе на HipHop PHP Compiler).

Так как моя страница была быстрой и использовалось только ~ 500/1 ГБ оперативной памяти, я попросил моего друга провести стресс-тест на HTTP-сервере этой машины.Я настроил следующие Anti-DDoS-механизмы:

  • iptables Межсетевой экран, ограничивающий количество подключений в секунду
  • еще несколько проверок iptables (сеансы, начинающиеся с SYN, ICMP и т. Д.)
  • Varnish caching
  • Re- закодировал небольшую веб-страницу для хранения некоторых значений, которые могут часто выбираться в альтернативном кеше php (например: песня, которая воспроизводится в данный момент, ttl 120 должна быть в порядке)

На веб-странице нет динамических данных, за исключением песни, воспроизводимой в данный момент. который работает на базе APC и определенно не требует сеансов.

Итак, теперь к моей проблеме, мой друг начал DoS-атаку с какой-то машины, которую ему было разрешено использовать, и мой сервер отключился ОЧЕНЬ быстро. Мне удалось подключиться к SSH, поэтому я использовал последовательную консоль и проверил журналы varnishd, которые показали: начало сеанса конец сеанса

И это все время повторяется. Я заранее получил доступ к консоли и заблокировал IP-адреса, ê вуаля, моя страница вернулась.

Теперь, поскольку нет необходимости в сеансе, мне нужен синтаксис VCL для запрета всех сеансов, кроме сценариев в подкаталоге / user.

1
задан 2 May 2012 в 00:44
2 ответа

IIRC varnish использует потоки для обработки соединений и настроен с ограничением. Так что все, что нужно сделать злоумышленнику, - это открыть, скажем, 200 подключений к кешу, чтобы заблокировать каждый поток (см. Также slowloris ). С другой стороны, nginx (который с радостью будет работать как кэширующий обратный прокси ) - это сервер, основанный на событиях; переключение контекста осуществляется по запросу - оно ограничено только количеством сокетов, которые он может открыть, и, следовательно, намного, НАМНОГО более устойчиво к таким атакам.

(varnish по-прежнему лучше, чем pre-fork или даже worker apache для обработки запросов без больших затрат на каждый запрос, поэтому вы увидите, что многие люди говорят об использовании его для смягчения таких DOS-атак).

4
ответ дан 3 December 2019 в 16:50

Вы можете установить такой инструмент, как fail2ban или OSSEC (мой любимый), чтобы автоматически блокировать подобные атаки. Это не спасает вас от атак с подделкой IP (от них действительно сложно защититься), но это только начало.

2
ответ дан 3 December 2019 в 16:50

Теги

Похожие вопросы