Как предотвратить DDoS атаки используя pfsense

Все слышали о DDoS. Мы все надеемся, что никогда не станем жертвой хакеров (кому мы нужны, наш сайт, да это все так просто, наш русский авось) пока это не коснется нас.
Но наступает тот день, когда это происходит с вами, и тогда происходит понимание, что уже слишком поздно, сайт лежит и не отвечает.
Вы звоните в службу тех.поддержки вашего провайдера, и они говорят вам, что это будет стоить вам кучу вечно зеленых для фильтрации DDoS.Вы не знаете, что делать, и тогда вы начинаете паниковать.

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

Шаги по предотвращению DDoS может написаны ниже:

1 — Увеличение числа одновременных подключений
2 — Применение antispoof правил
3 — Применение SYNproxy
4 — Подготовка черного списка
5 — Настройка ограничений в реальном времени

Аппаратное и программное обеспечение

Как в данном случае можно использовать pfSense 2.1 . Допустим, что вы будете использовать приличное оборудование. Для защиты DDoS до нескольких 100K соединений, вам понадобится, по крайней мере Quad-Core 3.0 ГГц с 4 ГБ оперативной памяти. Старшее поколение серверного оборудования можете переварить меньше трафика, чем новейшие аппаратные часть, чем мощнее ваше железо, тем больше шансов отразить аттаку.
В любой ситуации, при любом железе, главное правильно настроить ваше оборудование.

1 — Увеличение числа одновременных подключений

Когда вы находитесь под DDoS атакой, количество одновременных подключений будет слишком высоко. Нам надо бороться с такой волной «левых» соединений, чтобы реальные пользователи могли подключаться и использовать ваши ресурсы и сервисы. Сколько оперативной памяти требуется, чтобы оставаться online? Хорошее эмпирическое правило, составляет 2 ГБ оперативной памяти на 1 000 000 соединений.

В pfsense, нажмите на System, затем Advanced. Далее нажмите на вкладку Firewall / NAT.

Измените значения Firewall Maximum States и увеличьте значение Firewall Maximum Table Entries

2 — Применение antispoof правил

Чтобы включить antispoof правило в pfSense нажмите на Menu Interfaces и выберите WAN. Прокручиваем вниз и ставим галочки на против Block private networks и Block bogon networks как на рисунке ниже.

 3 — Включить SYNproxy

Существует много видов DDos атак. Одним из таких видов это SYN flood, это когда нападавшие пытаются открыть столько соединений TCP, сколько это возможно. Они часто открывают их в странном состоянии,как «полуоткрытый». Web сервисы, почта, серверы баз данных не слишком хорошо справляется с огромным числом одновременных соединений.
Важно, чтобы они никогда не получали такого рода нежелательный трафик. Способ эффективно защитить свои сервисы в Интернете является использование SYN прокси.

Давайте защищать наши веб-сервера.

Изменим правила брандмауэра, которые перенаправляют HTTP трафик на веб-сервера.

Открываем страничку Firewall: Rules: Edit

Выбираем то правило брандмауэра, которые разрешают HTTP трафик на наши Web сервера

 

Прокручиваем вниз в Advanced features ищем строчку State Type выбираем Advanced и выбираем

 

Включайте это правило только когда вас DDosят.

Это не хорошо, если правило включено постоянно. Хитрость заключается в том, чтобы создать правило SYNproxy выше нормального правила в FireWall Rules. В нормальном режиме надо держать отключенным правило SYNproxy и включать его только при обнаружении атаки. Выглядит это вот так.

4 — Подготовка черного списка

Когда вы будете находиться под  DDoS атаке, можно заметить, что некоторые страны генерируют гораздо больше трафика, чем другие. Если вы знаете, что основные ваши клиенты в России или в некоторых странах СНГ, то вы должны подготовить черный список, который будет блокировать все другие страны. Этот черный список будет применяться при DDoS и поможет блокировать огромное количество нежелательного трафика.

4.1 — Установка pfBlocker

В pfSense нажмите на System, там Packages. Перейдите на вкладку Available Packages. В списке найти pfBlocker и нажмите на + с правой стороны, чтобы установить его.

После того, как произойдет установка нажмите на Firewall, то pfBlocker. Включить опции, и убедитесь, что Enable Logging отключен (чтобы при атаке не грузить систему лог файлом).

Мы блокируем (block) на интерфейсе WAN ботов и не отвечаем им. Также важно, отклонить (reject) входящий трафик от серверов хакеров на них самих. Может быть, они нашли дыру в вашей системе, и они захотят загрузить инструменты для взлома из стран, которые в вашем «черном списке» от компромиссного сервера. При отклонении брандмауэр будет отправлять ICMP о недоступности порта на сервере. Это сбросит соединение и приложение не уйдет по тайм-аут. Это поможет серверу.

Рекомендации

— Мы рекомендуем не запускать эти списки постоянно.
— Если вы хотите, можно включить основной черный список самых раздражающих страны это нормально. Просто убедитесь, в вашем выборе и обязательно сделайте тестирование, чтобы случайно не выбрать всех.
— Вы должны подготовить основной черный список и когда вы будете находиться под DDoS, вы можете обновить его. Со временем вы сможете настроить свой пользовательский «черный список» для вашего сервера.

Таким образом, вы нажмете Ctrl + на страны, в нескольких континентах в pfBlocker и добавляете их в черный список. Теперь переходим к последней задаче. Она наиболее сложная и трудная.

5 — Настройка Rate-limit

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

5.1 — Как мы будем тестировать и настраивать предел Rate-limit?

Если мы хорошо подготовимся это станет хорошим  щитом против DDoS, и  тут нам предстоит потратить большую часть времени по настройке. Если у вас есть 10 IP-адресов это проделать будет гораздо легче, чем если у вас сотни IP-адресов. Вы должны иметь представление о том, сколько соединений обычно бывает на ваши сервисы. Если вы не знаете это значение, то следует  начать с того, чтобы собрать всю информации.Такие инструменты, как Netflow очень полезны для этого. Кроме того, для небольших проектов NTOP подходит очень хорошо для выполнения этой задачи.

В pfSense, нажмите на Firewall, то Rules. В вашем наборе правил, редактируем правило, в котором вы устанавливаете Rate-limit. Прокрутите вниз и нажмите Advanced Options.

Здесь вы определяете свою стратегию обороны.

Пример, если ваши пользователи используют в среднем 10 соединений за посещение и находятся онлайн около 10 минут за один раз, потом они снова возвращаются, через определенное время. Вы можете определить правило 20/180 Maximum new connections per host / per second(s) (TCP only). Это более чем достаточно для всех пользователей. Нападавшие не будет так нежны с вами, когда они будут атаковать.Они слишком поздно поймут, что все их боты / зомби теперь блокируются еще на подступах к вашей линией обороны.

5.2 — Найти собственные значения

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

Рекомендации

— Измените правило брандмауэра SYNproxy, что мы создали ранее, и применяйте агрессивные предельные значения. Это правило надо будет включить только при атаке. 
— Download Loic и DDoS-атак производите на себя самостоятельно. Чтобы понять свой предел для блокирования атаки.
— Измените эквивалентное правило, но с keep state и настроить свободный Rate-limit, с уведомлением, которое отправляет Вам письмо, если достигнут предел. Тогда вы будете знать, что DDoS-в атака в подготовке или может быть, уже началась.
— Тестирование и документирование всех ваших онлайн серисов: DNS, электронной почты, веб-приложений, VPN, и т.д.
— Тестируйте ваши ограничение по скорости несколько раз в год или по крайней мере один раз в год.

Как смягчить DDoS?

Если вы подготовитесь, как описано выше у вас будет шанс, так как для атакующих это будет неожиданностью и они не сразу поймут, что происходит. Они потом будут добавлять больше ботов и попытаются вести более агрессивную атаку. Атака могут меняться и примеры поведения во время DDoS постараемся объяснить в следующей статье. Мы также ответим на вопрос о том, как блокировать трафик перед отправкой вам таким образом, чтобы не превысить ваш канал связи интернета. Прежде, чем мы объясним, что делать во время атаки важно иметь сильную стратегию обороны.

Вывод

Мы не претендуем, что эти действия решать и спасут полностью вас от всех DDoS атак.Также есть и другие варианты программные и аппаратные, чтобы защититься от DDoS.По крайней мере, вы будете более защищенными перед атаками и у ваших сервисов будет больше шансов оставаться он-лайн. Таким образом, вы не станете легкой добычей.