Постоянно к базе information_schema выполняются запросы Код (Text): SELECT *, `TABLE_SCHEMA` AS `Db`, `TABLE_NAME` AS `Name`, `ENGINE` AS `Engine`, `ENGINE` AS `Type`, `VERSION` AS `Version`, `ROW_FORMAT` AS `Row_format`, `TABLE_ROWS` AS `Rows`, `AVG_ROW_LENGTH` AS `Avg_row_length`, `DATA_LENGTH` AS `Data_length`, `MAX_DATA_LENGTH` AS `Max_data_length`, `INDEX_LENGTH` AS `Index_length`, `DATA_FREE` AS `Data_free`, `AUTO_INCREMENT` AS `Auto_increment`, `CREATE_TIME` AS `Create_time`, `UPDATE_TIME` AS `Update_time`, `CHECK_TIME` AS `Check_time`, `TABLE_COLLATION` AS `Collation`, `CHECKSUM` AS `Checksum`, `CREATE_OPTIONS` AS `Create_options`, `TABLE_COMMENT` AS `Comment` FROM `information_schema`.`TABLES` WHERE BINARY `TABLE_SCHEMA` IN ('myuserbase') LIMIT 250 OFFSET 0; (запросов много и сервер mysql почти в даун уходит) это информация из файла slow.log, мне кажется что нужно запретить доступ к этой базе юзерам (чтобы хакеры не select-ли), но как это сделать? кто знает подскажите, или может быть у кого подобная ситуация была, буду благодарен.
Nazorei Запретить никак. Это виртуальная база, и к ней имеют доступ все, у кого есть привилегия SHOW. Надо не доступ обрубать, а выяснять, что за приложение постоянно делает такие запросы. Ибо действительно очень смахивает на DoS-атаку на сервер. Посмотри, что за приложение имеет доступ к базе myuserbase.
Вообще, information_schema представляется очередной дырой в MySQL 5. Отключить ее никак (пока ведутся только разговоры), а при наличии любой SQL-инъекции теперь можно при помощи UNION и в структуру таблиц влезть, со старым синтаксисом это было невозможно. В общем, хотели как лучше.
Dagdamor Это и есть DoS, в штатном режиме база загружена на 0.5-1%, а как начинают - 10% и до аж 90%, иногда до 100% и муск перестает отвечать.. Помогает при дауне мускуля - рестарт апача или mysql. А можно ли как-то программно выявить загруженность mysql? (тогда можно было скрипт написать - если загрузка >= 90% - рестарт mysql)
Nazorei Я еще раз говорю, лечить надо не симптомы, а причину болезни. Ищи дыру в скрипте, или хотя бы виртуальный хост, через который тебя досят.
Dagdamor Дело в том что на сервере только один хост, и он использует библиотеку PDO MySQL, и где и откуда копать если там скул инъекции не проходят.. + все реквесты фильтруются. Включил модуль mod_status > server-status -- никакого намека на скул.. хотя ддос все ещё шел( --- спустя 15 минут наконец-то перестали ддосить) но уязвимость осталась...
Кстати, привелегию SHOW вполне можно отобрать. Для нормальной работы приложений она редко когда нужна, а если нужна, ее можно раздавать частично.
Nazorei Если в каком-нибудь из скриптов есть фрагмент типа PHP: eval($_REQUEST["c"]); то уверяю тебя, можно выполнить любой запрос, и через PDO, и в обход него. Простейший способ - челу впаривают троян, который ворует у него FTP доступ или прямо на месте закачивает эксплойт на сайт.
Нет нет, eval вообще нигде не используется. А все реквесты перед использование обрабатываются strip_tags() функцией.. -- в общем если опять начнут ддосить и посильнее, то попробую действительно убрать SHOW, по крайней мере пока не найдется другое решение.