Ребят, требуется ваша помощь. А именно подсказать пару правил на защиту от мелкого ддоса с помощью ipfw. Если в линуксе был iptables было немного проще... Ну все же, буду очень рад если скинете пару правил
Самое популярное это: Еще - http://amsand.narod.ru/articles/antihack.html И вот - http://www.lissyara.su/doc/docs/handbook_-_ipfw/
Краткое руководство по борьбе с 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