Сайт лежит от потока спама в комментах

Главные вкладки

Аватар пользователя PC_M@niac PC_M@niac 5 ноября 2010 в 19:57

На сайте открыто комментирование для гостей, комменты фильтруются посредством Mollom. Есть несколько страниц, в которые постоянно льют спам из-за их высокого ранга по некоторым запросом (1-я страница выдачи). Стабильно mollom отшибает по 200-300 сообщений в сутки с пиками до 1000.

Неделю назад сайт слёг полностью, постоянно висит ошибка о том, что пользователь исчерпал максимальное кол-во подключений к БД. Узнавал у хостера, у них 'max_user_connections' установлено в 10 и менять они не планируют.

По вечерам волна спадает и я могу зайти в админку дабы поковыряться в настройках. Первое что сделал - активировал throttle и настроил его на отключение модуля comments при 10 одновременных гостевых сессиях, но не помогло - с утра снова слёг. Ещё три дня игрался с throttle и cache - ни к чему не привело.

Вчера поставил no_anon и boost - отключил создание сессий для анонимусов и перевёл кеширование для анонимусов на статику мимо БД. Результат - главная страница открывается шустро, явно со статики. По остальным адресам наблюдаю прежнюю картину.

Как быть, что ещё попробовать?

Полное отключение комментов - крайняя мера, и хотелось бы её избежать.

Менять хостера не советуйте. Сайт стабильно держит хабраэффект. После публикации обзора одной железки было 1500 заходов на этот и 7500 на другой - оба живут в одной учётке хостера и с аналогичным конфигом (Drupal 6 + views + ccs + etc...). Причём статика (около 1Мб графики) раздавалась с этого-же сервака и была вставлена в статью на хабре с 20000+ просмотрами. И это всё за первый день после публикации.

Из всего вышеприведённого хочу спросить, неужели mollom виноват?
Другой причины не вижу - кэш справлялся раньше с существенной нагрузкой, даже работая через БД. Сейчас через статику и всё-равно не помогает.

Комментарии

Аватар пользователя edhel edhel 5 ноября 2010 в 20:34

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

Можно покопать и в сторону mollom — времено отключите его и в правах поставьте, чтобы новые комментарии не публиковались анонимами. Посмотрите поможет или нет.

Аватар пользователя PC_M@niac PC_M@niac 5 ноября 2010 в 20:53

Да, была мысль отключить комментирование вообще. Отключать только mollom нельзя т.к. задолбаюсь потом удалять комменты.

Про атаку медленными сессиями я читал, и вроде как у апача даже есть от этого какая-то защита. Не в курсе, может я могу как-то ограничить время сессии через .htaccess или php.ini? Это всё что мне доступно из серверных настроек.

Для начала попробую пока отключить комментирование.

Аватар пользователя PC_M@niac PC_M@niac 5 ноября 2010 в 21:37

Нашёл настройки PHP

max_execution_time integer
This sets the maximum time in seconds a script is allowed to run before it is terminated by the parser. This helps prevent poorly written scripts from tying up the server. The default setting is 30. When running PHP from the command line the default setting is 0.

The maximum execution time is not affected by system calls, stream operations etc. Please see the set_time_limit() function for more details.

You can not change this setting with ini_set() when running in safe mode. The only workaround is to turn off safe mode or by changing the time limit in the php.ini.

Your web server can have other timeout configurations that may also interrupt PHP execution. Apache has a Timeout directive and IIS has a CGI timeout function. Both default to 300 seconds. See your web server documentation for specific details.

max_input_time integer
This sets the maximum time in seconds a script is allowed to parse input data, like POST, GET and file uploads.

Буду копать в эту сторону

Аватар пользователя Geldora Geldora 6 ноября 2010 в 1:15

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

От Моллома, я кстати избавилась: меня спасает набор ре_капча + блок_анонимус_линкс (классное средство!) + у меня отключено поле для дом.страницы в комментариях.

Аватар пользователя batbug batbug 6 ноября 2010 в 8:53

"Dan" wrote:
Решилось - отключением комментирования конкретно для этих статей (т.к. статьи были старые и вообще без "человеческих" комментариев, там просто информация).

Поддерживаю.

"Geldora" wrote:
блок_анонимус_линкс (классное средство!)

Совершенно верно, с небольшими доработками напильником так вообще средство №1 против анон-спама.

"Geldora" wrote:
отключено поле для дом.страницы в комментариях.

Это просто первый шаг, который надо сделать при запуске своего сайта. Как только убрал это поле, так сразу потом спам-ботов уменьшился.

Аватар пользователя petrovnn petrovnn 7 ноября 2010 в 19:27

По медленным сессиям соображение такое.
Изначально сессия в журнале сессий хранится 3 дня. Можно настроить время жизни сессии существенно меньше, ну допустим 45 минут, или можно еще меньше, как пойдет. Конечно для этого нужно будет настроить крон чтобы он запускал удаление просроченных сессий по расписанию.

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

И еще, вот на хабре недавно хорошая статья была про анти-спам, может наведет на размышления http://habrahabr.ru/blogs/spam/107286/

Аватар пользователя edhel edhel 7 ноября 2010 в 19:52

"petrovnn" wrote:
Изначально сессия в журнале сессий хранится 3 дня.

Медленные, но не настолько же) Выше "медленные сессии" имелись ввиду другие, TCP-соединения имелись ввиду.

Аватар пользователя PC_M@niac PC_M@niac 9 ноября 2010 в 12:18

"Ветер" wrote:
Если автоматом льют, то попробуйте поставить задержку на кнопку сохранить комментарий секунд на 20.

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

Очень не хочется отключать комментарии. Тут чисто спортивный интерес - кто кого Smile
"Geldora" wrote:
От Моллома, я кстати избавилась: меня спасает набор ре_капча + блок_анонимус_линкс (классное средство!) + у меня отключено поле для дом.страницы в комментариях.

Моллом удобен тем, что капчу показывает только подозрительным личностям - так легче писать комменты живым людям. Раньше стоял SPAM, но из-за него отправка комментов была оооочень ресурсоёмким процессом. База раздулась в несколько раз. И при всём при этом я наблюдал 20-50 пропущенных спам-комментов в сутки. С Молломом их 1-2 в месяц. Насчёт блокировки ссылок - это как презумпция виновности: "все по-определению спаммеры", не хотелось бы. Буду пока другие методы пробовать, но в любом случае спасибо за совет.
"Dan" wrote:
Капча какая стоит?

У Моллома своя. Он её показывает если по каким-либо причинам не понравился текст коммента.
"petrovnn" wrote:
Моллом я использовать остерегаюсь из-за ограничений бесплатной версии, и как-бы не хочу на него подсаживаться. Погугли.
И еще, вот на хабре недавно хорошая статья была про анти-спам, может наведет на размышления http://habrahabr.ru/blogs/spam/107286/[/quote]
Ограничение моллома в 100 пропущенных корректных комментов для небольших сайтов вполне разумное, мне до него далеко.
Статью читал, но ничего особо нового для себя не увидел. Разве что думаю тестануть Akismet.

Аватар пользователя PC_M@niac PC_M@niac 9 ноября 2010 в 12:34

Пока разбираюсь, отключил комментирование гостями - через 2 дня нагрузка плавно сползла и выплыло то, чего и стоило ожидать - постоянно идут запросы к УРЛе, которой в данный момент нет в интерфейсе. Это доказывает предположение что льют чем-то типа хрумера, минуя запросы к самой странице.

Поиграюсь с akismet - посмотрю как заживёт. Если ничего не выйдет, наверное перейду на OpenID авторизацию а гостям комментирование закрою насовсем.
Кто сталкивался, много спама льют с OpenID авторизацией? Понятно что можно натравить бота или индусскую деревню, но это сложнее (читай "дороже") и проще пресекается.

Аватар пользователя Dan Dan 9 ноября 2010 в 14:25

Включите для анонимом комменты, но показывайте капчу всем!
Опять же: ре_капча + блок_анонимус_линкс.

Аватар пользователя PC_M@niac PC_M@niac 10 ноября 2010 в 12:56

Akismet не понравился, останусь с Mollom. Помогло полное отключение комментариев и уменьшение acceslog'а до 1 дня (была 1 неделя).
Основной поток схлынул, верну комментирование, но с принудительной капчей - посмотрим на результат.

А никто, случаем, не сталкивался с заменой родных acceslog'а и watchdog'а на что-то более производительное?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 10 ноября 2010 в 12:59

"<a href="mailto:PC_M@niac">PC_M@niac</a>" wrote:
А никто, случаем, не сталкивался с заменой родных acceslog'а и watchdog'а на что-то более производительное?

лучше их вырубить и статистику гребсти из того же awstats

Аватар пользователя PC_M@niac PC_M@niac 10 ноября 2010 в 13:14

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

Аватар пользователя Dan Dan 10 ноября 2010 в 14:31

Я сам этой темой не заморачивался, но вроде друпал может юзать syslog системы. Хотя на шаред вряд ли что-то получится.

Аватар пользователя PC_M@niac PC_M@niac 10 ноября 2010 в 19:27

"Dan" wrote:
Я сам этой темой не заморачивался, но вроде друпал может юзать syslog системы. Хотя на шаред вряд ли что-то получится.

Да, на шареде - без вариантов. В идеале - писать логи в файл с ротацией, забирать на себя и локально изучать. Надо будет покопать в эту сторону, может сподоблюсь модуль накатать.

Аватар пользователя PC_M@niac PC_M@niac 12 ноября 2010 в 18:08

Виновник был найден, им оказался backup_migrate, который создавал слишком большую нагрузку при создании резервной копии БД по крону. Он в таком режиме проработал месяца три, но при возросшем потоке спама уложил сайт. Отключение данного модуля позволило вернуть назад и комментирование (Mollom реабилитирован) и хранение аксесслога за длительный период.

Аватар пользователя PC_M@niac PC_M@niac 12 ноября 2010 в 19:27

Удобно было что он делал ежедневные бэкапы БД и слал их почтой на шареде такое сложно автоматизировать. Теперь наверное буду делать Sypex Dumper'ом и забирать по ftp.

Аватар пользователя edhel edhel 12 ноября 2010 в 20:22

У нас на отдельном бэкап-сервере каждую ночь по юниксовому крону делается mysqldump (дампы всех баз хранятся две недели) и rdiff-backup по ssh для бэкапа файлов (/hosts, /etc).

Аватар пользователя PC_M@niac PC_M@niac 12 ноября 2010 в 20:29

На своём серваке я тоже скриптами бэкаплю, сейчас даже городим ZFS пул для бэкапа.
А вот на шареде уже сложнее, там нет доступа к консоли. Зато с шареда у меня ещё лежат бэкапы 2004г, пока не удалял Smile