Автор Тема: Анти DDOS для веб-сервера FreeBSD  (Прочитано 1665 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Дмитрий

  • Global Moderator
  • Jr. Member
  • *****
  • Сообщений: 59
  • Country: ua
  • Karma: +1/-0
  • Пол: Мужской
  • ICQ: 41488731
Анти DDOS для веб-сервера FreeBSD
« : Марта 31, 2014, 05:46:03 pm »
Анти 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 неприменимо понятие соединение).

*** ссылки только после регистрации или входа

*** ссылки только после регистрации или входа

*** ссылки только после регистрации или входа

*** ссылки только после регистрации или входа

Детальнее:*** ссылки только после регистрации или входа

« Последнее редактирование: Марта 03, 2015, 09:27:41 pm от Дмитрий »


  • admin.ix-ua@jabber.ua
Новости из мира *** ссылки только после регистрации или входа

Оффлайн Дмитрий

  • Global Moderator
  • Jr. Member
  • *****
  • Сообщений: 59
  • Country: ua
  • Karma: +1/-0
  • Пол: Мужской
  • ICQ: 41488731
Re: Анти DDOS для веб-сервера FreeBSD
« Ответ #1 : Марта 31, 2014, 06:00:02 pm »
Еще один пример по Анти DDOS

в fp.conf
Код: *** ссылки только после регистрации или входа
table <ddos> persist
table <bruteforce> persist
...
block log quick from { <ddos>, <bruteforce> }
...
## allow HTTP
pass in inet proto tcp from any to any port http keep state \
    (max-src-conn 200, max-src-conn-rate 100/2, overload <ddos> flush)
...
## allow SSH
pass in log inet proto tcp from any to any port ssh keep state \
    (max-src-conn 10, max-src-conn-rate 5/60, overload <bruteforce> flush)

в cron'е
Код: *** ссылки только после регистрации или входа
*/5     *       *       *       *       root       /sbin/pfctl -t ddos -T expire 1800 >/dev/null 2>&1            #30 minutes
*/5     *       *       *       *       root       /sbin/pfctl -t bruteforce -T expire 86400 >/dev/null 2>&1       #1 day
« Последнее редактирование: Мая 22, 2015, 09:26:13 pm от Дмитрий »
  • admin.ix-ua@jabber.ua
Новости из мира *** ссылки только после регистрации или входа

Оффлайн Artiom

  • Newbie
  • *
  • Сообщений: 3
  • Karma: +0/-0
Re: Анти DDOS для веб-сервера FreeBSD
« Ответ #2 : Ноября 14, 2014, 02:50:56 pm »
Я предпочитаю блокировать так:
Код: *** ссылки только после регистрации или входа
block in quick proto tcp from <ddos>  label "Fuck DDOSers" probability 65%
Попытки что либо сделать от этого адреса начинают дико тормозить.  8) Что особо отбивает охоту ставить твой адрес в списки сканеров и т.п. Сканер проторочит на твоём адресе кучу времени и всё равно ничего не поймёт ;).

Ну и банить надо хотя бы на час. 5 минут никто не заметит.

Оффлайн Дмитрий

  • Global Moderator
  • Jr. Member
  • *****
  • Сообщений: 59
  • Country: ua
  • Karma: +1/-0
  • Пол: Мужской
  • ICQ: 41488731
Re: Анти DDOS для веб-сервера FreeBSD
« Ответ #3 : Февраля 11, 2015, 04:29:40 pm »
ну я попробовал на FreeBSD твой вариант и что то не понял он твой синтаксис! :)
разбан я поставил на http 10 мин! все равно они меняют IP там каждые 5-10 минут, а на перебор ssh оставил день бана
« Последнее редактирование: Марта 03, 2015, 09:27:29 pm от Дмитрий »
  • admin.ix-ua@jabber.ua
Новости из мира *** ссылки только после регистрации или входа