Есть ли способы настроить источники MediaWiki для более быстрого отклонения анонимных запросов?

Один из наших проектов на базе MediaWiki, похоже, подвергся DoS-атаке - необычное количество анонимных пользователей пытается редактировать страницы и просматривать или редактировать запросы истории. Хотя анонимное редактирование отключено в этом проекте, и эти анонимные пользователи (я предполагаю, боты) не могут фактически изменять страницы, нагрузка достаточно серьезна, чтобы значительно замедлить сервер.

Похоже, одна из идей - изменить PHP-код MediaWiki, чтобы быстрее отклонять анонимные запросы. Анонимным посетителям нужно только просматривать страницы; они не должны редактировать, просматривать источники страниц или просматривать историю. Еще интереснее было бы использовать что-то вроде IPTables для экранирования по этому критерию. У нас есть root-доступ к серверу.

Можно ли изменить PHP или использовать какой-либо внешний инструмент для эффективного блокирования всех анонимных запросов MediaWiki, кроме просмотра содержимого статьи?

Я прочитал и продолжаю смотреть более общий вопрос о защите от DoS здесь и здесь. Причина публикации этого отдельно в том, что, возможно, мы могли бы сделать что-то особенное для MediaWiki.


person Audrius Meskauskas    schedule 29.01.2013    source источник
comment
Это действительно прискорбно, но это не совсем по теме для этого сайта. Может быть, было бы более подходящим вариантом SuperUser или даже ServerFault?   -  person LittleBobbyTables - Au Revoir    schedule 29.01.2013
comment
Причина, по которой я публикую здесь, заключается в том, что мы разработчики и готовы изменить исходный код MediaWiki, чтобы справиться с нашими проблемами. Пожалуйста, не публикуйте общие удобные решения для конечных пользователей, мы уже испробовали большинство таких подходов. Отключить анонимное редактирование через веб-интерфейс очень легко, но, похоже, запросы отбрасываются недостаточно рано.   -  person Audrius Meskauskas    schedule 29.01.2013
comment
@Leigh Интересно, почему ты здесь так решительно настроен? Есть еще множество других вопросов о том, как писать и настраивать приложения, устойчивые к DoS.   -  person Audrius Meskauskas    schedule 05.02.2013


Ответы (1)


Вы пробовали изменить права пользователей? В документации MediaWiki показано, как отредактировать LocalSettings.php для установки прав.

Как и в случае с брандмауэром, вы должны начать с запрета всех прав редактирования, а затем снова добавить его для групп, которые вы хотите разрешить (например, зарегистрированных пользователей).

Из их руководства http://www.mediawiki.org/wiki/Manual:User_rights

This example will disable editing of all pages, then re-enable for 
users with confirmed e-mail addresses only:


 # Disable for everyone.
 $wgGroupPermissions['*']['edit']              = false;
 # Disable for users, too: by default 'user' is allowed to edit, even if '*' is not. 
 $wgGroupPermissions['user']['edit']           = false;
 # Make it so users with confirmed e-mail addresses are in the group.
 $wgAutopromote['emailconfirmed'] = APCOND_EMAILCONFIRMED;
 # Hide group from user list. 
 $wgImplicitGroups[] = 'emailconfirmed';
 # Finally, set it to true for the desired group.
 $wgGroupPermissions['emailconfirmed']['edit'] = true;
person Shannon Russell    schedule 29.01.2013
comment
Отличается ли это от простой настройки отключения анонимного редактирования через веб-интерфейс? Мы сделали это давным-давно - person Audrius Meskauskas; 29.01.2013
comment
Нет, наверное, то же самое. Вы проверили свои журналы http? даже если есть DDOS, иногда они делают что-то простое неправильно, например, используют пользовательский агент, который вы можете заблокировать в Apache. Блокировка до того, как PHP раскрутится, будет лучше, чем любое решение in-php. Вы также можете использовать обратный прокси-сервер, например фунт перед сервером, чтобы уменьшить нагрузку, но это может быть сложно сделать правильно на одном устройстве. - person Shannon Russell; 29.01.2013