Возможно вы искали: 'Twisters'

May 15 2025 19:16:24
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » 10+ способов обрушить mysql-сервер (mysql crash security)

10+ способов обрушить mysql-сервер (mysql crash security)

Ключевые слова: mysql, crash, security, (найти похожие документы)

From: Петр Зайцев <http://www.mysqlperformanceblog.com>
Date: Mon, 9 Dec 2007 14:31:37 +0000 (UTC)
Subject: 10+ способов обрушить mysql-сервер

Ориганал: http://www.mysqlperformanceblog.com/2007/11/13/10-ways-to-crash-or-overload-mysql/
Оригинал перевода : http://boombick.org/blog/posts/12


Иногда у меня спрашивают о ошибках MySQL, (например таких), которые
могут привести к обрушиванию mysql-сервера пользователем с обычными
привелегиями. Потом звучит вопрос: "Что же делать в таких случаях? Как
защититься от подобных ситуаций?"
Мой ответ "Сядьте и расслабтесь :)"

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

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

По-моему, девиз безопасности MySQL должна выглядеть так: если у вас
полностью закрыт доступ к серверу, вы действительно защищены. Для
некоторых видов атак не нужен валидный аккаунт, но такие ошибки
довольно быстро исправляются. В тот момент, когда вы даете кому-то
аккаунт вы перестаете полностью контролировать ситуацию. И значит, что
защищенность сервера становится немного ниже.

Такое положение вещей будет сохраняться все время, пока MySQL
использует Глобальное Управление Ресурсами, и вы реально не можете
контролировать количество ресурсов, доступных вашим пользователям.

Вы можете возразить, что это, в принципе, не катастрофа. Конечно, но
сервер можно еще перегрузить и сделать его недоступным. Или заставить
MySQL использовать всю доступную память, в результате чего сервер
будет просто убит операционной системой. На 32-битных системах
провести подобные трюки гораздо легче.

Дам вам несколько советов:
Временные таблицы вы можете использовать запросы с производными
таблицами и создавать в памяти неограниченное количество временных
таблиц с неограниченным размером.

Таблицы в памяти Если вы можете создать в памяти одну таблицу, значит
вы можете создать любое количество. Хотя размер таблицы ограничен
директивой max_heap_table_size, общий размер таблиц не ограничен
никак. Вы можете создавать таблицы как TEMPORARY и их не будет в
файловой системе.

MyISAM Sort Buffer - обычно его размер устанавливают довольно большим,
но он может одноврменно работать только с несколькими таблицами. А что
будет, если пользователь использует все его дозволеные 100 подключений
для инструкции ALTER для 100 разных таблиц? Можно искусственно
ограничить его занижением значения параметра myisam_sort_buffer_size,
но это отразится на производительности.

Количество подготовленных инструкций (Prepared Statements) - к счастью
теперь есть лимит на максимальное количество подготовленных инструкций
(параметр max_stmt_count), который задается сервером. Это лучше, чем
было раньше, когда можно было заставить сервер использовать всю
доступную память, просто забыв закрыть полготовленные инструкции.
Однако ограничения для пользователя отстутствуют и один пользователь
может исчерпать весь лимит, заблокировав досутп к использованию
подготовленных инструкций для остальных. Кроме того, не все инструкции
занимают одинаковое количество памяти и подготовка сложных инструкций
может отнять бoльшую часть ресурсов. Решить проблему можно, ограничив
использование подготовленных инструкций и установив параметр
max_prepared_stmt_count в очень низкое значение.

Подготовленные инструкции и BLOB-данные - если вы хотите получить
память, занятую одной подготовленной инструкцией, вы можете создать
инструкцию с тысячей меток (placeholders) и посылать данные каждой из
них, используя вызов mysql_stmt_send_long_data. Буферы сервера будут
принимать данные до тех пор, пока инструкция не будет выполнена.

Утечки кэша таблиц Innodb - InnoDB никогда не ограничивает размер
внутренних таблиц в кеше (словарь данных). Так что открывая большие
таблицы и работая с ними вы можете исчерпать всю доступную память.
ОБычно размер 4-8К на таблицу, но сложные таблицы могут занимать и
больше. В основном это проблема небольших серверов.

Кэш Слитых таблиц - кэш таблиц обычно распределен и каждая запись
обычно соответствует не более, чем паре файловых дескрипторов. Но не в
случае Слитых таблиц - создание и доступ к нескольким слитым таблицам
с, например, тысячей подтаблиц не лучшим образом скажется на вашем
сервере. Тоже самое относится и к Разделенным талицам из MySQL 5.1

Место на диске - для MyISAM-таблиц хостинг-провайдеры обычно
используют дисковые квоты. Вы можете использовать похожий подход при
помощи innodb_file_per_table. Однако вы не можете контролировать рост
системных таблиц InnoDB, которые используются для хранения данных об
отменах и которые могут увеличиваться с каждой открытой транзакцией и
делать множество обновлений. Или просто сохранять транзакцию открытой
и позволять другим пользователям делать обновления - InnoDB может
только очистить данные после старых транзакций, нуждающихся в
мгновенном коммите. Вы можете решить этот вопрос путем уничтожения
слишком старых транзакций, но более верным решением будет установление
некоего лимита на объем хранимой информации о отменах. Еще один
неплохой способ - это использовать запросы с большими временными
таблицами или сортировкой файлов. Даже если временные таблицы будут
храниться на другом разделе, при его переполнении другие пользователи
не смогут нормально работать с сервером.

Хранимые процедуры - сколько памяти можно выделить для хранимой
процедуры? Можно создать 1000 переменных в хранимой процедуре и
зарезервировать для каждой их них по 1М памяти. Я не проводил
целенаправленных экспериментов, но думаю, что жесткой политики
выделения памяти для хранимых процедур нет.

Указатели в хранимых процедурах - указатели в хранимых процедурах
реализованы в виде временных таблиц. Поэтому используя большое
количество указателей можно заполнить доступный объем оперативной
памяти.

Рекурсия в хранимых процедурах - На самом деле отличается от
"классического" представления рекурсии. Это всего лишь вызовы одной
процедуры из другой. Которые так же требуют выделения памяти и, что
важно, размещаются в стеке. Есть некоторые способы для защиты от
переполнения стека, но они не могут гарантировать 100%-ного
результата.

Переменные на стороне сервера - каждый сервер имеет ограничение в виде
директивы max_allowed_packet (1M по умолчанию). Но, по-видимому, нет
никаких ограничений на количество создаваемых перменных.

Разбор деревьев - внутренне представление запросов в MySQL выглядит
как разбор дерева, которое зависит от размера запроса, который, в свою
очередь, контролируется директивой max_allowed_packet. Но некоторые
способы оптимизирования MySQL (такие как equity propagation и range
expansion) могут привести к критическим ошибкам при анализе дерева.
Для нескольких тривиальных случаев такое поведение было исправлено,
но вызывает сомнения, что эти исправления актуальны для всех подобных
ситуаций.

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

Блокировка хоста - сервер может заблокировать хост клиента из-за
большого количества неудачных соединений. Этого можно избежать,
выставив большое значение для параметра max_connect_errors, но будьте
осторожны: это снизит устойчивость к брутфорсу.

Взаимные исключения - как InnoDB, так и MyISAM имеют "хотспоты" с
несколькими соединениями. Используя их можно существенно замедлить
работу сервера.

Перегрузка - у MySQL нет достаточного контроля за использованием
ресурсов и вы можете "положить" сервер просто выполняя тяжелые
запросы. Существующие ограничения не могут полностью контролировать
потребление ресурсов пользователем, поскольку не имеют механизма
определения "тяжести" запроса. Тяжелые запросы могут сильно нагрузить
систему ввода/вывода и заполнить кэш ОС, что заметно снизит скорость
работы сервера и запросы других пользователей будут выполняться на
порядок медленнее.

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

Как вы видите, MySQL-сервер отнюдь не выглядит "пуленепробиваемым",
если кто-то намеренно будет пытаться его обрушить. Дело в том, что
большинство существующих ограничений (таких как max_heap_table_size
или max_prepared_stmt_count) реализованы для защиты от типичных ошибок
при разработке приложений, а отнюдб не от запланированной атаки.

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

P.S.: вы можете подумать: "как же это все возможно, если существуют
тысячи хостинг-провайдеров, предоставляющих доступ к своим серверам
БД?" Да, некоторым везт и их пользователи не создают проблем для
корректной работы MySQL, но большинству приходится "вручную" постоянно
контролировать и ограничивать пользователей, мешающих нормальному
функционированию. Не говоря о компаниях, предоставляющих вирутальный
хостинг - там, как правило, используются старые версии ПО, имеющие
куда больше проблем.

P.P.S.: ничего из вышеописанного не является "новостью" для команды
разработчиков MySQL. Эта заметка - лишь попытка осветить некоторые
аспекты безопасности и обеспечения корректной работы MySQL-сервера.
947 Прочтений •  [10+ способов обрушить mysql-сервер (mysql crash security)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• 10+ способов обрушить mysql-сервер ... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка