Анти DDOS для веб-сервера FreeBSD Встроенный файрволл FreeBSD позволяет защищать сервер от DDOS-атак, связанных с созданием большого числа подключений на какой-либо порт (к примеру 80). Под катом инструкция, как эту функцию задействовать — с конфигом и комментариями.
Конфиг файрволла с функцией анти-DDOS должен начинаться примерно так, файл /etc/pf.conf:
# создаем в памяти таблицу ddos, в которой будут храниться шаловливые ip-адреса
table <ddos> persist
# политика фильтрации - Default Deny, т.е. запрещаем все, что не разрешено
block log all
# чтобы случайно не самозабаниться, 83.246.222.22 - наш ip-адрес
pass in quick from 83.246.222.22
# блокируем ip-адреса из черного списка
block in quick from <ddos>
pass in proto tcp from any to self port 80 keep state \
(max-src-conn 50, max-src-conn-rate 15/5, overload <ddos> flush)
Последнее правило следует понимать так — пропускаем соединения на 80 порт, при этом для каждого ip-адреса запоминаем количество подключений и считаем скорость его подключений. Ежели с одного ip-адреса поступит более 50 соединений, или количество соединений превысит 15 за интервал времени в 5 секунд, то забанить.
К слову, число соединений можно посмотреть с помощью командочки (sS — show Sources):
# pfctl -sS
192.168.0.1 -> 0.0.0.0 ( states 2, connections 2, rate 0.0/0s )
192.168.1.2 -> 0.0.0.0 ( states 15, connections 15, rate 0.0/0s )
192.168.1.4 -> 0.0.0.0 ( states 7, connections 7, rate 0.0/0s )
192.168.1.7 -> 0.0.0.0 ( states 11, connections 9, rate 0.0/0s )
192.168.1.18 -> 0.0.0.0 ( states 16, connections 16, rate 0.0/0s )
Посмотреть таблицу забаненных:
# pfctl -t ddos -T show
13.13.13.13
Снять бан с определенного ip-адреса:
# pfctl -t ddos -T delete 13.13.13.13
1/1 addresses deleted.
Либо можно амнистировать все адреса:
# pfctl -t ddos -T flush
В завершение, однострочник, выводящий сводную статистику по количеству соединений:
pfctl -sS | grep -v connections\ 0 | awk '{printf "%5d %s\n",$8,$1}' | sort
В выводе pfctl -sS сначала идет статистика по udp, потом по tcp, вот поэтому сначала отфильтровываем по connections 0 (к UDP неприменимо понятие соединение).
You are not allowed to view links.
Register or
LoginYou are not allowed to view links.
Register or
LoginYou are not allowed to view links.
Register or
LoginYou are not allowed to view links.
Register or
LoginДетальнее:You are not allowed to view links.
Register or
Login