Защита от ддоса на уровне freebsd

Discussion in 'AntiDDos - АнтиДДОС' started by V1TaL1K, 4 Aug 2012.

  1. V1TaL1K

    V1TaL1K New Member

    Joined:
    13 Mar 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Ребят, требуется ваша помощь. А именно подсказать пару правил на защиту от мелкого ддоса с помощью ipfw. Если в линуксе был iptables было немного проще... Ну все же, буду очень рад если скинете пару правил :)
     
  2. Alex24

    Alex24 Member

    Joined:
    5 Sep 2010
    Messages:
    385
    Likes Received:
    56
    Reputations:
    19
    Самое популярное это:
    Еще - http://amsand.narod.ru/articles/antihack.html
    И вот - http://www.lissyara.su/doc/docs/handbook_-_ipfw/
     
  3. V1TaL1K

    V1TaL1K New Member

    Joined:
    13 Mar 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Спасибо, буду изучать. Можно подробнее что именно дает то правило что Вы скинули.
     
  4. OxoTnik

    OxoTnik На мышей

    Joined:
    10 Jun 2011
    Messages:
    943
    Likes Received:
    525
    Reputations:
    173
    Краткое руководство по борьбе с DDOS-атаками на http-сервер

    Взял инструкцию со своего хостера, хз может поможет

    Диагностика

    Если есть возможность зайдите на сервер по ssh. Командами ps и top отметьте большое количество процессов httpd. Если на сервер по ssh войти не удается, то воспользуйтесь VDSmanager (ссылка на него есть в клиентской зоне)

    Посмотрите меню Запущенные процессы и Текущая нагрузка. Перезагрузите сервер через VDSmanager, попробуйте зайти по ssh, если падает, из-за apache, то остановите его, как вариант, можете убить все процессы httpd через него же.)
    Эти команды покажут вывод, направление и состояние всех установленных на 80 порту или на всех портах соединений.
    Эти команды считают количество процессов httpd и количество подключений на 80 порт. Если количество соединение превышает среднестатистическое, вероятно, это DoS/DDoS-атака. Также http-флуд можно выявить по косвенным признакам:
    Эти команды каждые 2 секунды будут выводить список логов apache, если размер верхнего access файла быстро растет, почти наверняка атака идет на этот сайт. Примечание: во FreeBSD пакет watch выполняет другие функции. Следует использовать пакет cmdwatch.

    данная команда также поможет в выявлении DoS/DDoS. Tcpdump запишет в файл ddos.log первые 200 пакетов, которые соединений на 80 порту.
    а так лог-файл можно прочитать и отсортировать по ip и количеству подключений.
    Действия администратора

    Для FreeBSD включите firewall - отредактируйте /etc/rc.conf прописав в нем строки (редактировать файлы можно через VDSmanager)
    Создайте файл /etc/firewall.conf и пропишите в нем

    Тем самым после перезагрузки сервера у вас будет недоступен apache извне и не будет приводить к зависанию сервера.
    Подключение mod_status в Apache 2.2

    Теперь надо определить на какой именно сайт идет атака. У apache есть замечательный модуль mod_status http://httpd.apache.org/docs/2.2/mod/mod_status.html

    mod_status позволяет в реальном времени осуществлять мониторинг загрузки сервера.

    В apache2.2 отредактируйте /usr/local/etc/apache22/httpd.conf

    Раскомментируйте строки
    Отредактируйте файл конфигурации /usr/local/etc/apache22/extra/httpd-info.conf
    Поменяйте на
    Раскомментируйте строку

    #ExtendedStatus On

    Перезапустите apache
    Подключение mod_status в apache 1.3

    В apache 1.3 подключение server_status осуществляется аналогично apache 2.2, за исключением того, что все настраивается только в /usr/local/etc/apache/httpd.conf
    Использование server-status

    Теперь по адресу
    Аккуратно удалите правило запрещащие запросы к серверу по 80 порту
    И посмотрите http://ip-aдрес.сервера/server-status

    Нас интересует следующее
    В данном случае, атака идет пустыми запросами GET / к серверу example.com

    Вам следует его отключить. Выполнить это лучше всего создав файл .htaccess в корневой директории домена с содержимым
    Теперь при обращении к сайту будет выдаваться ошибка 403 Forbidden и нагрузка на остальные сайты значительно снизится.

    Как правило, флуд-боты обращаются по имени сервера, соответственно, пропишите DNS для этого домена на IP-адрес 127.0.0.1 и когда обновится кэш DNS, то поток пустых запросов полностью прекратится.
    Фильтрация
    то же для FreeBSD.

    Команды ниже, создает таблицу для ipfw, которой запрещен доступ к серверу по 80 порту и раз в 30 секунд анализирует лог доступа к сайту на наличие ip, появившихся в логе более 50 раз.
    Для Linux. Создается цепочка dos, куда перенаправляются все подключения на 80 порт сервера. В эту цепочку добавляются «плохие» ip.
    Способ для iptables, имеет одну нехорошую особенность, в цепочке возникают дублирующиеся правила. Поэтому лучше использовать ipset (нужен соответствующий модуль).
    Закрываем icmp (поможет при icmp-flood)
    для FreeBSD.

    ipfw add deny log icmp from any to any

    Ограничение максимального числа «полуоткрытых» соединений с одного IP к конкретному порту (необходим соответствующий модуль):

    Так во FreeBSD вы ограничите максимальное число одновременных подключений (не стоит его делать меньше) с одного IP-адреса.

    Дополнительная оптимизация сервера

    В качестве дополнительных параметров, которые следует использовать, при настройке сервера

    /usr/local/etc/apache22/extra/httpd-mpm.conf
    Измените MaxClients (максимальное число процессов) в меньшую сторону до количества процессов, которые не роняют ваш сервер по нехватке оперативной памяти. Каждый процесс apache занимает в среднем 4-8 мегабайт памяти и необходимо чтобы суммарное количество помешалось в оперативной памяти.

    Отредактируйте /usr/local/etc/apache22/extra/httpd-default.conf Следует уменьшить параметры
    До 60 и 50 соответственно, чтобы как можно более скорее старые процессы apache прекращали свое существование
    Использование nginx

    При использовании nginx в качестве Front-End к Apache (стандартная конфигурация при установки nginx совместно с ISPmanager) WWW домен следует отключать в конфигурации nginx в описании соответствующего виртуалхоста Например
    И тем самым уже nginx будет выдавать ответ 403 Forbidden и не перенаправлять запросы к web-серверу apache.
    Переменные sysctl

    Системные переменные, которые могут быть полезны, при DDoS.
    ICMP-FLOOD

    Команда ниже поможет при отражении атаки типа icmp-flood.
    Ограничиваем число ответов на ICMP-сообщения 50-ю в секунду (защита от ICMP-флуда) для FreeBSD:
    Увеличиваем максимальное количество подключений к серверу для FreeBSD:
    Уменьшение времени удержания «полуоткрытых» соединений:
    Включение TCP syncookies:

    sysctl -w net.ipv4.tcp_syncookies=1 sysctl net.inet.tcp.syncookies=1 (для FreeBSD)

    Увеличиваем размер очереди полуоткрытых соединений. По-умолчанию - 512.
    Проверять TCP-соединение каждую минуту. Если на другой стороне - легальная машина, она сразу ответит. По-умолчанию - 2 часа.
    Повторить проверку через 20 секунд
    Количество проверок перед закрытием соединения
    Изменяем время ожидания приема FIN
     
    3 people like this.
  5. V1TaL1K

    V1TaL1K New Member

    Joined:
    13 Mar 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    OxoTnik
    Спасибо, это информация оказалась очень полезной для меня.
     
  6. Sind-blog

    Sind-blog Хэш-крякер

    Joined:
    4 May 2011
    Messages:
    452
    Likes Received:
    115
    Reputations:
    32
    Да, тоже многого не знал, поставил на сайтик себе кое что, бывают нагрузки. +