Jump to content

Recommended Posts

Добрый день!

 

Сегодня смотрю, кто-то решил атаковать с одного IP. Гостей в он-лайне форума стало более 20000! Раз-через-раз форум стал выдавать ошибки в браузере "503 service unavailable...".

В списке гостей форума обнаружил IP (к счастью, атаковали с одного IP), с которого ведется атака. Забанил IP, потом в настройках безопасности поставил проверку IP и браузера в сессиях и уровень гостей в он-лайне упал.

С моим хостингом такая договорённость... на уровне сервера защита ведется хостером, на уровне сайта защиту своих сайтов должен устанавливать пользователь. В моем случае, я защитил форум от атаки с одного айпи. А если бы атака на форум велась с разных айпи, что делать? Может быть есть какие-то решения? Конечно, я понимаю, при серьезной атаке на форум (а следовательно, и на сервер) с разных айпи, я могу обратиться к хостеру и попросить устранить проблему сообща, но всё же может быть есть решение на уровне форума?

Link to comment
Share on other sites

Анализировать логи и забанить ип-адреса с которых идут аномально частые обращения. Как правило это делается специальным скриптом, который в определенным интервале времени анализирует логи обращений, проверяет если адреса не принадлежат ПС и, если частота обращений превышает определенное количество ип банится через htaccess или вносятся сразу в iptables.

Также можно посмотреть к каким странам принадлежат атакующие ИП и забанить всю страну, например Китай, Тайвань, Африка и тд, т.е. оттуда откуда у вашего ресурса маловероятно может быть целевая аудитория.

Еще можно организовать защиту с помощью JS - при заходе на форум, либо при слишком частом обращение, нужно подтвердить что вы не бот, при этом с помощью JS устанавливается специальная кука, которая проверяется скриптом. Если например после пяти неудачных обращений кука не была установлена - ип банится.

 

В данном случае видим что ИП один а сессии очень много, в ввиду того, что бот не принимает кукисов. Отфильтровать такие ип в сессиях форума можно с помощью запроса:

 

SELECT ip_address, COUNT(*) as count, member_id, browser FROM sessions GROUP BY ip_address ORDER BY count DESC

Смотрим у какого большое количество сессии с одного адреса - у нормальных пользователей с одного ип как правило одна сессия, убеждаемся что это не ПС, дополнительно можно прочекать по смам базам и баним его в htaccess. Главное при этом какого нибудь поискового бота гугла, яндеса или майла не забанить. Последний как раз имеет такую особенность, что может разом начать сканировать весь сайт в многопоточном режиме.

 

Если сервер выделенный/виртуальный можно ставить ограничения на уровне web-сервера для одновременного подключения в секунду, или общее количество установленных соединений. На nginx это limit_conn_module.

 

Помогите с защитой от DDoS

Для совсем запущенных случаях JavaScript не дружит с IPB?

  • Upvote 2
Link to comment
Share on other sites

Если сервер выделенный/виртуальный можно ставить ограничения на уровне web-сервера для одновременного подключения в секунду, или общее количество установленных соединений. На nginx это limit_conn_module.
Скажите, а можно ли подобное ограничение поставить на уровне форума через php.ini, и в какой директиве задается ограничение? И вот интересный вопрос, а каким образом происходит ограничение? Сервер перестает принимать запросы от с повторных ипов, с которых идет флуд?

 

ип банится через htaccess или вносится сразу в iptables
Подскажите, как это реализовать...
Link to comment
Share on other sites

Скажите, а можно ли подобное ограничение поставить на уровне форума через php.ini

php.ini это конфигурационный файл php, а здесь речь идет о настройках веб сервера, и конкретно про nginx. Наверное и на апаче есть аналогичные модули. Как происходит блокировка или ограничение нужно детальнее прочитать в документации конкретно к этому модулю. Вообще желательно хорошо изучить настройку подобных модулей, дабы не перзабавнить половину пользователей. limit_conn насколько я знаю ограничивает количество подключений или в целом, или в интервале времени.

 

Подскажите, как это реализовать...

Deny from ип_адресс

  • Upvote 1
Link to comment
Share on other sites

Deny from ип_адресс
Скажите, а в чём принципиальная разница между "Deny from ип_адресс" и стандартным функционалом форума (бан айпи адреса через АЦ)?
Link to comment
Share on other sites

Разница довольно принципиальна.

В первом случае вы баните на уровне веб-сервера через конфигурационный файл htaccess.

Во втором случае на уровне форума, для которого тратятся ресурсы на запуск пхп, подключения к базе данных, обработка массива данных пользователя и тд. Если обращения идут с целю отказа в обслуживании сервера, то большой принципиальной разницы нету - запуск форума все равно отработает. Немного увеличив число обращений можно добиться того же эффекта, что сервер начнет жрать ресурсы и отказывать в обслуживание. Концепция эффективной защиты от ddos'а состоит в блокировке как можно на более высоком уровне. В случае бана на уровне htaccess, веб-сервер сам отрубает запрос и не запускает php (форум) для его обработки. Блокировка на уровне iptables еще эффективнее, в таком случае не запускается веб-сервер для обработки запроса, а отрубается на уровне ОС, и тд.

Link to comment
Share on other sites

siv1987, спасибо! Но, вы же сами понимаете, если пойдет атака на сервер с 1000 разных айпи, то это не решит моментально создавшуюся проблему. А пока будем решать, хостер забанит аккаунт за то, что мы своим действием (или бездействием) положили сервер.

Поэтому, хочется что-то более функциональное и продуманное.

Я тут накидал немного идей, может кто сможет воплотить и дополнить (усовершенствовать), критика и помидоры так же приветствуются:

 

Итак, суть программы будет заключаться в следующем... В инете достаем базу диапазонов айпишников Гугла, Яндекса, Майла и других поисковиков, которым мы хотим дать беспрепятственный доступ к нашему форуму. Ну и создаем программу, логика которой будет состоять в том, чтобы банить любые айпи на форуме (и лишать их всякой активности в отношении обращений к БД, например, на 20 секунд), имеющих активность более 5-х запросов с одного IP в секунду (кроме указанных выше IP поисковиков и иных статичных нужных нам айпи).

Edited by Асид
Link to comment
Share on other sites

Но, вы же сами понимаете, если пойдет атака на сервер с 1000 разных айпи, то это не решит моментально создавшуюся проблему.

Смотря что "это" у вас будет.

 

Все анти-ddos скрипты работают примерно по этому принципу. В сети их должно быть полно. Предварительно чем блокировать можно дать решить капчу, и уменьшить процент срабатываний.

Link to comment
Share on other sites

Перерыл кучу разных сайтов, в итоге решил остановиться на этом.

Как считаете, стоящее решение?

 

И ещё... почему-то при загрузке файлов на форум (проверял на картинках) через расширенную форму, пишет: "Возникла ошибка при загрузке файла". С чем это может быть связано?

Edited by Асид
Link to comment
Share on other sites

Наверное отсутсвует формат для этого прикрепляемого файла.

 

Ну отбить ботов от форума поможет, а дальше зависит от мощности сервера и типа ддос. Ставить на рабочем форуме, если нет никакой атаки лучше не следует. Могут быть проблемы у пс ботов и пользователей которые отключили кукисы.

  • Upvote 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...