Protocol filter(PF) от DDos атак на сервер под freeBSD

Защита от Doss-атак для web сервера
1) Фаервол
2) И грамотно настроенный веб сервер!

Пример:
1) Фаерволл PF.

Обозначаем фильтер протоколов в rc.conf
pf=YES
pf_rules=/etc/pf.conf

Код: /etc/pf.conf
set block-policy drop # Если кто то попал под правило block молча откидаем его пакеты
set fingerprints "/etc/pf.os" # Файл с всеми извесными ОС, PF может резать людей по версиям ОС
set loginterface $ext_if # С какого интерфейса статистику снимать будем.
set optimization normal # Нормализация хождения трафика
scrub in all # Нормализация входящего трафика
scrub out all # Нормализация исходящего трафика

table persist # Создаём таблицу DDOS
block quick from to any # Всех кто в таблице DDOS рубим и не смотрим на остальные правила

# Защита от ДДОС атак на WWW сервер
pass in on $ext_if proto tcp from any to $int_if port www flags S/SA keep state
( max-src-conn-rate 50/5, overload flush)

# Если кто то хочет создать больше чем 50 линков за 5 сек добавлять в таблицу DDOS
Посмотреть всех кто попался на удочку так pfctl -t ddos -T show а очистить таблицу так
pfctl -t ddos -T flush

Мини мануал по командам PF
  • pfctl -f /etc/pf.conf - Загрузить правила из файла /etc/pf.conf
  • pfctl -nf /etc/pf.conf - Проверить валидность правил из файла /etc/pf.conf - НО НЕ ЗАГРУЖАТЬ
  • pfctl -Nf /etc/pf.conf - Загрузить только правила NAT
  • pfctl -Rf /etc/pf.conf - Загрузить только фильтрующие правила
  • pfctl -sn - Посмотреть активные правила NAT ТРАНСЛЯЦИИ
  • pfctl -sr - Посмотреть активные правила фильтра
  • pfctl -ss - Показать текущую таблицу состояний (state table)
  • pfctl -si - Показать статистику
  • pfctl -sa - Показать ВСЁ что можна

Другие примеры PF:

# added by defsite.ru

set loginterface em0
set optimization aggressive
set limit {states 120000, frags 10000}
set limit src-nodes 70000

set skip on { lo0 }

pass in quick on em0 inet proto tcp from any to 77.91.229.144 port 80 flags S/SA synproxy state (max 100000, source-track rule, max-src-states 60, max-src-conn 50, if-bound, adaptive.start 60000, adaptive.end 120000)

Дополнительная информация по PF

2. web server
Устанавливаем в паре 2 веб сервера Nginx and Apache
На порту 80 работает Nginx а на 8080 работает Apache
Дуступ к порту 8080 разрешен только из интерфейса lo0.

И того Nginx выступает в качестве кешырующего веб сервера а апач в качестве выполняймого.
И вот когда Вас ДОСЯТ или ДДОСЯТ, Nginx первый раз берет страничку у апачаИ того Nginx выступает в качестве кешырующего веб сервера а апач в качестве выполняймого.
И вот когда Вас ДОСЯТ или ДДОСЯТ Nginx первый раз берет страничку у апача а второй и все последующие отдайот из кеша и сразу рубает линк с ДДОСЕРОМ, а второй и все последующие отдаёт из кеша и сразу рубает линк с ДДОСЕРОМ.

Источник