Одмин Posted August 9, 2014 Share Posted August 9, 2014 Добрый день! Сегодня смотрю, кто-то решил атаковать с одного IP. Гостей в он-лайне форума стало более 20000! Раз-через-раз форум стал выдавать ошибки в браузере "503 service unavailable...".В списке гостей форума обнаружил IP (к счастью, атаковали с одного IP), с которого ведется атака. Забанил IP, потом в настройках безопасности поставил проверку IP и браузера в сессиях и уровень гостей в он-лайне упал.С моим хостингом такая договорённость... на уровне сервера защита ведется хостером, на уровне сайта защиту своих сайтов должен устанавливать пользователь. В моем случае, я защитил форум от атаки с одного айпи. А если бы атака на форум велась с разных айпи, что делать? Может быть есть какие-то решения? Конечно, я понимаю, при серьезной атаке на форум (а следовательно, и на сервер) с разных айпи, я могу обратиться к хостеру и попросить устранить проблему сообща, но всё же может быть есть решение на уровне форума? Link to comment Share on other sites More sharing options...
siv1987 Posted August 9, 2014 Share Posted August 9, 2014 Анализировать логи и забанить ип-адреса с которых идут аномально частые обращения. Как правило это делается специальным скриптом, который в определенным интервале времени анализирует логи обращений, проверяет если адреса не принадлежат ПС и, если частота обращений превышает определенное количество ип банится через 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? 2 Link to comment Share on other sites More sharing options...
Одмин Posted August 9, 2014 Author Share Posted August 9, 2014 Если сервер выделенный/виртуальный можно ставить ограничения на уровне web-сервера для одновременного подключения в секунду, или общее количество установленных соединений. На nginx это limit_conn_module.Скажите, а можно ли подобное ограничение поставить на уровне форума через php.ini, и в какой директиве задается ограничение? И вот интересный вопрос, а каким образом происходит ограничение? Сервер перестает принимать запросы от с повторных ипов, с которых идет флуд? ип банится через htaccess или вносится сразу в iptablesПодскажите, как это реализовать... Link to comment Share on other sites More sharing options...
siv1987 Posted August 9, 2014 Share Posted August 9, 2014 Скажите, а можно ли подобное ограничение поставить на уровне форума через php.iniphp.ini это конфигурационный файл php, а здесь речь идет о настройках веб сервера, и конкретно про nginx. Наверное и на апаче есть аналогичные модули. Как происходит блокировка или ограничение нужно детальнее прочитать в документации конкретно к этому модулю. Вообще желательно хорошо изучить настройку подобных модулей, дабы не перзабавнить половину пользователей. limit_conn насколько я знаю ограничивает количество подключений или в целом, или в интервале времени. Подскажите, как это реализовать...Deny from ип_адресс 1 Link to comment Share on other sites More sharing options...
Одмин Posted August 9, 2014 Author Share Posted August 9, 2014 Deny from ип_адресс Скажите, а в чём принципиальная разница между "Deny from ип_адресс" и стандартным функционалом форума (бан айпи адреса через АЦ)? Link to comment Share on other sites More sharing options...
siv1987 Posted August 9, 2014 Share Posted August 9, 2014 Разница довольно принципиальна.В первом случае вы баните на уровне веб-сервера через конфигурационный файл htaccess.Во втором случае на уровне форума, для которого тратятся ресурсы на запуск пхп, подключения к базе данных, обработка массива данных пользователя и тд. Если обращения идут с целю отказа в обслуживании сервера, то большой принципиальной разницы нету - запуск форума все равно отработает. Немного увеличив число обращений можно добиться того же эффекта, что сервер начнет жрать ресурсы и отказывать в обслуживание. Концепция эффективной защиты от ddos'а состоит в блокировке как можно на более высоком уровне. В случае бана на уровне htaccess, веб-сервер сам отрубает запрос и не запускает php (форум) для его обработки. Блокировка на уровне iptables еще эффективнее, в таком случае не запускается веб-сервер для обработки запроса, а отрубается на уровне ОС, и тд. Link to comment Share on other sites More sharing options...
Одмин Posted August 9, 2014 Author Share Posted August 9, 2014 (edited) siv1987, спасибо! Но, вы же сами понимаете, если пойдет атака на сервер с 1000 разных айпи, то это не решит моментально создавшуюся проблему. А пока будем решать, хостер забанит аккаунт за то, что мы своим действием (или бездействием) положили сервер.Поэтому, хочется что-то более функциональное и продуманное.Я тут накидал немного идей, может кто сможет воплотить и дополнить (усовершенствовать), критика и помидоры так же приветствуются: Итак, суть программы будет заключаться в следующем... В инете достаем базу диапазонов айпишников Гугла, Яндекса, Майла и других поисковиков, которым мы хотим дать беспрепятственный доступ к нашему форуму. Ну и создаем программу, логика которой будет состоять в том, чтобы банить любые айпи на форуме (и лишать их всякой активности в отношении обращений к БД, например, на 20 секунд), имеющих активность более 5-х запросов с одного IP в секунду (кроме указанных выше IP поисковиков и иных статичных нужных нам айпи). Edited August 9, 2014 by Асид Link to comment Share on other sites More sharing options...
siv1987 Posted August 9, 2014 Share Posted August 9, 2014 Но, вы же сами понимаете, если пойдет атака на сервер с 1000 разных айпи, то это не решит моментально создавшуюся проблему.Смотря что "это" у вас будет. Все анти-ddos скрипты работают примерно по этому принципу. В сети их должно быть полно. Предварительно чем блокировать можно дать решить капчу, и уменьшить процент срабатываний. Link to comment Share on other sites More sharing options...
Одмин Posted August 10, 2014 Author Share Posted August 10, 2014 (edited) Перерыл кучу разных сайтов, в итоге решил остановиться на этом.Как считаете, стоящее решение? И ещё... почему-то при загрузке файлов на форум (проверял на картинках) через расширенную форму, пишет: "Возникла ошибка при загрузке файла". С чем это может быть связано? Edited August 10, 2014 by Асид Link to comment Share on other sites More sharing options...
siv1987 Posted August 10, 2014 Share Posted August 10, 2014 Наверное отсутсвует формат для этого прикрепляемого файла. Ну отбить ботов от форума поможет, а дальше зависит от мощности сервера и типа ддос. Ставить на рабочем форуме, если нет никакой атаки лучше не следует. Могут быть проблемы у пс ботов и пользователей которые отключили кукисы. 1 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now