Защита от 100 рефрешей в секунду.

Роберт

Аналитик
Защита от 100 рефрешей в секунду.

Народ - подскажите , как эффективнее защищаться от тех юзеров , которые пытаются сотню раз в секунду нажать рефреш , и таким образом загрузить его запросами так что он на время перестаёт реагировать на любые запросы.
Можно отлавливать и банить таких пользователей на уровне РНР , но это мало эффективно , так как 100 рефрешей в секунду которые посылает мне какая-то программа вешает слабенький серверок на 10-20 секунд.
Можно пытаться ограничивать количество сессий , процесов и длину очереди в настройках апача (тогда у "хакера" не получится перегрузить сервер , но он станет недоступен для тех других пользователей , которые пытаются попасть в это же время на сервер. А "хакер" поставил свою программу на сутки и радуется что другие не могут зайти)
Наверно самый эффективный вариант - фаирвол. Который автоматом блокировал бы пользователей если видит что они пытаются провести DOS атаку. Может кто-то делал такое? Моглибы поделиться - что лучше использовать? Например в комплекте с RedHat9 идёт FairWall , но по моему его так не настроить.
Да и бывает что "плохого" пользователя определяет мой скрипт РНР. А как ему передать фаирволу , чтобы тот его отключил на строго определённое время? Я конечно могу сам добавлять его в конфигурационный файл фаирвола , но ведь тот не подхватит мои изменения на лету , а перезапускать фаирвол после изменения списка bad_users - тоже плохая идея.
Ведь наверняка кто-то ставил перед собой такие же цели. Поделитесь опытом - как такое реализовывали?
 

ys

отодвинутый новичок
Наверно стоит использовать SYN прокси или как он там...
 

Demiurg

Guest
что это за пользователи таки, что способны на кнопки жать с частатой 100 герц? таких ценить надо и в книгу рекордов гиннеса заносить.
 

Фанат

oncle terrible
Команда форума
Насколько я понимаю, никакая прокси и никакой роутер не смог защитить крупного провайдера Зенон от ДДоС атак...
 

Роберт

Аналитик
Вопервых не обязательно нажимать на кнопку с частотой 100 герц. Достаточно всего один раз нажать на неё и не отпускать и начнётся автоповтор (а его частоту можно поставить немеренной) , вот и получится 100 рефрешей в секунду!
А по поводу защиты Зенон - дешовые роутеры и то защищают от такого. Им только надо указать что:
блокируем IP на 10 минут если она зашёл 5 раз за секунду
блокируем IP на 30 минут если она зашёл 50 раз за минуту
блокируем IP на 5 суток если она зашёл 1000 раз за час
но хочется решить проблему без аппаратного вмешательства...

А что за SYN и где его искать?
 

Фанат

oncle terrible
Команда форума
Роберт
Какой ты смешной мальчик :)
Пойди, почитай что-нибудь про ДДоС атаки и про то, что делали спамеры в начале этого года с крупными провайдерами.

И не путай свой пошлый ДоС с РАСПРЕДЕЛЕНОЙ атакой.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Фанат
И не путай свой пошлый ДоС с РАСПРЕДЕЛЕНОЙ атакой.
Фанат, пора идти промывать глаза чайной заваркой. Слово "распределённый" тут первый раз появилось в твоём сообщении, ага?
 

Фанат

oncle terrible
Команда форума
совершенно верно.
это было просто предположение.
А в ответ на него мне стали рассказывать про дешевые роутеры =)
 

Роберт

Аналитик
Фанат
Насчёт "своего пошлого ДоС'a" - ты красиво сказал...
Может и мне послать тебя куданибудь почитать как эти же купные провайдеры отбились от этих же спамеров?
Это было бы чисто в твоём стиле...

А по существу я понял что ты в соответсвии со своим статусом ("Раздолбай") , считаешь , что если Микрософт заранее отключает серверы в дни ожидаемых атак - то и все попытки защищать свои персональные сервера - безсмысленны.
Если ты не заметил или плохо читаешь - я повторю вопрос поднятый в этой тебе - "Народ - подскажите , как эффективнее защищаться от тех юзеров , которые пытаются сотню раз в секунду нажать рефреш , и таким образом загрузить сервер запросами?" Так что давай по теме , а не про распределённые атаки или инопланетян... :(
 

Фанат

oncle terrible
Команда форума
для начла надо узнать, откуда берутся такие юзеры-мутанты, как справедливо заметил Demiurg

Судя по всему, речь идет таки не об атаке, а о совершенно детской забаве.
И не о сотнях нажатий, а максимум - о десятках.
И не роутер тут нужен, а вполне достаточно будет диминого нофлуда,
php.spb.ru в зубы - и вперед.
А плакать иди к своей мамочке.
 

Роберт

Аналитик
Фанат
Ты точно не читаешь прежде чем отвечать... :(
На вопрос Demiurg я сразуже ответил - "Вопервых не обязательно нажимать на кнопку с частотой 100 герц. Достаточно всего один раз нажать на неё и не отпускать и начнётся автоповтор". И ни кто не обещал сотнИ запросов. Найди мне такую строку! Ты тему прочти! Сто запросов , а не сотнИ. А "библию РНР программистов" (php.spb.ru) тут и так все наизусть знают. Впрочем неудивительно - ты же разумеется не читал строки - "блокируем IP на 10 минут если она зашёл 5 раз за секунду..." Только блокировать таким образом надо не на уровне РНР приложения , а на уровне фаирвола...
P.S. Если ты по любому поводу ходишь плакать к мамочке - не советуй это другим... Засмеют! :)
 

ForJest

- свежая кровь
Фанат
Ты ничего не понял в теме, а вставляешь свои пять копеек. Ты вообще внимательно прочитал тред?
Роберт
Вообще это проблема конфигурации исключительно. Если есть внешнее приложение - нужно найти такое, которое бы не требовало перезапуска.
К тому же - чем тебя не устраивает перезапуск? Долго выполняется или что?

-~{}~ 18.10.04 23:46:

Фанат
Я тебе даже объясню.
Когда стоит защита от флуда на PHP - это значит, что флудер всё равно запускает процесс апача. А значит уже жрутся лишние ресурсы.
Если приложение по своим критериям определило, что идёт флуд - почему бы не сообщить об этом файрволу к примеру? С целью просто отсечь соединение, а не идти долгим путём
Запуск апача, парсинг скрипта, выполнение скрипта, завершение скрипта.
Если есть путь Флудер пришёл - в соединении отказано.
Это не панацея, но решение куда более интересное и здравое, чем защита самого приложения.
--------------
Роберт
Вообще приложение обладает большей полнотой ин-ции чем тот же файрвол - у пользователя есть сессия или что там ещё. А файрвол может оперировать лишь сетевыми аттрибутами - IP там, port - он же не будет заниматься парсингов HTTP запроса...
 

XiMiK

Новичок
А зачем ещё и парсингом HTTP запроса заниматся? Решение проблемы уже найдено: блокировать IP по 80-ому порту при завышенной частоте подключений. Никакой нормальный юзер обновлять страницу чаще чем в пол секунды не будет.
 

Роберт

Аналитик
Именно это и хочется! :)
Чтобы можно было бы прописать куда-то правила , типа:
---
блокируем IP на 10 минут если она зашёл 5 раз за секунду
блокируем IP на 30 минут если она зашёл 50 раз за минуту
блокируем IP на 5 суток если она зашёл 1000 раз за час
---
Плюс к этому , чтобы мои скрипты могли передовать этому блокиратору тех кого выявили сами (например если на каждий странице нажимается скрытая невидимая ссылка - то значит не человек это , а программа сайт сдирает). Тоесть для этого должен быть внешний файл в которого можно вносить строки типа:
---
блокировать 10.10.10.10 до 10.10.2004 10:10:10
блокировать 10.20.20.20 до 20.10.2004 20:20:20
---
Чтобы программа замечала изменения в нём без перезапуска (туда ведь мой скрипт будет писать данные , а на запуск у него прав не будет) , а после истечения времени бана автоматически лишние строчки удалялисьбы (чтобы файл не перегружался).

Вроде по Тониной ссылке понял что Iptables способен выполнять "завышение частоты подключения" (хотя пока и не разобрался как) , а вот второе похоже не получится. Да и слишком громосткая вещь Iptables. Может есть что поменьше? Не у меня ведь первого голова по этому поводу болит. :)
 

ForJest

- свежая кровь
Роберт
А что тебе мешает организовать процесс, который будет иметь нужные привилегии?
А с помощью PHP просто писать некий файл - который тот порцесс будет анализировать/добавлять в конфиг и перезапускать, если нужно.
Т.е. связь по данным.
 

Роберт

Аналитик
ForJest
Поясни - что ты имел в виду?
У меня на сайте форумы и десяток разных разделов. Ты хочешь чтобы я вставлял защиту во все эти файлы? (в одном только формуме 20 запускаемых .php файлов)
Я считаю что блокировка должна вестись до работы Апача! Другое дело , что в некоторых разделах будут датчики на нехорошесть пользователей и они будут заполнять файлы блокировки для фаирвола. Вопрос только в его выборе (чтобы он на лету подхватывал новые списки банов).
 

ys

отодвинутый новичок
Роберт

По поводу, что firewall может сделать сам (если это настроить):

1. Уменьшить вероятность возникновения SYN флуда.
When the firewall’s setup proxy is enabled, any new connections are firstly established with the firewall before they are established with the private host.

2. Ограничить число одновременных соединений:
клиент -> хост:порт.

3. Ограничить число попыток соединений за единицу времени к хосту по определенному порту.

P.s: третий пункт может иметь побочные эффекты, т.к. комплексная страница сайта - это не только один html файл, а еще и ссылки на картинки, которые могут подгружаются отдельным соединением к хосту (не все же клиенты поддерживают Keep Alive).
 

ForJest

- свежая кровь
Да и бывает что "плохого" пользователя определяет мой скрипт РНР. А как ему передать фаирволу , чтобы тот его отключил на строго определённое время?
Вот это я имел ввиду.
 
Сверху