|
Программирование >> Программный интерфейс приложений
Внутренняя безопасность связана с выполнением действий на уровне файловой системы Она обеспечивает защиту каталога данных MySQL от атак пользователей, работающих на том же компьютере, на котором запущен сервер Нет смысла долго настраивать таблицы разрещений, контролирующие доступ клиентов через сеть, если из-за неправильно установленных полномочий каталога данных любой локальный пользователь может заменить файлы этих таблиц! Внещняя безопасность предназначена для управления внещними клиентскими соединениями, а соответственно необходима для защиты доступа к серверу MySQL через сетевые соединения. Таблицы разрещений MySQL должны быть настроены таким образом, чтобы доступ к базам данных предоставлялся только после правильного ввода имени и пароля. В этой главе рассматриваются все описанные выще вопросы, а также приведены инструкции, выполнение которых позволит заблокировать не-авторизированный доступ как изнутри, так и извне системы. Внутренняя безопасность: защита доступа к каталогу данных Сервер MySQL включает гибкую систему привилегий, реализованную через таблицы разрещений базы данных mysql. Изменяя содержимое этих таблиц, можно предоставлять или запрещать доступ определенным клиентам. Именно таким образом обеспечивается защита от неавторизи-рованного сетевого доступа к данным. Однако нет смысла тратить много времени и усилий на обеспечение надежной защиты баз данных от доступа сетевых пользователей, если локальный пользователь, работающий на компьютере с сервером наряду с администратором, сможет легко просматривать и изменять содержимое каталога данных. Этот вид защиты можно проигнорировать, лищь будучи полностью уверенным, что никто другой не сможет зарегистрироваться и работать на компьютере, используемом для запуска сервера MySQL Максимальную защиту необходимо обеспечить следующим категориям. Файлы базы данных. Очевидно, что необходимо постоянно поддерживать закрытость баз данных сервера. Владельцы баз данных обычно вполне обоснованно полагают, что содержимое их баз данных закрыто для других пользователей Даже если они так не считают, все равно не стоит выставлять информацию на всеобщее обозрение или делать ее открытой из-за плохой защиты каталога данных. Учетные файлы. Файлы общего журнала и журнала обновлений также должны быть надежно защищены, поскольку они включают тексты запросов. Ведь любой пользователь, обладающий доступом к файлам журналов, сможет легко отследить все транзакции с базами данных. Важность подобной защиты еще более подчеркивается тем фактом, что в файлах журналов регистрируются даже запросы с операторами grant И set password, включающие пароли. (Вообще-то, в MySQL используется шифрование паролей, однако оно применяется только после установления соединения с предварительной проверкой пароля. Процесс же установки пароля включает выполнение таких операторов, как grant, insert и set password, в файлы журналов они заносятся в обычной текстовой форме.) Взломщику, получившему доступ к файлам журналов, достаточно запустить команду grep, чтобы раскрыть важную информацию операторов grant и password. Не следует предоставлять пользователям компьютера, на котором установлен сервер, права чтения для файлов каталога данных, поскольку они могут легко повредить файлы состояния и таблицы баз данных. Не менее опасен и доступ с правами чтения. Обладая возможностью чтения файлов таблицы, очень легко украсть эти файлы и позволить другому серверу MySQL самому показать содержимое таблицы в виде простого текста. Как? Да очень просто. L Проинсталлируйте собственную версию MySQL на компьютере с сервером, установив отдельные значения порта, разъема и катгшога данных. 2. Запустите сценарий mysql install db для инициализации каталога данных. Это позволит получить доступ к серверу в качестве MySQL-пользователя root, получив полный контроль над механизмом доступа. Параллельно будет создана база данных test. 3. Скопируйте файлы, соответствующие украденной таблице или таблицам в подкаталог test каталога данных сервера. 4. Запустите второй сервер. Вот те на! Доступ к таблицам открыт. Оператор show tables from test указывает на наличие копий украденных таблиц, а с помощью оператора select * можно увидеть их содержимое. 5. Очень злые пользователи могут изменить полномочия учетной записи анонимного пользователя сервера, в результате чего к серверу для доступа к базе данных test сможет подключиться любой. В результате этих нехитрых действий содержимое украденных таблиц становится открытым для всех. Задумайтесь об этом. Вне всяких сомнений, ни один администратор не захочет столкнуться с такой ситуацией. Для определения, расположены ли в каталоге данных какие-либо незащищенные файлы и подкаталоги, достаточно запустить в нем команду Is -1. Найдите все файлы и каталоги, для которых активизированы групповые или другие полномочия. Вот для примера краткий список незащищенных элементов каталога данных, среди которых встречаются и подкаталоги баз данных. % Is -1 total 10148 drwxrwxr-x 11 mysqladm wheel 1024 May 8 12:20 . drwxr-xr-x 22 root wheel 512 May 8 13:31 .. drwx------ 2 mysqladm mysqlgrp 512 Apr 16 15:57 menagerie drwxrwxr-x 2 mysqladm wheel 512 Jan 25 20:43 mysql drwxrwxr-x 7 mysqladm wheel 512 Aug 31 1998 sql-bench drwxrwxr-x 2 mysqladm wheel 1536 May 6 06:11 test drwx------ 2 mysqladm mysqlgrp 1024 May 8 18:43 tmp Как видите, для доступа к одним каталогам используются правильные полномочия, для других - нет. Такая ситуация стала результатом использования сервера в течение долгого периода времени. Менее ограничивающие полномочия созданы более старыми версиями серверов, которые были менее жестки в отнощении прав доступа, чем новые. (Обратите внимание, что наиболее ограничивающие доступ каталоги menagerie и tmp имеют более позднее время создания.) Последние версии MySQL обязательно проверят, чтобы эти файлы смогли прочитать только пользователи, под именем которых работает сервер. Давайте попробуем настроить эти полномочия, чтобы доступ к файлам мог получить только пользователь сервера. Для этого можно воспользоваться средствами защиты файловой системы UNIX и определить права владения и режим данных файлов и каталогов. Выполните следующие действия. 1. Перейдите в каталог данных: % cd DATADIR 2. Присвойте права владения всеми файлами каталога данных одной учетной записи, под управлением которой запускается сервер. (Эту операцию необходимо выполнить, зарегистрировавщись в качестве пользователя root.) В данной книге для такой учетной записи используются имя пользователя mysqladm и группы mysqlgrp. Изменить права владения можно с помощью одной из следующих команд: # chown -R mysqladm.mysqlgrp . # find . -follow -type d -printIxargs chown mysqladm.mysqlgrp 3. Измените режим доступа к каталогу данных и каталогам баз данных, чтобы прочитать их смог только пользователь mysqladm. В результате этого доступ к каталогу данных не смогут получить другие пользователи. Изменить режим можно с помощью одной из приведенных ниже команд, зарегистрировавшись в качестве пользователя root или mysqladm (последнее предпочтительней, по-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |