За последние 24 часа нас посетил 18161 программист и 1629 роботов. Сейчас ищут 1500 программистов ...

Постоянное сканирование базы information_schema

Тема в разделе "MySQL", создана пользователем Nazorei, 16 дек 2008.

  1. Nazorei

    Nazorei Активный пользователь

    С нами с:
    1 фев 2007
    Сообщения:
    228
    Симпатии:
    0
    Постоянно к базе information_schema выполняются запросы

    Код (Text):
    1.  
    2. SELECT *,
    3.                     `TABLE_SCHEMA`       AS `Db`,
    4.                     `TABLE_NAME`         AS `Name`,
    5.                     `ENGINE`             AS `Engine`,
    6.                     `ENGINE`             AS `Type`,
    7.                     `VERSION`            AS `Version`,
    8.                     `ROW_FORMAT`         AS `Row_format`,
    9.                     `TABLE_ROWS`         AS `Rows`,
    10.                     `AVG_ROW_LENGTH`     AS `Avg_row_length`,
    11.                     `DATA_LENGTH`        AS `Data_length`,
    12.                     `MAX_DATA_LENGTH`    AS `Max_data_length`,
    13.                     `INDEX_LENGTH`       AS `Index_length`,
    14.                     `DATA_FREE`          AS `Data_free`,
    15.                     `AUTO_INCREMENT`     AS `Auto_increment`,
    16.                     `CREATE_TIME`        AS `Create_time`,
    17.                     `UPDATE_TIME`        AS `Update_time`,
    18.                     `CHECK_TIME`         AS `Check_time`,
    19.                     `TABLE_COLLATION`    AS `Collation`,
    20.                     `CHECKSUM`           AS `Checksum`,
    21.                     `CREATE_OPTIONS`     AS `Create_options`,
    22.                     `TABLE_COMMENT`      AS `Comment`
    23.                FROM `information_schema`.`TABLES`
    24.               WHERE BINARY `TABLE_SCHEMA` IN ('myuserbase')
    25.                  LIMIT 250 OFFSET 0;
    (запросов много и сервер mysql почти в даун уходит)

    это информация из файла slow.log,
    мне кажется что нужно запретить доступ к этой базе юзерам (чтобы хакеры не select-ли), но как это сделать?
    кто знает подскажите, или может быть у кого подобная ситуация была, буду благодарен.
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Nazorei
    Запретить никак. Это виртуальная база, и к ней имеют доступ все, у кого есть привилегия SHOW.
    Надо не доступ обрубать, а выяснять, что за приложение постоянно делает такие запросы. Ибо действительно очень смахивает на DoS-атаку на сервер. Посмотри, что за приложение имеет доступ к базе myuserbase.
     
  3. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Вообще, information_schema представляется очередной дырой в MySQL 5. Отключить ее никак (пока ведутся только разговоры), а при наличии любой SQL-инъекции теперь можно при помощи UNION и в структуру таблиц влезть, со старым синтаксисом это было невозможно. В общем, хотели как лучше.
     
  4. Nazorei

    Nazorei Активный пользователь

    С нами с:
    1 фев 2007
    Сообщения:
    228
    Симпатии:
    0
    Dagdamor
    Это и есть DoS, в штатном режиме база загружена на 0.5-1%,
    а как начинают - 10% и до аж 90%, иногда до 100% и муск перестает отвечать..

    Помогает при дауне мускуля - рестарт апача или mysql.

    А можно ли как-то программно выявить загруженность mysql?

    (тогда можно было скрипт написать - если загрузка >= 90% - рестарт mysql)
     
  5. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Nazorei
    Я еще раз говорю, лечить надо не симптомы, а причину болезни.
    Ищи дыру в скрипте, или хотя бы виртуальный хост, через который тебя досят.
     
  6. Nazorei

    Nazorei Активный пользователь

    С нами с:
    1 фев 2007
    Сообщения:
    228
    Симпатии:
    0
    Dagdamor
    Дело в том что на сервере только один хост, и он использует библиотеку PDO MySQL,
    и где и откуда копать если там скул инъекции не проходят.. + все реквесты фильтруются.

    Включил модуль mod_status > server-status -- никакого намека на скул.. хотя ддос все ещё шел(

    ---

    спустя 15 минут наконец-то перестали ддосить)
    но уязвимость осталась...
     
  7. Кстати, привелегию SHOW вполне можно отобрать. Для нормальной работы приложений она редко когда нужна, а если нужна, ее можно раздавать частично.
     
  8. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Nazorei
    Если в каком-нибудь из скриптов есть фрагмент типа
    PHP:
    1. eval($_REQUEST["c"]);
    то уверяю тебя, можно выполнить любой запрос, и через PDO, и в обход него.
    Простейший способ - челу впаривают троян, который ворует у него FTP доступ или прямо на месте закачивает эксплойт на сайт.
     
  9. Nazorei

    Nazorei Активный пользователь

    С нами с:
    1 фев 2007
    Сообщения:
    228
    Симпатии:
    0
    Нет нет, eval вообще нигде не используется.

    А все реквесты перед использование обрабатываются strip_tags() функцией..

    --
    в общем если опять начнут ддосить и посильнее, то попробую действительно убрать SHOW, по крайней мере пока не найдется другое решение.
     
  10. Frozen

    Frozen Активный пользователь

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    strip_tags() ваще из другой оперы.